inspiredhand/references/C++.html

2130 lines
509 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0044)https://www.jaka.com/docs/guide/SDK/Cpp.html -->
<html lang="zh-CN" data-theme="light" class=" "><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="VuePress 2.0.0-rc.9">
<meta name="theme" content="VuePress Theme Hope 2.0.0-rc.32">
<style>
html {
background: var(--bg-color, #fff);
}
html[data-theme="dark"] {
background: var(--bg-color, #1d1e1f);
}
body {
background: var(--bg-color);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<script async="" src="./C++_files/js"></script><script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-BXFZDP041C');
</script><meta name="description" content="JAKA协作机器人技术文档包含了JAKA机器人软硬件使用、二次开发、工艺包文档等。">
<link rel="preload" href="./C++_files/style-PrcPQ8xc.css" as="style"><link rel="stylesheet" href="./C++_files/style-PrcPQ8xc.css">
<link rel="modulepreload" href="./C++_files/app-Bs7U449H.js.下载"><link rel="modulepreload" href="https://www.jaka.com/docs/assets/cmdhelp.html-D3GNOUXq.js"><link rel="modulepreload" href="https://www.jaka.com/docs/assets/plugin-vue_export-helper-DlAUqK2U.js">
<link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-CDtkZ8SB.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-DyWBd4Rk.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/disable.html-D7KUP00m.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/encrypt.html-KNHN00D7.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/layout.html-B_-OgqdF.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/markdown.html-DP7Nn0aK.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/page.html-B8SWNQ6r.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-DRACVjjk.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/bus.html-CZ-uRUIS.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/errinfo.html-BaD0RS31.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/funcIO.html-Cpma36Vr.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/jks.html-L5PlvjoB.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/modbus.html-BBpVrT7K.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/quick_start.html-CeDuTA__.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/tcpip.html-DeYY7cSs.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-CDat1Tnb.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-EhVTL69H.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-D7B3h6qG.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/disable.html-B4LP-PkP.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/encrypt.html-CqKfADwx.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/layout.html-Bmmq_85u.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/markdown.html-ZX69bUcQ.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/page.html-B8uynxvG.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/bus.html-BZoV6Dm6.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/cmdhelp.html-YZ7c6Cc1.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/errinfo.html-RpBFQ_jc.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/funcIO.html-Cj69KdBf.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/jks.html-DldbTJh0.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/quick_start.html-D8Ai86Kg.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/tcpip.html-DFbtbF6J.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-D3xLfbyV.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/ROS1.html-DGpNk8VF.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/ROS2.html-Bfb_7p-K.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/C.html-BBixR1BC.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/Cpp.html-hcNcxeD_.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/Csharp.html-B1hHeL8r.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/Dev_env_construt.html-BbBmCnqG.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/Filter%20setting.html-B7wE6ZOM.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/Python.html-C--Pv1sJ.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/fz.html-czns3fCO.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/introduction.html-BB5V9AMy.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/%E5%BA%9F%E5%BC%83%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E.html-Des6qmoD.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/%E8%8A%82%E5%8D%A1%20SDK%20%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B%20-%20CN.html-CNwQPgAI.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/0-AddOn%E6%96%87%E6%A1%A3%E8%A7%84%E8%8C%83%E6%8C%87%E5%8D%97.html-Djeyw6Lu.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/1.1-AboutAddOn.html-CMOMhXul.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/1.2-AboutDev.html-CBkExR7H.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/2-QuickStart.html-C5imNGlm.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/3-EnvironmentInstall.html-DBlp3CWn.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.1-JAKA_Command.html-4Zg97CDF.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.2-JAKA_Service.html-DcKUJdfc.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.3-JAKA_Web.html-Dv8fFlkf.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.4-I18n.html-IRdrCRN9.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.5-UserGuide.html-BljMnNpY.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.6-JakaDashboard.html-t-eQRT8s.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/5-Release.html-CtgkMCzq.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/6.1-DHGripper.html-CGuWozQZ.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/6.2-EwellixLiftKit.html-BBYw2T8p.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/7.1-IniConfig.html-COAL8kUP.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/7.2-AppAPI.html-0Qgc1K7H.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-D-ZEFSe7.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/SRCI.html-y6apsscN.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/errinfo.html-RWuC6kVw.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/quick_start.html-BagPCX-G.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/errinfo.html-BxRjbRF6.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/quick_start.html-CelY788T.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-BYyubhtu.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/ROS1.html-D6z9LZm0.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/ROS2.html-DSBpoKyl.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/API%20Change.html-Fa363nT5.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/JAKA%20SDK%20Quick%20Start%20-%20EN.html-pl4MUPb5.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/c.html-BTf3VwEU.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/cpp.html-CNEe7Q7e.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/csharp.html-Do8ndi0F.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/filter%20setting.html-uwJQKu3k.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/fzz.html-C9JB6KtX.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/introduction.html-DuPsQKYf.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/python.html-CLZ2bgd7.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/1.1-AboutAddOn.html-xELPwgLr.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/1.2-AboutDev.html-DnX2-kCX.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/2-QuickStart.html-BbvgY_Kf.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/3-EnvironmentInstall.html-PPa80v1g.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.1-JAKA_Command.html-BPWq0Dau.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.2-JAKA_Service.html-D6LkPF7r.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.3-JAKA_Web.html-Bt0Z6YVT.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.4-I18n.html-35QFs39s.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.5-UserGuide.html-CzeC6nHA.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/4.6-JakaDashboard.html-YX2Erv3h.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/5-Release.html-ngHouPQS.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/6.1-DHGripper.html-DifNOUB6.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/6.2-EwellixLiftKit.html-DjqVlYXO.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/7.1-IniConfig.html-Ds42TATx.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/7.2-AppAPI.html-aQFyB63B.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-DejQD9sv.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/SRCI_en.html-Buii-xmE.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/404.html-CxXjbF1c.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-VeYOuOgo.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-Cx8cjWiv.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-B03m0rvL.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-Cvl3gC1w.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-jBJOy5MR.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-C8LoQIZK.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-DZPc7HCU.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-DWO_kt3q.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-CtRckFxR.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-ByoLC15O.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-BAxabQso.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/index.html-biQsdo-O.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/vidstack-player-DEL38-Gi.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/vidstack-player-layouts-5io4Taii.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/vidstack-player-ui-Dw_t3JwY.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/photoswipe.esm-SzV8tJDW.js" as="script"><link rel="prefetch" href="https://www.jaka.com/docs/assets/SearchResult-COGoRgTI.js" as="script">
<script type="text/javascript" async="" src="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/brands.min.js" data-auto-replace-svg="nest"></script><script type="text/javascript" async="" src="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/solid.min.js" data-auto-replace-svg="nest"></script><script type="text/javascript" async="" src="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/fontawesome.min.js" data-auto-replace-svg="nest"></script><script></script><link rel="modulepreload" as="script" crossorigin="" href="https://www.jaka.com/docs/assets/qs01-Ch0H3OyT.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.jaka.com/docs/assets/qs33-CMxarg2V.js"><title>C++</title></head>
<body style="">
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="https://www.jaka.com/docs/guide/SDK/Cpp.html#main-content" class="vp-skip-link sr-only">跳至主要內容</a><!--]--><div class="theme-container has-toc"><!--[--><header id="navbar" class="vp-navbar"><div class="vp-navbar-start"><button type="button" class="vp-toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><!----><!--]--><!--[--><a class="route-link vp-brand" href="https://www.jaka.com/docs/"><img class="vp-nav-logo" src="./C++_files/logo.png" alt=""><!----><!----></a><!--]--><!--[--><!----><!--]--></div><div class="vp-navbar-center"><!--[--><!----><!--]--><!--[--><nav class="vp-nav-links"><div class="nav-item hide-in-mobile"><a class="route-link nav-link" href="https://www.jaka.com/docs/" aria-label="主页"><!---->主页<!----></a></div></nav><!--]--><!--[--><!----><!--]--></div><div class="vp-navbar-end"><!--[--><!----><!--]--><!--[--><div class="nav-item"><div class="dropdown-wrapper i18n-dropdown"><button type="button" class="dropdown-title" aria-label="选择语言"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a class="route-link nav-link active" href="https://www.jaka.com/docs/guide/SDK/Cpp.html" aria-label="简体中文"><!---->简体中文<!----></a></li><li class="dropdown-item"><a class="route-link nav-link" href="https://www.jaka.com/docs/en/" aria-label="English"><!---->English<!----></a></li><li class="dropdown-item"><a class="route-link nav-link" href="https://www.jaka.com/docs/ja/" aria-label="日本語"><!---->日本語<!----></a></li><li class="dropdown-item"><a class="route-link nav-link" href="https://www.jaka.com/docs/vi/" aria-label="Ngôn ngữ"><!---->Ngôn ngữ<!----></a></li></ul></button></div></div><!----><!----><!--[--><button type="button" class="search-pro-button" aria-label="搜索"><svg xmlns="http://www.w3.org/2000/svg" class="icon search-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="search icon"><path d="M192 480a256 256 0 1 1 512 0 256 256 0 0 1-512 0m631.776 362.496-143.2-143.168A318.464 318.464 0 0 0 768 480c0-176.736-143.264-320-320-320S128 303.264 128 480s143.264 320 320 320a318.016 318.016 0 0 0 184.16-58.592l146.336 146.368c12.512 12.48 32.768 12.48 45.28 0 12.48-12.512 12.48-32.768 0-45.28"></path></svg><div class="search-pro-placeholder">搜索</div><div class="search-pro-key-hints"><kbd class="search-pro-key">Ctrl</kbd><kbd class="search-pro-key">K</kbd></div></button><!--]--><!--]--><!--[--><!----><!--]--><button type="button" class="vp-toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span><span class="vp-top"></span><span class="vp-middle"></span><span class="vp-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside id="sidebar" class="vp-sidebar"><!--[--><!----><!--]--><ul class="vp-sidebar-links"><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/cmdhelp.html" aria-label="指令介绍"><!---->指令介绍<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/tcpip.html" aria-label="JAKA TCP/IP 控制协议"><!---->JAKA TCP/IP 控制协议<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/jks.html" aria-label="JAKA 编程脚本"><!---->JAKA 编程脚本<!----></a></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable active" type="button"><!----><span class="vp-sidebar-title">SDK</span><span class="vp-arrow down"></span></button><ul class="vp-sidebar-links"><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/introduction.html" aria-label="SDK简介"><!---->SDK简介<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/%E8%8A%82%E5%8D%A1%20SDK%20%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B%20-%20CN.html" aria-label="快速开始"><!---->快速开始<!----></a></li><li><a class="route-link nav-link active vp-sidebar-link vp-sidebar-page active" href="https://www.jaka.com/docs/guide/SDK/Cpp.html" aria-label="C++"><!---->C++<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/Csharp.html" aria-label="C#"><!---->C#<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/C.html" aria-label="C语言"><!---->C语言<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/Python.html" aria-label="Python语言"><!---->Python语言<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/fz.html" aria-label="C++封装为C&amp;C#"><!---->C++封装为C&amp;C#<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/%E5%BA%9F%E5%BC%83%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E.html" aria-label="接口变更说明"><!---->接口变更说明<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/SDK/Filter%20setting.html" aria-label="Servo模式滤波器设置说明"><!---->Servo模式滤波器设置说明<!----></a></li></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">ROS</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">AddOn开发</span><span class="vp-arrow end"></span></button><!----></section></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/jsi/SRCI.html" aria-label="SRCI"><!---->SRCI<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/bus.html" aria-label="JAKA通讯使用手册"><!---->JAKA通讯使用手册<!----></a></li><li><a class="route-link nav-link vp-sidebar-link vp-sidebar-page" href="https://www.jaka.com/docs/guide/errinfo.html" aria-label="事件码及含义"><!---->事件码及含义<!----></a></li></ul><!--[--><!----><!--]--></aside><!--[--><main id="main-content" class="vp-page"><!----><!----><nav class="vp-breadcrumb disable"></nav><div class="vp-page-title"><h1><!---->C++</h1><div class="page-info"><span class="page-author-info" aria-label="作者🖊" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon author-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="author icon"><path d="M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"></path></svg><span><a class="page-author-item" href="https://www.jaka.com/" target="_blank" rel="noopener noreferrer">JAKA</a></span><span property="author" content="JAKA"></span></span><!----><span class="page-date-info" aria-label="写作日期📅" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon calendar-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="calendar icon"><path d="M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"></path></svg><span>2024年11月1日</span><meta property="datePublished" content="2024-11-01T09:55:53.000Z"></span><!----><span class="page-reading-time-info" aria-label="阅读时间⌛" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>大约 91 分钟</span><meta property="timeRequired" content="PT91M"></span><!----><!----></div><hr></div><div class="vp-toc-placeholder"><aside id="toc"><!----><div class="vp-toc-header">此页内容<button type="button" class="print-button" title="打印"><svg xmlns="http://www.w3.org/2000/svg" class="icon print-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="print icon"><path d="M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"></path></svg></button><div class="arrow down"></div></div><div class="vp-toc-wrapper open"><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%9F%BA%E7%A1%80">机械臂基础</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%8E%A7%E5%88%B6%E7%B1%BB%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0">机械臂控制类构造函数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E7%99%BB%E5%BD%95">机械臂登录</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B3%A8%E9%94%80">机械臂注销</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8A%E7%94%B5">机械臂上电</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8B%E7%94%B5">机械臂下电</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E6%9C%BA">机械臂关机</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8A%E4%BD%BF%E8%83%BD">机械臂上使能</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8B%E4%BD%BF%E8%83%BD">机械臂下使能</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%8E%A7%E5%88%B6%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%9B%E5%85%A5%E6%88%96%E9%80%80%E5%87%BA%E6%8B%96%E6%8B%BD%E6%A8%A1%E5%BC%8F">控制机械臂进入或退出拖拽模式</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E6%98%AF%E5%90%A6%E5%A4%84%E4%BA%8E%E6%8B%96%E6%8B%BD%E6%A8%A1%E5%BC%8F">查询机械臂是否处于拖拽模式</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%85%B3%E8%8A%82%E6%91%A9%E6%93%A6%E8%A1%A5%E5%81%BF%E7%B3%BB%E6%95%B0-%E6%8B%96%E6%8B%BD%E6%89%8B%E6%84%9F%E5%8F%82%E6%95%B0">设置关节摩擦补偿系数(拖拽手感参数)</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%85%B3%E8%8A%82%E6%91%A9%E6%93%A6%E8%A1%A5%E5%81%BF%E7%B3%BB%E6%95%B0-%E6%8B%96%E6%8B%BD%E6%89%8B%E6%84%9F%E5%8F%82%E6%95%B0">获取关节摩擦补偿系数(拖拽手感参数)</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96sdk%E7%89%88%E6%9C%AC%E5%8F%B7">获取SDK版本号</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96sdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84-%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95">获取SDK日志路径静态方法</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96sdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84">获取SDK日志路径</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEsdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84-%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95">设置SDK日志路径静态方法</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEsdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84">设置SDK日志路径</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEsdk%E6%98%AF%E5%90%A6%E5%BC%80%E5%90%AF%E8%B0%83%E8%AF%95%E6%A8%A1%E5%BC%8F">设置SDK是否开启调试模式</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%8E%A7%E5%88%B6%E5%99%A8ip">获取控制器IP</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8">机械臂运动</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E5%99%A8%E4%BA%BA%E8%BF%90%E5%8A%A8%E8%A7%84%E5%88%92%E5%99%A8%E7%B1%BB%E5%9E%8B">设置机器人运动规划器类型</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%89%8B%E5%8A%A8%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%BF%90%E5%8A%A8">机械臂手动模式下运动</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%89%8B%E5%8A%A8%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%BF%90%E5%8A%A8%E5%81%9C%E6%AD%A2">机械臂手动模式下运动停止</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E8%BF%90%E5%8A%A8">机械臂关节运动</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%9C%AB%E7%AB%AF%E7%9B%B4%E7%BA%BF%E8%BF%90%E5%8A%A8">机械臂末端直线运动</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%9C%86%E5%BC%A7%E8%BF%90%E5%8A%A8">机械臂圆弧运动</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E7%BB%88%E6%AD%A2">机械臂运动终止</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E6%98%AF%E5%90%A6%E5%81%9C%E6%AD%A2">查询机械臂运动是否停止</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E7%8A%B6%E6%80%81">查询机械臂运动状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%AE%BE%E7%BD%AE%E9%98%BB%E5%A1%9E%E8%BF%90%E5%8A%A8%E8%B6%85%E6%97%B6%E6%97%B6%E9%97%B4">机械臂设置阻塞运动超时时间</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%93%8D%E4%BD%9C%E4%BF%A1%E6%81%AF%E8%AE%BE%E7%BD%AE%E4%B8%8E%E8%8E%B7%E5%8F%96">机械臂操作信息设置与获取</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%8A%B6%E6%80%81%E7%9B%91%E6%B5%8B%E6%95%B0%E6%8D%AE-%E5%94%AF%E4%B8%80%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E6%8E%A5%E5%8F%A3">获取机械臂状态监测数据(唯一多线程安全接口)</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E8%A7%92%E5%BA%A6-simple">获取当前机械臂关节角度simple</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E8%A7%92%E5%BA%A6">获取当前机械臂关节角度</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E7%8A%B6%E6%80%81%E6%95%B0%E6%8D%AE%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4%E9%97%B4%E9%9A%94">设置机械臂状态数据自动更新时间间隔</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E8%AE%BE%E7%BD%AE%E4%B8%8B%E5%B7%A5%E5%85%B7%E6%9C%AB%E7%AB%AF%E7%9A%84%E4%BD%8D%E5%A7%BF">获取当前设置下工具末端的位姿</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E5%AE%9A%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BB%E4%BF%A1%E6%81%AF">设定用户坐标系信息</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BB%E4%BF%A1%E6%81%AF">获取用户坐标系信息</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BBid">设置当前使用的用户坐标系ID</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BBid">查询当前使用的用户坐标系ID</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%B7%A5%E5%85%B7%E4%BF%A1%E6%81%AF">设置工具信息</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E4%BF%A1%E6%81%AF">获取工具信息</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E5%B7%A5%E5%85%B7id">查询当前使用的工具ID</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E5%B7%A5%E5%85%B7id">设置当前使用的工具ID</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%95%B0%E5%AD%97%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F">设置数字输出变量</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%A8%A1%E6%8B%9F%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F">设置模拟输出变量</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%BF%90%E5%8A%A8%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%95%B0%E5%AD%97%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F">运动中设置数字输出变量</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%BF%90%E5%8A%A8%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%A8%A1%E6%8B%9F%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F">运动中设置模拟输出变量</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%95%B0%E5%AD%97%E8%BE%93%E5%85%A5%E7%8A%B6%E6%80%81">查询数字输入状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%95%B0%E5%AD%97%E8%BE%93%E5%87%BA%E7%8A%B6%E6%80%81">查询数字输出状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%A8%A1%E6%8B%9F%E9%87%8F%E8%BE%93%E5%85%A5%E5%8F%98%E9%87%8F%E7%9A%84%E5%80%BC">获取模拟量输入变量的值</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%A8%A1%E6%8B%9F%E9%87%8F%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F%E7%9A%84%E5%80%BC">获取模拟量输出变量的值</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%89%A9%E5%B1%95io%E6%98%AF%E5%90%A6%E8%BF%90%E8%A1%8C">查询扩展IO是否运行</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%B4%9F%E8%BD%BD%E8%AE%BE%E7%BD%AE">机械臂负载设置</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E8%B4%9F%E8%BD%BD%E6%95%B0%E6%8D%AE">获取机械臂负载数据</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEtiov3%E7%94%B5%E5%8E%8B%E5%8F%82%E6%95%B0">设置TIOV3电压参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96tiov3%E7%94%B5%E5%8E%8B%E5%8F%82%E6%95%B0">获取TIOV3电压参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio%E6%B7%BB%E5%8A%A0%E6%88%96%E4%BF%AE%E6%94%B9%E4%BF%A1%E5%8F%B7%E9%87%8F">TIO添加或修改信号量</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio%E5%88%A0%E9%99%A4%E4%BF%A1%E5%8F%B7%E9%87%8F">TIO删除信号量</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485%E5%8F%91%E9%80%81%E6%8C%87%E4%BB%A4">TIO RS485发送指令</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-%E5%88%B7%E6%96%B0%E4%BF%A1%E5%8F%B7%E9%87%8F%E4%BF%A1%E6%81%AF">TIO 刷新信号量信息</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-%E8%8E%B7%E5%8F%96%E4%BF%A1%E5%8F%B7%E9%87%8F%E4%BF%A1%E6%81%AF">TIO 获取信号量信息</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEtio%E6%A8%A1%E5%BC%8F">设置TIO模式</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96tio%E6%A8%A1%E5%BC%8F">获取TIO模式</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE">TIO RS485通讯参数配置</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0%E6%9F%A5%E8%AF%A2">TIO RS485通讯参数查询</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485-%E9%80%9A%E8%AE%AF%E6%A8%A1%E5%BC%8F%E9%85%8D%E7%BD%AE">TIO RS485 通讯模式配置</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485-%E9%80%9A%E8%AE%AF%E6%A8%A1%E5%BC%8F%E6%9F%A5%E8%AF%A2">TIO RS485 通讯模式查询</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%AE%89%E8%A3%85%E8%A7%92%E5%BA%A6">获取机器人安装角度</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%AE%89%E8%A3%85%E8%A7%92%E5%BA%A6">设置机器人安装角度</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E7%B3%BB%E7%BB%9F%E5%8F%98%E9%87%8F">设置系统变量</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%8A%B6%E6%80%81">获取机械臂状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E7%B3%BB%E7%BB%9F%E5%8F%98%E9%87%8F">获取系统变量</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81%E8%AE%BE%E7%BD%AE%E4%B8%8E%E6%9F%A5%E8%AF%A2">机械臂安全状态设置与查询</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E6%98%AF%E5%90%A6%E8%B6%85%E5%87%BA%E9%99%90%E4%BD%8D">查询机械臂是否超出限位</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E6%98%AF%E5%90%A6%E5%A4%84%E4%BA%8E%E7%A2%B0%E6%92%9E%E4%BF%9D%E6%8A%A4%E6%A8%A1%E5%BC%8F">查询机械臂是否处于碰撞保护模式</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E7%A2%B0%E6%92%9E%E4%B9%8B%E5%90%8E%E4%BB%8E%E7%A2%B0%E6%92%9E%E4%BF%9D%E6%8A%A4%E6%A8%A1%E5%BC%8F%E6%81%A2%E5%A4%8D">碰撞之后从碰撞保护模式恢复</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E7%A2%B0%E6%92%9E%E7%AD%89%E7%BA%A7">设置机械臂碰撞等级</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E5%99%A8%E8%AE%BE%E7%BD%AE%E7%9A%84%E7%A2%B0%E6%92%9E%E7%AD%89%E7%BA%A7">获取机器设置的碰撞等级</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E7%BD%91%E7%BB%9C%E5%BC%82%E5%B8%B8%E6%97%B6%E6%9C%BA%E6%A2%B0%E8%87%82%E8%87%AA%E5%8A%A8%E7%BB%88%E6%AD%A2%E8%BF%90%E5%8A%A8%E7%B1%BB%E5%9E%8B">设置网络异常时机械臂自动终止运动类型</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9B%AE%E5%89%8D%E5%8F%91%E7%94%9F%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E9%94%99%E8%AF%AF%E7%A0%81">获取机械臂目前发生的最后一个错误码</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%94%99%E8%AF%AF%E7%8A%B6%E6%80%81%E6%B8%85%E9%99%A4">错误状态清除</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%B3%A8%E5%86%8C%E6%9C%BA%E6%A2%B0%E8%87%82%E5%87%BA%E9%94%99%E6%97%B6%E7%9A%84%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0">注册机械臂出错时的回调函数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E9%94%99%E8%AF%AF%E7%A0%81%E6%96%87%E4%BB%B6%E5%AD%98%E6%94%BE%E8%B7%AF%E5%BE%84">设置机械臂错误码文件存放路径</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E4%BD%BF%E7%94%A8app%E8%84%9A%E6%9C%AC%E7%A8%8B%E5%BA%8F">使用App脚本程序</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%BF%90%E8%A1%8C%E5%BD%93%E5%89%8D%E5%8A%A0%E8%BD%BD%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F">运行当前加载的作业程序</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9A%82%E5%81%9C%E5%BD%93%E5%89%8D%E8%BF%90%E8%A1%8C%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F">暂停当前运行的作业程序</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E7%BB%A7%E7%BB%AD%E8%BF%90%E8%A1%8C%E5%BD%93%E5%89%8D%E6%9A%82%E5%81%9C%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F">继续运行当前暂停的作业程序</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E7%BB%88%E6%AD%A2%E5%BD%93%E5%89%8D%E6%89%A7%E8%A1%8C%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F">终止当前执行的作业程序</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%8A%A0%E8%BD%BD%E6%8C%87%E5%AE%9A%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F">加载指定的作业程序</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%B2%E5%8A%A0%E8%BD%BD%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%90%8D%E5%AD%97">获取已加载的作业程序的名字</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%89%A7%E8%A1%8C%E8%A1%8C%E5%8F%B7">获取当前机械臂作业程序的执行行号</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%89%A7%E8%A1%8C%E7%8A%B6%E6%80%81">获取机械臂作业程序的执行状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9A%84%E8%BF%90%E8%A1%8C%E5%80%8D%E7%8E%87">设置机械臂的运行倍率</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9A%84%E8%BF%90%E8%A1%8C%E5%80%8D%E7%8E%87">获取机械臂的运行倍率</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0">机械臂轨迹复现</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0">设置轨迹复现配置参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0">获取轨迹复现配置参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%87%87%E9%9B%86%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%8E%A7%E5%88%B6%E5%BC%80%E5%85%B3">采集轨迹复现数据控制开关</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%87%87%E9%9B%86%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%8A%B6%E6%80%81%E6%9F%A5%E8%AF%A2">采集轨迹复现数据状态查询</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%8E%A7%E5%88%B6%E5%99%A8%E4%B8%AD%E5%B7%B2%E7%BB%8F%E5%AD%98%E5%9C%A8%E7%9A%84%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D">查询控制器中已经存在的轨迹复现数据的文件名</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%87%8D%E5%91%BD%E5%90%8D%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D">重命名轨迹复现数据的文件名</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%88%A0%E9%99%A4%E6%8E%A7%E5%88%B6%E5%99%A8%E4%B8%AD%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6">删除控制器中轨迹复现数据文件</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%8E%A7%E5%88%B6%E5%99%A8%E4%B8%AD%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E7%94%9F%E6%88%90%E6%8E%A7%E5%88%B6%E5%99%A8%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC">控制器中轨迹复现数据文件生成控制器执行脚本</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BC%BA%E6%9C%8D%E8%BF%90%E5%8A%A8%E6%A8%A1%E5%BC%8F">机械臂伺服运动模式</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BC%BA%E6%9C%8D%E4%BD%8D%E7%BD%AE%E6%8E%A7%E5%88%B6%E6%A8%A1%E5%BC%8F%E4%BD%BF%E8%83%BD">机械臂伺服位置控制模式使能</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8">机械臂关节空间伺服模式运动</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8%E6%89%A9%E5%B1%95">机械臂关节空间伺服模式运动扩展</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8%E6%89%A9%E5%B1%95">机械臂笛卡尔空间伺服模式运动扩展</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%A6%81%E7%94%A8%E6%BB%A4%E6%B3%A2%E5%99%A8">机械臂SERVO模式下禁用滤波器</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%B8%80%E9%98%B6%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2">机械臂SERVO模式下关节空间一阶低通滤波</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E9%9D%9E%E7%BA%BF%E6%80%A7%E6%BB%A4%E6%B3%A2">机械臂SERVO模式下关节空间非线性滤波</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A9%BA%E9%97%B4%E9%9D%9E%E7%BA%BF%E6%80%A7%E6%BB%A4%E6%B3%A2">机械臂SERVO模式下笛卡尔空间非线性滤波</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E5%A4%9A%E9%98%B6%E5%9D%87%E5%80%BC%E6%BB%A4%E6%B3%A2">机械臂SERVO模式下关节空间多阶均值滤波</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E9%80%9F%E5%BA%A6%E5%89%8D%E7%9E%BB%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE">机械臂SERVO模式下速度前瞻参数设置</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg-external-data-guider-%E5%8A%9F%E8%83%BD">机械臂EDGExternal Data Guider功能</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg%E4%BD%BF%E8%83%BD">机械臂EDG使能</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E9%AB%98%E9%80%9F%E8%8E%B7%E5%8F%96edg%E5%8F%8D%E9%A6%88%E6%95%B0%E6%8D%AE">机械臂高速获取EDG反馈数据</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%8E%B7%E5%8F%96edg%E5%8F%8D%E9%A6%88%E6%95%B0%E6%8D%AE%E5%8F%91%E5%87%BA%E6%97%B6%E9%97%B4%E6%88%B3">机械臂获取EDG反馈数据发出时间戳</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8">机械臂EDG关节空间伺服模式运动</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8">机械臂EDG笛卡尔空间伺服模式运动</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E5%AD%A6">机械臂运动学</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E9%80%86%E8%A7%A3">机械臂求解逆解</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E9%80%86%E8%A7%A3%E6%8B%93%E5%B1%95">机械臂求解逆解拓展</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E6%AD%A3%E8%A7%A3">机械臂求解正解</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E6%AD%A3%E8%A7%A3%E6%8B%93%E5%B1%95">机械臂求解正解拓展</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%AC%A7%E6%8B%89%E8%A7%92%E5%88%B0%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BD%AC%E6%8D%A2">欧拉角到旋转矩阵的转换</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%88%B0%E6%AC%A7%E6%8B%89%E8%A7%92%E7%9A%84%E8%BD%AC%E6%8D%A2">旋转矩阵到欧拉角的转换</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%9B%9B%E5%85%83%E6%95%B0%E5%88%B0%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BD%AC%E6%8D%A2">四元数到旋转矩阵的转换</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E8%BF%9E%E6%8E%A5%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9A%84dh%E5%8F%82%E6%95%B0">获取当前连接机械臂的DH参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%88%B0%E5%9B%9B%E5%85%83%E6%95%B0%E7%9A%84%E8%BD%AC%E6%8D%A2">旋转矩阵到四元数的转换</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%8A%9B%E6%8E%A7%E6%8E%A5%E5%8F%A3">机器人力控接口</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E5%9E%8B%E5%8F%B7">设置末端力传感器型号</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E5%9E%8B%E5%8F%B7">获取末端力传感器型号</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E6%88%96%E5%85%B3%E9%97%AD%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8">开启或关闭末端力传感器</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD">设置传感器末端负载</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD">获取传感器末端负载</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD%E8%BE%A8%E8%AF%86%E7%8A%B6%E6%80%81">获取传感器末端负载辨识状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%A7%8B%E8%BE%A8%E8%AF%86%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD">开始辨识传感器末端负载</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD%E8%BE%A8%E8%AF%86%E7%BB%93%E6%9E%9C">获取传感器末端负载辨识结果</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0">设置末端力传感器通讯参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0">获取末端力传感器通讯参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%85%B3%E9%97%AD%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6">关闭力柔顺控制</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8%E6%88%AA%E6%AD%A2%E9%A2%91%E7%8E%87">设置末端力传感器低通滤波器截止频率</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8%E6%88%AA%E6%AD%A2%E9%A2%91%E7%8E%87">获取末端力传感器低通滤波器截止频率</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D">设置末端力传感器软限位</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D">获取末端力传感器软限位</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E6%88%96%E5%85%B3%E9%97%AD%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD">开启或关闭工具拖拽</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E7%B1%BB%E5%9E%8B%E5%92%8C%E6%A0%A1%E9%9B%B6-%E5%88%9D%E5%A7%8B%E5%8C%96-%E9%80%89%E9%A1%B9">设置力控类型和校零(初始化)选项</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%8E%A7%E7%B1%BB%E5%9E%8B%E5%92%8C%E8%AF%BB%E6%95%B0%E6%98%BE%E7%A4%BA-%E5%88%9D%E5%A7%8B%E5%8C%96-%E7%8A%B6%E6%80%81">获取力控类型和读数显示(初始化)状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0">设置力柔顺控制参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0">获取力柔顺控制参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E9%80%9F%E5%BA%A6%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0">设置速度柔顺控制参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E9%80%9F%E5%BA%A6%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8A%9B%E6%9D%A1%E4%BB%B6">设置速度柔顺控制力条件</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E4%BC%A0%E6%84%9F%E5%99%A8%E6%A0%A1%E9%9B%B6">传感器校零</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E4%BC%A0%E6%84%9F%E5%99%A8%E7%A1%AC%E4%BB%B6%E7%BA%A7%E6%A0%87%E5%AE%9A">传感器硬件级标定</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BF%90%E8%A1%8C%E7%8A%B6%E6%80%81">获取传感器运行状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E7%8A%B6%E6%80%81%E5%92%8C%E6%95%B0%E6%8D%AE">获取传感器状态和数据</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0">设置恒力柔顺控制参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0">获取恒力柔顺控制参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%9D%90%E6%A0%87%E7%B3%BB">设置恒力柔顺控制坐标系</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%9D%90%E6%A0%87%E7%B3%BB">获取恒力柔顺控制坐标系</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E6%8B%96%E6%8B%BD%E6%89%8B%E6%84%9F%E5%8F%82%E6%95%B0">设置力控拖拽手感参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%8F%82%E6%95%B0">获取工具拖拽参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD">开启工具拖拽</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E6%88%96%E5%85%B3%E9%97%AD%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6">开启或关闭恒力柔顺控制</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E7%BB%88%E6%AD%A2%E6%9D%A1%E4%BB%B6">设置力控终止条件</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E5%BC%80%E5%90%AF%E7%8A%B6%E6%80%81">获取恒力柔顺开启状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F">设置进近限速</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F">获取进近限速</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE">设置恒力控制容差</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE">获取恒力控制容差</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%BC%80%E5%90%AF%E7%8A%B6%E6%80%81">获取工具拖拽开启状态</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%9D%90%E6%A0%87%E7%B3%BB">获取工具拖拽坐标系</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%9D%90%E6%A0%87%E7%B3%BB">设置工具拖拽坐标系</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%9E%8D%E5%90%88%E6%8B%96%E6%8B%BD%E7%81%B5%E6%95%8F%E5%BA%A6">获取融合拖拽灵敏度</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%9E%8D%E5%90%88%E6%8B%96%E6%8B%BD%E7%81%B5%E6%95%8F%E5%BA%A6">设置融合拖拽灵敏度</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BF%90%E5%8A%A8%E9%99%90%E5%88%B6-%E5%A5%87%E5%BC%82%E7%82%B9%E5%92%8C%E5%85%B3%E8%8A%82%E9%99%90%E4%BD%8D-%E9%A2%84%E8%AD%A6%E8%8C%83%E5%9B%B4">获取运动限制(奇异点和关节限位)预警范围</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BF%90%E5%8A%A8%E9%99%90%E5%88%B6-%E5%A5%87%E5%BC%82%E7%82%B9%E5%92%8C%E5%85%B3%E8%8A%82%E9%99%90%E4%BD%8D-%E9%A2%84%E8%AD%A6%E8%8C%83%E5%9B%B4">设置运动限制(奇异点和关节限位)预警范围</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%8E%A7%E9%99%90%E9%80%9F">获取力控限速</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E9%99%90%E9%80%9F">设置力控限速</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E7%9F%A9%E5%8F%82%E8%80%83%E4%B8%AD%E5%BF%83">获取力矩参考中心</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E7%9F%A9%E5%8F%82%E8%80%83%E4%B8%AD%E5%BF%83">设置力矩参考中心</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E7%81%B5%E6%95%8F%E5%BA%A6">设置传感器灵敏度</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E7%81%B5%E6%95%8F%E5%BA%A6">获取传感器灵敏度</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF">获取传感器基本信息</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D%E8%A7%84%E5%88%99">获取传感器软限位规则</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D%E8%A7%84%E5%88%99">设置传感器软限位规则</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BF%87%E6%BB%A4%E5%8F%82%E6%95%B0">设置传感器过滤参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BF%87%E6%BB%A4%E5%8F%82%E6%95%B0">获取传感器过滤参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%A8%A1%E5%BC%8F">获取传感器模式</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%A0%A1%E9%9B%B6%E4%BC%A0%E6%84%9F%E5%99%A8">校零传感器</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E9%98%88%E5%80%BC">设置传感器阈值</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E9%98%88%E5%80%BC">获取传感器阈值</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E5%8F%82%E8%80%83%E7%82%B9">设置传感器参考点</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E5%8F%82%E8%80%83%E7%82%B9">获取传感器参考点</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%95%B0%E6%8D%AE">获取传感器数据</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%B4%9F%E8%BD%BD">获取传感器负载</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E8%B4%9F%E8%BD%BD">设置传感器负载</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E8%BF%9E%E6%8E%A5%E8%87%B3%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E4%BC%A0%E6%84%9F%E5%99%A8id">获取当前连接至机器人的传感器ID</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%B7%BB%E5%8A%A0%E4%BC%A0%E6%84%9F%E5%99%A8">添加传感器</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%88%A0%E9%99%A4%E4%BC%A0%E6%84%9F%E5%99%A8">删除传感器</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%9A%84%E9%80%9F%E5%BA%A6%E9%99%90%E5%88%B6">设置力控模式下的速度限制</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%8E%A7%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%9A%84%E9%80%9F%E5%BA%A6%E9%99%90%E5%88%B6">获取力控模式下的速度限制</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F-1">设置进近限速</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F-1">获取进近限速</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E6%A8%A1%E5%BC%8F%E5%8F%82%E6%95%B0">设置恒力柔顺控制模式参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E6%A8%A1%E5%BC%8F%E5%8F%82%E6%95%B0">获取恒力柔顺控制模式参数</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE">设置恒力柔顺控制容差</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE">获取恒力柔顺控制容差</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp-%E6%9C%8D%E5%8A%A1">FTP 服务</a></li><li><ul class="vp-toc-list"><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%88%9D%E5%A7%8B%E5%8C%96ftp%E5%AE%A2%E6%88%B7%E7%AB%AF">初始化FTP客户端</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E4%B8%8A%E4%BC%A0">FTP上传</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E4%B8%8B%E8%BD%BD">FTP下载</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E7%9B%AE%E5%BD%95%E6%9F%A5%E8%AF%A2">FTP目录查询</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E5%88%A0%E9%99%A4">FTP删除</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E9%87%8D%E5%91%BD%E5%90%8D">FTP重命名</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level3" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%85%B3%E9%97%ADftp%E5%AE%A2%E6%88%B7%E7%AB%AF">关闭FTP客户端</a></li><!----></ul></li><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8%E8%BF%94%E5%9B%9E%E5%80%BC%E5%88%97%E8%A1%A8%E5%8F%8A%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5">接口调用返回值列表及问题排查</a></li><!----><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%97%AE%E9%A2%98%E5%8F%8D%E9%A6%88">问题反馈</a></li><!----></ul><div class="vp-toc-marker" style="top: -1.7rem;"></div></div><!----></aside></div><!----><div class="theme-hope-content"><h1 id="c" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#c"><span>C++</span></a></h1><blockquote><p>本文档将介绍JAKA SDKC++中定义的数据类型和API主要适用于使用C/C++创建与虚拟或真实控制器通信的机器人应用程序的软件开发人员。对于需要了解JAKA机器人控制器应用程序的用户也会有一定帮助。</p></blockquote><h1 id="接口列表" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%8E%A5%E5%8F%A3%E5%88%97%E8%A1%A8"><span>接口列表</span></a></h1><h2 id="机械臂基础" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%9F%BA%E7%A1%80"><span>机械臂基础</span></a></h2><p>以下示例默认包含了必要的头文件,包含"JAKAZuRobot.h", C++原生的头文件。</p><h3 id="机械臂控制类构造函数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%8E%A7%E5%88%B6%E7%B1%BB%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0"><span>机械臂控制类构造函数</span></a></h3><p>机械臂控制类构造函数,所有的接口都在该类中。</p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>JAKAZuRobot();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂登录" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E7%99%BB%E5%BD%95"><span>机械臂登录</span></a></h3><p>连接机械臂控制器,该接口启动成功,是其他接口调用的基础。</p><ul><li>参数说明 <ul><li>ip&nbsp;&nbsp;控制器ip地址</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;login_in(const&nbsp;char&nbsp;*ip);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂注销" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B3%A8%E9%94%80"><span>机械臂注销</span></a></h3><p>断开控制器连接该接口调用成功后除了login_in之外的函数均无法调用。</p><ul><li>返回值 ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;login_out();&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂上电" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8A%E7%94%B5"><span>机械臂上电</span></a></h3><p>打开机械臂电源</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;power_on();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂下电" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8B%E7%94%B5"><span>机械臂下电</span></a></h3><p>关闭机械臂电源</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;power_off();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂关机" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E6%9C%BA"><span>机械臂关机</span></a></h3><p>机械臂控制柜关机</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;shut_down();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂上使能" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8A%E4%BD%BF%E8%83%BD"><span>机械臂上使能</span></a></h3><p>控制机械臂上使能</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;enable_robot();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂下使能" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%B8%8B%E4%BD%BF%E8%83%BD"><span>机械臂下使能</span></a></h3><p>控制机械臂下使能</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;disable_robot();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="控制机械臂进入或退出拖拽模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%8E%A7%E5%88%B6%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%9B%E5%85%A5%E6%88%96%E9%80%80%E5%87%BA%E6%8B%96%E6%8B%BD%E6%A8%A1%E5%BC%8F"><span>控制机械臂进入或退出拖拽模式</span></a></h3><p>控制机械臂进入或退出拖拽模式</p><ul><li>参数说明 <ul><li>enable&nbsp;&nbsp;TRUE为进入拖拽模式FALSE为退出拖拽模式</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;drag_mode_enable(BOOL&nbsp;enable);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="查询机械臂是否处于拖拽模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E6%98%AF%E5%90%A6%E5%A4%84%E4%BA%8E%E6%8B%96%E6%8B%BD%E6%A8%A1%E5%BC%8F"><span>查询机械臂是否处于拖拽模式</span></a></h3><p>查询机械臂是否处于拖拽模式</p><ul><li>参数说明 <ul><li>in_drag&nbsp;查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;is_in_drag_mode(BOOL *in_drag);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
int&nbsp;example_drag()&nbsp;&nbsp;
{
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
BOOL&nbsp;in_drag;&nbsp;&nbsp;
demo.is_in_drag_mode(&amp;in_drag);&nbsp;
demo.drag_mode_enable(TRUE);&nbsp;&nbsp;
return&nbsp;0;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置关节摩擦补偿系数-拖拽手感参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%85%B3%E8%8A%82%E6%91%A9%E6%93%A6%E8%A1%A5%E5%81%BF%E7%B3%BB%E6%95%B0-%E6%8B%96%E6%8B%BD%E6%89%8B%E6%84%9F%E5%8F%82%E6%95%B0"><span>设置关节摩擦补偿系数(拖拽手感参数)</span></a></h3><p>只适配控制器版本1.7.2 设置机械臂各轴摩擦力补偿系数</p><ul><li>参数说明 <ul><li>joint 关节编号 0~5</li><li>gain&nbsp; 摩擦力补偿系数系数值范围0-150,150就是补偿150%的摩擦力</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_drag_friction_compensation_gain(int joint, int gain);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
int&nbsp;example_drag()&nbsp;&nbsp;
{
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
BOOL&nbsp;in_drag;&nbsp;&nbsp;
demo.set_drag_friction_compensation_gain(0 , 100);
demo.set_drag_friction_compensation_gain(1 , 100);
demo.set_drag_friction_compensation_gain(2 , 100);
demo.set_drag_friction_compensation_gain(3 , 100);
demo.set_drag_friction_compensation_gain(4 , 100);
demo.set_drag_friction_compensation_gain(5 , 100);
return&nbsp;0;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取关节摩擦补偿系数-拖拽手感参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%85%B3%E8%8A%82%E6%91%A9%E6%93%A6%E8%A1%A5%E5%81%BF%E7%B3%BB%E6%95%B0-%E6%8B%96%E6%8B%BD%E6%89%8B%E6%84%9F%E5%8F%82%E6%95%B0"><span>获取关节摩擦补偿系数(拖拽手感参数)</span></a></h3><p>只适配控制器版本1.7.2 获取机械臂各轴摩擦力补偿系数</p><ul><li>参数说明 <ul><li>list 各关节摩擦力补偿系数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败&nbsp; 各个机型每个关节默认值Zu7=Zu5Zu与Pro、S相同</li></ul><table><thead><tr><th>机型</th><th>关节1</th><th>关节2</th><th>关节3</th><th>关节4</th><th>关节5</th><th>关节6</th><th>备注</th></tr></thead><tbody><tr><td>Zu7</td><td>90</td><td>90</td><td>90</td><td>70</td><td>70</td><td>70</td><td></td></tr><tr><td>A7</td><td>90</td><td>90</td><td>90</td><td>70</td><td>70</td><td>70</td><td></td></tr><tr><td>Zu12</td><td>60</td><td>60</td><td>60</td><td>45</td><td>45</td><td>45</td><td></td></tr><tr><td>A12</td><td>60</td><td>60</td><td>60</td><td>45</td><td>45</td><td>45</td><td></td></tr><tr><td>Zu18</td><td>60</td><td>60</td><td>64</td><td>45</td><td>45</td><td>45</td><td></td></tr><tr><td>Zu3</td><td>45</td><td>45</td><td>45</td><td>60</td><td>60</td><td>60</td><td></td></tr><tr><td>Pro16</td><td>100</td><td>100</td><td>80</td><td>90</td><td>90</td><td>90</td><td></td></tr><tr><td>Zu20</td><td>100</td><td>100</td><td>80</td><td>60</td><td>60</td><td>60</td><td></td></tr><tr><td>MiniCobo</td><td>5</td><td>5</td><td>5</td><td>10</td><td>10</td><td>10</td><td></td></tr><tr><td>Mini2</td><td>50</td><td>50</td><td>50</td><td>60</td><td>60</td><td>60</td><td></td></tr></tbody></table><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_drag_friction_compensation_gain(DragFrictionCompensationGainList* list);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
int&nbsp;example_drag()&nbsp;&nbsp;
{
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;&nbsp;&nbsp;
DragFrictionCompensationGainList list;
demo.get_drag_friction_compensation_gain(&amp;list);
for(int i=0; i&lt;6; i++){
std::cout &lt;&lt; list.gain[i] &lt;&lt; std::endl;
}
return&nbsp;0;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取sdk版本号" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96sdk%E7%89%88%E6%9C%AC%E5%8F%B7"><span>获取SDK版本号</span></a></h3><p>获取机械臂控制器版本号</p><ul><li>参数说明 <ul><li>version&nbsp;SDK版本号</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_sdk_version(char *version);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//获取sdk版本号&nbsp;&nbsp;
int&nbsp;example_getsdk_version()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;ver[100];&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前SDK版本&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_sdk_version(ver);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;SDK&nbsp;version&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;ver &lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取sdk日志路径-静态方法" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96sdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84-%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95"><span>获取SDK日志路径静态方法</span></a></h3><p>获取SDK日志路径 用于SDK对象创建前</p><ul><li>参数说明 <ul><li>filepath&nbsp;SDK日志路径</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;static_get_SDK_filepath(char *filepath);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取sdk日志路径" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96sdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84"><span>获取SDK日志路径</span></a></h3><p>获取SDK日志路径</p><ul><li>参数说明 <ul><li>filepath&nbsp;SDK日志路径</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_SDK_filepath(char *filepath);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置sdk日志路径-静态方法" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEsdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84-%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95"><span>设置SDK日志路径静态方法</span></a></h3><p>设置SDK日志路径 用于SDK对象创建前</p><ul><li>参数说明 <ul><li>filepath&nbsp;SDK日志路径</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;static_set_SDK_filepath(char&nbsp;*filepath);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置sdk日志路径" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEsdk%E6%97%A5%E5%BF%97%E8%B7%AF%E5%BE%84"><span>设置SDK日志路径</span></a></h3><p>设置SDK日志路径</p><ul><li>参数说明 <ul><li>filepath&nbsp;SDK日志路径</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_SDK_filepath(char *filepath);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置SDK日志路径&nbsp;&nbsp;
int&nbsp;example_set_SDK_filepath()&nbsp;&nbsp;
{&nbsp;&nbsp;
//设置SDK日志路径&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;char&nbsp;path[20]&nbsp;=&nbsp;"D://test.log";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
ret&nbsp;=&nbsp;demo.set_SDK_filepath(path);//设置SDK文件路径&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置sdk是否开启调试模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEsdk%E6%98%AF%E5%90%A6%E5%BC%80%E5%90%AF%E8%B0%83%E8%AF%95%E6%A8%A1%E5%BC%8F"><span>设置SDK是否开启调试模式</span></a></h3><div class="hint-container warning"><p class="hint-container-title">1.7.2废弃接口</p></div><p>设置是否开启调试模式选择TRUE时开始调试模式此时会在标准输出流中输出调试信息选择FALSE时不输出调试信息</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_debug_mode(BOOL&nbsp;mode);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置SDK是否开启调试模式&nbsp;&nbsp;
int&nbsp;example_set_debug_mode()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;BOOL&nbsp;mode;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置调试模式,将在终端上打印调试信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_debug_mode(TRUE);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取控制器ip" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%8E%A7%E5%88%B6%E5%99%A8ip"><span>获取控制器IP</span></a></h3><p>获取控制器IP</p><ul><li>参数说明 <ul><li>controller_name&nbsp;控制器名字</li><li>ip_list&nbsp;控制器ip列表控制器名字为具体值时返回该名字所对应的控制器IP地址控制器名字为空时返回网段类内的所有控制器IP地址</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li><li>当app启动时该函数失效</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_controller_ip(char *controller_name,char *ip_list);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;
//获取控制器ip&nbsp;&nbsp;
int&nbsp;example_get_controller_ip()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;ip_list[2000]&nbsp;=&nbsp;{&nbsp;0&nbsp;};&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;controller_name1[50]&nbsp;=&nbsp;"";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取控制器ip&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.get_controller_ip(&nbsp;controller_name1,&nbsp;ip_list);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;ip_list&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;ip_list&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="机械臂运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8"><span>机械臂运动</span></a></h2><h3 id="设置机器人运动规划器类型" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E5%99%A8%E4%BA%BA%E8%BF%90%E5%8A%A8%E8%A7%84%E5%88%92%E5%99%A8%E7%B1%BB%E5%9E%8B"><span>设置机器人运动规划器类型</span></a></h3><p>设置机器人运动使用的规划器类型</p><ul><li>参数说明 <ul><li>type 运动规划器类型 <ul><li>-1 禁用规划器默认采用T规划</li><li>0 T规划即速度优先</li><li>1 S规划即柔顺优先</li></ul></li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code>errno_t set_motion_planner(MotionPlannerType type);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂手动模式下运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%89%8B%E5%8A%A8%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%BF%90%E5%8A%A8"><span>机械臂手动模式下运动</span></a></h3><p>控制机械臂手动模式下jog运动</p><ul><li>参数说明 <ul><li>aj_num&nbsp;关节空间下代表关节号[0-5]笛卡尔下依次为轴xyzrxryrz</li><li>move_mode&nbsp;机械臂运动模式,增量运动、者绝对运动(即持续jog运动)和连续运动参考2.13选择合适类型&nbsp;可选类型有INCR ABS</li><li>coord_type&nbsp;机械臂运动坐标系,工具坐标系,基坐标系(当前的世界/用户坐标系或关节空间参考2.12选择合适类型</li><li>vel_cmd&nbsp;指令速度旋转轴或关节运动单位为rad/s移动轴单位为mm/s</li><li>pos_cmd&nbsp;指令位置旋转轴或关节运动单位为rad移动轴单位为mm 当move_mode是连续时参数可忽略</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;jog(int&nbsp;aj_num,&nbsp;MoveMode&nbsp;move_mode,&nbsp;CoordType&nbsp;coord_type,&nbsp;double&nbsp;vel_cmd,&nbsp;double&nbsp;pos_cmd);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//机械臂手动运动&nbsp;&nbsp;
int&nbsp;main()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//手动运动其中INCR代表增量运动0.5代表速度为0.5rad/s&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.jog(1,&nbsp;INCR,&nbsp;COORD_JOINT&nbsp;,&nbsp;0.5,&nbsp;30);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Sleep(5000);&nbsp;&nbsp;
//手动运动停止&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.jog_stop(0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂去使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.disable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂下电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_off();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂手动模式下运动停止" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%89%8B%E5%8A%A8%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%BF%90%E5%8A%A8%E5%81%9C%E6%AD%A2"><span>机械臂手动模式下运动停止</span></a></h3><p>控制机械臂手动模式下运动停止</p><ul><li>参数说明 <ul><li>num&nbsp;&nbsp;机械臂轴号0-5num为-1时停止所有轴</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;jog_stop();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂关节运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E8%BF%90%E5%8A%A8"><span>机械臂关节运动</span></a></h3><p>机械臂关节运动</p><ul><li>参数说明 <ul><li>joint_pos&nbsp;机械臂关节运动目标位置</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动</li><li>is_block&nbsp;设置接口是否为阻塞接口TRUE为阻塞接口&nbsp;FALSE为非阻塞接口阻塞时默认30s超时</li><li>speed&nbsp;机械臂关节运动速度单位rad/s</li><li>acc&nbsp;机械臂关节运动角加速度</li><li>tol&nbsp;机械臂关节运动终点误差,该参数使得两段运动之间更平滑,使用该参数时需要连续多段运动,且为非阻塞状态。</li><li>option_cond&nbsp;机械臂关节可选参数,如果不需要,该值可不赋值,填入空指针就可</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;joint_move(const&nbsp;JointValue&nbsp;*joint_pos,&nbsp;MoveMode&nbsp;move_mode,&nbsp;BOOL&nbsp;is_block,&nbsp;double&nbsp;speed,&nbsp;double&nbsp;acc,&nbsp;double&nbsp;tol,&nbsp;const&nbsp;OptionalCond&nbsp;*option_cond);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂末端直线运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%9C%AB%E7%AB%AF%E7%9B%B4%E7%BA%BF%E8%BF%90%E5%8A%A8"><span>机械臂末端直线运动</span></a></h3><p>机械臂末端直线运动</p><ul><li>参数说明 <ul><li>end_pos&nbsp;机械臂末端运动目标位置</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动</li><li>is_block&nbsp;设置接口是否为阻塞接口TRUE&nbsp;为阻塞接口&nbsp;FALSE&nbsp;为非阻塞接口阻塞时默认30s超时</li><li>speed&nbsp;机械臂直线运动速度单位mm/s</li><li>acc&nbsp;机械臂直线运动线加速度</li><li>tol&nbsp;机械臂直线运动终点误差.该参数使得两段运动之间更平滑,使用该参数时需要连续多段运动,且为非阻塞状态。</li><li>option_cond&nbsp;机械臂直线运动可选参数,如果不需要,该值可不赋值,填入空指针就可</li><li>ori_vel 姿态速度单位rad/s</li><li>ori_acc 姿态加速度单位rad/s^2</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li><li>奇异点常出现的三种情况: <ul><li>工具末端位置在轴线Z1和Z2构成的平面上</li><li>轴线Z2,Z3,Z4共面</li><li>关节5角度为0或180°即Z4,Z6平行</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;linear_move(const&nbsp;CartesianPose *end_pos,&nbsp;MoveMode&nbsp;move_mode,&nbsp;BOOL&nbsp;is_block,&nbsp;double&nbsp;speed,&nbsp;double&nbsp;accel = 50,&nbsp;double&nbsp;tol = 0, const&nbsp;&nbsp;OptionalCond *option_cond = nullptr, double ori_vel = 3.14, double ori_acc = 12.56);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code>int&nbsp;example_linear_move()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;RobotStatus&nbsp;status;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.229替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.160");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//定义并初始化CartesianPose变量旋转角为弧度。&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;cart;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;cart.tran.x&nbsp;=&nbsp;300;&nbsp;cart.tran.y&nbsp;=&nbsp;300;&nbsp;cart.tran.z&nbsp;=&nbsp;100;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;cart.rpy.rx&nbsp;=&nbsp;3.14;&nbsp;cart.rpy.ry&nbsp;=&nbsp;0&nbsp;;&nbsp;cart.rpy.rz&nbsp;=&nbsp;0;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//笛卡尔空间运动其中ABS代表绝对运动FALSE代表指令是非阻塞的10代表速度为10mm/s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("rx=%f&nbsp;,&nbsp;ry=%f,&nbsp;rz=%f",&nbsp;cart.rpy.rx,&nbsp;cart.rpy.ry,&nbsp;cart.rpy.rz);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.linear_move(&amp;cart,&nbsp;ABS,&nbsp;FALSE,&nbsp;200,&nbsp;10&nbsp;,1,NULL);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; for&nbsp;(int&nbsp;i&nbsp;=&nbsp;10;&nbsp;i&nbsp;&gt;&nbsp;0;i--)&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cart.tran.x&nbsp;=&nbsp;150;&nbsp;cart.tran.y&nbsp;=&nbsp;300;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//笛卡尔空间扩展运动其中ABS代表绝对运动FALSE代表指令是非阻塞的20代表最大速度为20mm/s&nbsp;,10代表加速度为10mm/s2,5代表圆弧过度半径为5mm&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.linear_move(&amp;cart,&nbsp;ABS,&nbsp;FALSE,&nbsp;20,&nbsp;10,&nbsp;5,&nbsp;NULL);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cart.tran.x&nbsp;=&nbsp;150;&nbsp;cart.tran.y&nbsp;=&nbsp;250;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.linear_move(&amp;cart,&nbsp;ABS,&nbsp;FALSE,&nbsp;20,&nbsp;10,&nbsp;5,&nbsp;NULL);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cart.tran.x&nbsp;=&nbsp;225;&nbsp;cart.tran.y&nbsp;=&nbsp;250;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.linear_move(&amp;cart,&nbsp;ABS,&nbsp;FALSE,&nbsp;20,&nbsp;10,&nbsp;5,&nbsp;NULL);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cart.tran.x&nbsp;=&nbsp;300;&nbsp;cart.tran.y&nbsp;=&nbsp;250;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; demo.linear_move(&amp;cart,&nbsp;ABS,&nbsp;FALSE,&nbsp;20,&nbsp;10,&nbsp;5,&nbsp;NULL);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cart.tran.x&nbsp;=&nbsp;300;&nbsp;cart.tran.y&nbsp;=&nbsp;300;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; demo.linear_move(&amp;cart,&nbsp;ABS,&nbsp;FALSE,&nbsp;20,&nbsp;10,&nbsp;5,&nbsp;NULL);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(3000);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_out();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂圆弧运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%9C%86%E5%BC%A7%E8%BF%90%E5%8A%A8"><span>机械臂圆弧运动</span></a></h3><p>机械臂末端圆弧运动,该接口使用当前点和输入的两个点规划圆形轨迹。</p><ul><li>参数说明 <ul><li>end_pos&nbsp;机械臂末端运动目标位置</li><li>mid_pos&nbsp;机械臂末端运中间点</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动</li><li>is_block&nbsp;设置接口是否为阻塞接口TRUE&nbsp;为阻塞接口&nbsp;FALSE&nbsp;为非阻塞接口</li><li>speed&nbsp;机械臂直线运动速度单位mm/s</li><li>acc&nbsp;机械臂笛卡尔空间加速度, 单位mm/s^2</li><li>tol&nbsp;机械臂笛卡尔空间运动终点误差</li><li>option_cond&nbsp;机械臂关节可选参数,如果不需要,该值可不赋值,填入空指针就可</li><li>circle_cnt 指定机器人圆弧运动圈数。为0时等价于circular_move</li><li>circle_mode 指定机器人圆弧运动模式,参数解释如下: <ul><li>0固定采用起始姿态到终止姿态旋转角度小于180°的轴角进行姿态变化(当前方案)</li><li>1固定采用起始姿态到终止姿态旋转角度大于180°的轴角进行姿态变化</li><li>2根据中间点姿态自动选择选择角度小于180°还是大于180°</li><li>3姿态夹角与圆弧轴线始终保持一致当前整圆运动</li></ul></li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t circular_move(const CartesianPose *end_pos, const CartesianPose *mid_pos, MoveMode move_mode, BOOL is_block, double speed, double accel, double tol, const OptionalCond *option_cond = nullptr, int circle_cnt = 0, int circle_mode = 0);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
define PI = 3.14
//机械臂圆弧运动&nbsp;关节速度上限3.14rad/s&nbsp;&nbsp;
int&nbsp;example_circle_move()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;OptionalCond&nbsp;opt;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;end_p,mid_p;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;end_p.tran.x&nbsp;=&nbsp;-200;&nbsp;end_p.tran.y&nbsp;=&nbsp;400;&nbsp;end_p.tran.z&nbsp;=&nbsp;400;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;end_p.rpy.rx&nbsp;=&nbsp;-PI/2 ;&nbsp;end_p.rpy.ry&nbsp;=&nbsp;0&nbsp;;&nbsp;end_p.rpy.rz&nbsp;=0&nbsp;;&nbsp;&nbsp;
&nbsp; &nbsp;&nbsp;mid_p.tran.x&nbsp;=&nbsp;-300;&nbsp;mid_p.tran.y&nbsp;=&nbsp;400;&nbsp;mid_p.tran.z&nbsp;=&nbsp;500;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;mid_p.rpy.rx&nbsp;=&nbsp;-PI/2&nbsp;;&nbsp;mid_p.rpy.ry&nbsp;=&nbsp;0&nbsp;;&nbsp;mid_p.rpy.rz&nbsp;=0&nbsp;;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//定义并初始化关JointValue变量&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;joint_pos&nbsp;=&nbsp;{&nbsp;85.76&nbsp;,&nbsp;-6.207&nbsp;,&nbsp;111.269&nbsp;,&nbsp;74.938&nbsp;,&nbsp;94.24&nbsp;,&nbsp;0&nbsp;&nbsp;};&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//关节空间运动其中ABS代表绝对运动TRUE代表指令是阻塞的1代表速度为1rad/s&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.joint_move(&amp;joint_pos,&nbsp;ABS,&nbsp;TRUE,&nbsp;1);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//圆弧运动其中ABS代表绝对运动TRUE代表指令是阻塞的20代表直线速度为20mm/s1代表加速度0.1代表机械臂终点误差opt为可选参数, 3代表圈数为3。&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.circular_move(&amp;end_p,&nbsp;&amp;mid_p,&nbsp;ABS,&nbsp;TRUE,&nbsp;20,&nbsp;1,&nbsp;0.1,&amp;opt);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>代码示例2</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;"jktypes.h"&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
#define PI (3.1415926)
#define PI_2 (1.5707963)
int&nbsp;example_circular_move()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;robot;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.login_in("192.168.20.138");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;start_pos&nbsp;{-251.054,&nbsp;-48.360,&nbsp;374.000,&nbsp;3.14,&nbsp;0, 1.57};&nbsp;&nbsp;// 开始点
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;mid_pos&nbsp;=&nbsp;{-555.050,&nbsp;116.250,&nbsp;374.000,&nbsp;3.14,&nbsp;0,&nbsp;1.57};&nbsp;&nbsp;// 中间点
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;end_pos&nbsp;=&nbsp;{-295.050,&nbsp;267.450,&nbsp;374.000,&nbsp;3.14,&nbsp;0,&nbsp;1.57};&nbsp;&nbsp;// 结束点
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.jog_stop(-1); // 停止当前关节运动&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;ref_jv&nbsp;{0,&nbsp;90,&nbsp;90,&nbsp;90,&nbsp;-90,&nbsp;0};&nbsp;&nbsp;// 先移动到到开始点附近
&nbsp;&nbsp;&nbsp;&nbsp;robot.joint_move(&amp;ref_jv,&nbsp;MoveMode::ABS,&nbsp;true,&nbsp;20);&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;start_jv;
&nbsp;&nbsp;&nbsp;&nbsp;robot.get_joint_position(&amp;ref_jv);&nbsp;&nbsp;// 获取当前关节角
&nbsp;&nbsp;&nbsp;&nbsp;robot.kine_inverse(&amp;ref_jv,&nbsp;&amp;start_pos,&nbsp;&amp;start_jv);&nbsp;// 以当前关节角为参考,计算开始关节角&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.joint_move(&amp;start_jv,&nbsp;MoveMode::ABS,&nbsp;true,&nbsp;80);&nbsp;&nbsp;// 移动到开始关节角位置
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;指定旋转3圈
&nbsp;&nbsp;&nbsp;&nbsp;robot.circular_move(&amp;end_pos,&nbsp;&amp;mid_pos,&nbsp;MoveMode::ABS,&nbsp;true,&nbsp;120,&nbsp;100,&nbsp;0.1,&nbsp;&amp;opt, 3);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.disable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.power_off();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.login_out();&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂运动终止" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E7%BB%88%E6%AD%A2"><span>机械臂运动终止</span></a></h3><p>终止当前机械臂运动,机械臂脚本程序也会停止</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;motion_abort();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//机械臂运动终止&nbsp;&nbsp;
int&nbsp;example_motion_abort()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//定义并初始化关JointValue变量&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("start_move");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;joint_pos&nbsp;=&nbsp;{&nbsp;0&nbsp;,&nbsp;0&nbsp;,&nbsp;50&nbsp;,&nbsp;0&nbsp;,&nbsp;0&nbsp;,&nbsp;0&nbsp;&nbsp;};&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//关节空间运动其中ABS代表绝对运动TRUE代表指令是阻塞的1代表速度为1rad/s&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.joint_move(&amp;joint_pos,&nbsp;ABS,&nbsp;FALSE,&nbsp;1);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Sleep(500);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//运动0.5s后终止&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.motion_abort();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("stop_move");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="查询机械臂运动是否停止" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E6%98%AF%E5%90%A6%E5%81%9C%E6%AD%A2"><span>查询机械臂运动是否停止</span></a></h3><p>查询机械臂运动是否停止</p><ul><li>参数说明 <ul><li>in_pos&nbsp;查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;is_in_pos(BOOL&nbsp;*in_pos);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;#define&nbsp;PI&nbsp;3.1415926&nbsp;
//查询机械臂运动是否停止&nbsp;&nbsp;
int&nbsp;example_is_in_pos()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;in_pos;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//查询是否运动停止&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.is_in_pos(&amp;in_pos);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;in_pos&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;in_pos&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(200);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="查询机械臂运动状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E7%8A%B6%E6%80%81"><span>查询机械臂运动状态</span></a></h3><p>查询机械臂运动状态. 其中1.7.1和1.7.2版本控制器非阻塞运动队列最大值为30。</p><ul><li>参数说明 <ul><li>status 机械臂运动状态</li></ul></li></ul><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code>errno_t get_motion_status(MotionStatus *status);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂设置阻塞运动超时时间" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%AE%BE%E7%BD%AE%E9%98%BB%E5%A1%9E%E8%BF%90%E5%8A%A8%E8%B6%85%E6%97%B6%E6%97%B6%E9%97%B4"><span>机械臂设置阻塞运动超时时间</span></a></h3><p>设置机器人阻塞等待超时时间</p><ul><li>参数说明 <ul><li>seconds&nbsp;时间参数,单位秒&nbsp;大于0.5</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code>errno_t&nbsp;set_block_wait_timeout(float&nbsp;seconds);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="机械臂操作信息设置与获取" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%93%8D%E4%BD%9C%E4%BF%A1%E6%81%AF%E8%AE%BE%E7%BD%AE%E4%B8%8E%E8%8E%B7%E5%8F%96"><span>机械臂操作信息设置与获取</span></a></h2><h3 id="获取机械臂状态监测数据-唯一多线程安全接口" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%8A%B6%E6%80%81%E7%9B%91%E6%B5%8B%E6%95%B0%E6%8D%AE-%E5%94%AF%E4%B8%80%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E6%8E%A5%E5%8F%A3"><span>获取机械臂状态监测数据(唯一多线程安全接口)</span></a></h3><p>获取机械臂状态数据,多线程安全</p><ul><li>参数说明 <ul><li>status&nbsp;机械臂状态</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_robot_status(RobotStatus *status);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//获取机械臂状态监测数据&nbsp;&nbsp;
int&nbsp;example_get_robot_status()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;RobotStatus&nbsp;robstatus;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取机械臂状态监测数据&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_robot_status(&amp;robstatus);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_out();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取当前机械臂关节角度-simple" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E8%A7%92%E5%BA%A6-simple"><span>获取当前机械臂关节角度simple</span></a></h3><p>获取当前机械臂关节角度将关节角矩阵保存在输入参数joint_position中</p><ul><li>参数说明 <ul><li>joint_position 关节角度查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_joint_position(JointValue *joint_position);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取当前机械臂关节角度" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E8%A7%92%E5%BA%A6"><span>获取当前机械臂关节角度</span></a></h3><p>获取当前机械臂关节角度将关节角矩阵保存在输入参数joint_position中</p><ul><li>参数说明 <ul><li>joint_position 关节角度查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_joint_position(JointValue *joint_position);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//获取当前机械臂关节角&nbsp;&nbsp;
int&nbsp;example_get_joint_position()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;jot_pos;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取当前关节角&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_joint_position(&amp;jot_pos);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;6;&nbsp;i++)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"joint&nbsp;["&nbsp;&lt;&lt;&nbsp;i+1&nbsp;&lt;&lt;"]&nbsp;is&nbsp;:"&lt;&lt;&nbsp;jot_pos.jVal[i]&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置机械臂状态数据自动更新时间间隔" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E7%8A%B6%E6%80%81%E6%95%B0%E6%8D%AE%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4%E9%97%B4%E9%9A%94"><span>设置机械臂状态数据自动更新时间间隔</span></a></h3><p>设置机械臂状态数据自动更新时间间隔,特指get_robot_status()</p><ul><li>参数说明 <ul><li>millisecond&nbsp;时间参数单位ms</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_status_data_update_time_interval(float&nbsp;millisecond);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置状态自动更新时间&nbsp;&nbsp;
int&nbsp;example_set_status_data_updata_interval()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;float&nbsp;milisec&nbsp;=&nbsp;100;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置状态自动更新时间&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_status_data_update_time_interval(milisec);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取当前设置下工具末端的位姿" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E8%AE%BE%E7%BD%AE%E4%B8%8B%E5%B7%A5%E5%85%B7%E6%9C%AB%E7%AB%AF%E7%9A%84%E4%BD%8D%E5%A7%BF"><span>获取当前设置下工具末端的位姿</span></a></h3><p>获取当前设置下工具末端的位姿将位姿保存在输入参数tcp_position中</p><ul><li>参数说明 <ul><li>tcp_position&nbsp;工具末端位置查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_tcp_position(CartesianPose *tcp_position);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//获取工具末端位姿&nbsp;&nbsp;
int&nbsp;example_get_tcp_position()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;tcp_pos;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取工具末端位姿&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_tcp_position(&amp;tcp_pos);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"tcp_pos&nbsp;is&nbsp;:n&nbsp;x:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.tran.x&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;y:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.tran.y&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;z:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.tran.z&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"rx:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.rpy.rx&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;ry:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.rpy.ry&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;rz:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.rpy.rz&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设定用户坐标系信息" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E5%AE%9A%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BB%E4%BF%A1%E6%81%AF"><span>设定用户坐标系信息</span></a></h3><p>设置指定编号的用户坐标系信息</p><ul><li>参数说明&nbsp;id&nbsp;用户坐标系编号&nbsp;,取值范围为[1,15]0为默认世界坐标系不可更改。</li><li>参数说明&nbsp;user_frame&nbsp;用户坐标系偏置值</li><li>参数说明&nbsp;name&nbsp;用户坐标系别名</li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_user_frame_data(int&nbsp;id, const&nbsp;CartesianPose *user_frame,&nbsp;const&nbsp;char&nbsp;*name);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//用户坐标系查看及调整&nbsp;&nbsp;
int&nbsp;example_user_frame()&nbsp;&nbsp;
{&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;id_ret,&nbsp;id_set;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;id_set&nbsp;=&nbsp;2;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;tcp_ret,&nbsp;tcp_set;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;name[50]&nbsp;=&nbsp;"test";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前使用的用户坐标系ID&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_user_frame_id(&amp;id_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取当前使用的用户坐标系信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_user_frame_data(id_ret,&nbsp;&amp;tcp_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("id_using=%d&nbsp;nx=%f,&nbsp;y=%f,&nbsp;z=%f",&nbsp;id_ret,&nbsp;tcp_ret.tran.x,&nbsp;tcp_ret.tran.y,&nbsp;tcp_ret.tran.y);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;printf("rx=%f,&nbsp;ry=%f,&nbsp;rz=%f",&nbsp;tcp_ret.rpy.rx,&nbsp;tcp_ret.rpy.ry,&nbsp;tcp_ret.rpy.rz);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//初始化用户坐标系坐标&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;tcp_set.tran.x&nbsp;=&nbsp;0;&nbsp;tcp_set.tran.y&nbsp;=&nbsp;0;&nbsp;tcp_set.tran.z&nbsp;=&nbsp;10;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;tcp_set.rpy.rx&nbsp;=&nbsp;120&nbsp;;&nbsp;tcp_set.rpy.ry&nbsp;=&nbsp;90&nbsp;;&nbsp;tcp_set.rpy.rz&nbsp;=&nbsp;-90&nbsp;;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//设置用户坐标系信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.set_user_frame_data(id_set,&nbsp;&amp;tcp_set,&nbsp;name);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//切换当前使用的用户坐标系坐标&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.set_user_frame_id(id_set);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//查询当前使用的用户坐标系ID&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.get_user_frame_id(&amp;id_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取设置的用户坐标系信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_user_frame_data(id_ret,&nbsp;&amp;tcp_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("id_using=%d&nbsp;nx=%f,&nbsp;y=%f,&nbsp;z=%f",&nbsp;id_ret,&nbsp;tcp_ret.tran.x,&nbsp;tcp_ret.tran.y,&nbsp;tcp_ret.tran.y);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;printf("rx=%f,&nbsp;ry=%f,&nbsp;rz=%f",&nbsp;tcp_ret.rpy.rx,&nbsp;tcp_ret.rpy.ry,&nbsp;tcp_ret.rpy.rz);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取用户坐标系信息" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BB%E4%BF%A1%E6%81%AF"><span>获取用户坐标系信息</span></a></h3><p>查询当前使用的用户坐标系信息</p><ul><li>参数说明 <ul><li>id&nbsp;用户坐标系ID</li><li>tcp&nbsp;用户坐标系偏置值</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_user_frame_data(int&nbsp;id,&nbsp;CartesianPose *tcp);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置当前使用的用户坐标系id" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BBid"><span>设置当前使用的用户坐标系ID</span></a></h3><p>设置当前使用的用户坐标系ID</p><ul><li>参数说明&nbsp;id&nbsp;用户坐标系ID&nbsp;,取值范围为[0,15]其中0为世界坐标系</li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_user_frame_id(const&nbsp;int&nbsp;id);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="查询当前使用的用户坐标系id" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E7%94%A8%E6%88%B7%E5%9D%90%E6%A0%87%E7%B3%BBid"><span>查询当前使用的用户坐标系ID</span></a></h3><p>查询当前使用的用户坐标系ID</p><ul><li>参数说明 <ul><li>id&nbsp;获取的结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_user_frame_id(int *id);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置工具信息" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%B7%A5%E5%85%B7%E4%BF%A1%E6%81%AF"><span>设置工具信息</span></a></h3><p>配置指定编号的工具信息</p><ul><li>参数说明&nbsp;id&nbsp;工具编号,取值范围为[1,15]</li><li>参数说明&nbsp;tcp&nbsp;工具坐标系相对法兰坐标系偏置</li><li>参数说明&nbsp;name&nbsp;指定工具的别名</li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_tool_data(int&nbsp;id,&nbsp;const&nbsp;CartesianPose *tcp,const&nbsp;char *name);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//工具坐标系查看及调整&nbsp;&nbsp;
int&nbsp;example_tool()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;id_ret,id_set;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;id_set&nbsp;=&nbsp;2;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;tcp_ret,tcp_set;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;name[50]&nbsp;=&nbsp;"test";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前使用的工具ID&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_tool_id(&amp;id_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取当前使用的工具信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_tool_data(id_ret,&amp;tcp_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("id_using=%d&nbsp;nx=%f,&nbsp;y=%f,&nbsp;z=%f",&nbsp;id_ret,&nbsp;tcp_ret.tran.x,&nbsp;tcp_ret.tran.y,&nbsp;tcp_ret.tran.y);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;printf("rx=%f,&nbsp;ry=%f,&nbsp;rz=%f",&nbsp;tcp_ret.rpy.rx,&nbsp;tcp_ret.rpy.ry,&nbsp;tcp_ret.rpy.rz);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//初始化工具坐标&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;tcp_set.tran.x&nbsp;=&nbsp;0;&nbsp;tcp_set.tran.y&nbsp;=&nbsp;0;&nbsp;tcp_set.tran.z&nbsp;=&nbsp;10;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;tcp_set.rpy.rx&nbsp;=&nbsp;120&nbsp;;&nbsp;tcp_set.rpy.ry&nbsp;=&nbsp;90&nbsp;;&nbsp;tcp_set.rpy.rz&nbsp;=&nbsp;-90&nbsp;;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//设置工具信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.set_tool_data(id_set,&nbsp;&amp;tcp_set,&nbsp;name);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//切换当前使用的工具坐标&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.set_tool_id(id_set);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//查询当前使用的工具ID&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.get_tool_id(&amp;id_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取设置的工具信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_tool_data(id_ret,&nbsp;&amp;tcp_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("id_using=%d&nbsp;nx=%f,&nbsp;y=%f,&nbsp;z=%f",&nbsp;id_ret,&nbsp;tcp_ret.tran.x,&nbsp;tcp_ret.tran.y,&nbsp;tcp_ret.tran.y);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;printf("rx=%f,&nbsp;ry=%f,&nbsp;rz=%f",&nbsp;tcp_ret.rpy.rx,&nbsp;tcp_ret.rpy.ry,&nbsp;tcp_ret.rpy.rz);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取工具信息" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E4%BF%A1%E6%81%AF"><span>获取工具信息</span></a></h3><p>查询当前使用的工具信息</p><ul><li>参数说明 <ul><li>id&nbsp;工具ID查询结果</li><li>tcp&nbsp;工具坐标系相对法兰坐标系偏置</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_tool_data(int *id,&nbsp;CartesianPose *tcp);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="查询当前使用的工具id" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E5%B7%A5%E5%85%B7id"><span>查询当前使用的工具ID</span></a></h3><p>查询当前使用的工具ID</p><ul><li>参数说明 <ul><li>id&nbsp;工具ID查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_tool_id(int *id);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置当前使用的工具id" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E5%B7%A5%E5%85%B7id"><span>设置当前使用的工具ID</span></a></h3><p>设置当前使用的工具ID在网络波动时切换ID后需要一定延时才能生效。</p><ul><li>参数说明&nbsp;id&nbsp;工具坐标系ID&nbsp;,取值范围为[0,15]0为使用默认末端法兰中心坐标系</li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_tool_id(const&nbsp;int&nbsp;id);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置数字输出变量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%95%B0%E5%AD%97%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F"><span>设置数字输出变量</span></a></h3><p>设置数字输出变量(DO)的值</p><ul><li>参数说明 <ul><li>type&nbsp;DO类型</li><li>index&nbsp;DO索引从0开始</li><li>value&nbsp;DO设置值</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_digital_output(IOType&nbsp;type,&nbsp;int&nbsp;index,&nbsp;BOOL&nbsp;value);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
//设置与查询数字输出&nbsp;&nbsp;
int&nbsp;main()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;BOOL&nbsp;DO3;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登录控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询do3的状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_digital_output(IO_CABINET,&nbsp;2,&nbsp;&amp;DO3);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("D03&nbsp;=&nbsp;%d",&nbsp;DO3);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//io_cabinet是控制柜面板IO2代表DO31对应要设置的DO值。&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.set_digital_output(IO_CABINET,&nbsp;2,&nbsp;1);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;Sleep(1000);//需要window.h延时1s&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//查询do3的状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.get_digital_output(IO_CABINET,&nbsp;2,&nbsp;&amp;DO3);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;printf("D03&nbsp;=&nbsp;%d",&nbsp;DO3);&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置模拟输出变量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%A8%A1%E6%8B%9F%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F"><span>设置模拟输出变量</span></a></h3><p>设置模拟输出变量的值(AO)的值</p><ul><li>参数说明 <ul><li>type&nbsp;AO类型&nbsp;; 做modbus从站IO时索引为4</li><li>index&nbsp;AO索引&nbsp;从0开始</li><li>value&nbsp;AO设置值</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_analog_output(IOType&nbsp;type,&nbsp;int&nbsp;index,&nbsp;float&nbsp;value);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
//设置与查询模拟输出&nbsp;&nbsp;
int&nbsp;main()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;float&nbsp;AO35;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询Ao的状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_analog_output(IO_CABINET,&nbsp;0,&nbsp;&amp;AO35);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("A035&nbsp;=&nbsp;%f",&nbsp;AO35);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//io_cabinet是控制柜面板IO2代表DO31.5对应要设置的DO值。&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.set_analog_output(IO_CABINET,&nbsp;0,&nbsp;1.5);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;Sleep(1000);//需要window.h延时1s&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//查询Ao的状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.get_analog_output(IO_CABINET,&nbsp;0,&nbsp;&amp;AO35);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;printf("A035&nbsp;=&nbsp;%f",&nbsp;AO35);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="运动中设置数字输出变量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%BF%90%E5%8A%A8%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%95%B0%E5%AD%97%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F"><span>运动中设置数字输出变量</span></a></h3><p>只适配控制器版本1.7.2 运动中设置数字输出变量(DO)的值</p><ul><li>参数说明 <ul><li>type&nbsp;DO类型</li><li>index&nbsp;DO索引从0开始</li><li>value&nbsp;DO设置值</li><li>rel 0: 相对于运动起点, 1相对于运动终点</li><li>distance 距离指相对于起点或终点依据rel参数距离多少触发DO</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_motion_digital_output(IOType type, int index, BOOL value, BOOL rel, double distance);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="运动中设置模拟输出变量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%BF%90%E5%8A%A8%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%A8%A1%E6%8B%9F%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F"><span>运动中设置模拟输出变量</span></a></h3><p>只适配控制器版本1.7.2 运动中设置模拟输出变量(AO)的值</p><ul><li>参数说明 <ul><li>type&nbsp;AO类型</li><li>index&nbsp;AO索引从0开始</li><li>value&nbsp;AO设置值</li><li>rel 0: 相对于运动起点, 1相对于运动终点</li><li>distance 距离指相对于起点或终点依据rel参数距离多少触发AO</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_motion_digital_output(IOType type, int index, BOOL value, BOOL rel, double distance);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="查询数字输入状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%95%B0%E5%AD%97%E8%BE%93%E5%85%A5%E7%8A%B6%E6%80%81"><span>查询数字输入状态</span></a></h3><p>查询数字输入(DI)状态</p><ul><li>参数说明 <ul><li>type&nbsp;DI类型</li><li>index&nbsp;DI索引从0开始</li><li>result&nbsp;DI状态查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_digital_input(IOType&nbsp;type,&nbsp;int&nbsp;index,&nbsp;BOOL *result);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="查询数字输出状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%95%B0%E5%AD%97%E8%BE%93%E5%87%BA%E7%8A%B6%E6%80%81"><span>查询数字输出状态</span></a></h3><p>查询数字输出(DO)状态</p><ul><li>参数说明 <ul><li>type&nbsp;DO类型</li><li>index&nbsp;DO索引从0开始</li><li>result&nbsp;DO状态查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_digital_output(IOType&nbsp;type,&nbsp;int&nbsp;index,&nbsp;BOOL *result);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取模拟量输入变量的值" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%A8%A1%E6%8B%9F%E9%87%8F%E8%BE%93%E5%85%A5%E5%8F%98%E9%87%8F%E7%9A%84%E5%80%BC"><span>获取模拟量输入变量的值</span></a></h3><p>获取模拟量输入变量(AI)的值</p><ul><li>参数说明 <ul><li>type&nbsp;AI的类型</li><li>index&nbsp;AI索引从0开始</li><li>result&nbsp;指定AI状态查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_analog_input(IOType&nbsp;type,&nbsp;int&nbsp;index,&nbsp;float *result);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取模拟量输出变量的值" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%A8%A1%E6%8B%9F%E9%87%8F%E8%BE%93%E5%87%BA%E5%8F%98%E9%87%8F%E7%9A%84%E5%80%BC"><span>获取模拟量输出变量的值</span></a></h3><p>获取模拟量输出变量(AO)的值</p><ul><li>参数说明 <ul><li>type&nbsp;AO的类型</li><li>index&nbsp;AO索引从0开始</li><li>result&nbsp;指定AO状态查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_analog_output(IOType&nbsp;type,&nbsp;int&nbsp;index,&nbsp;float *result);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="查询扩展io是否运行" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%89%A9%E5%B1%95io%E6%98%AF%E5%90%A6%E8%BF%90%E8%A1%8C"><span>查询扩展IO是否运行</span></a></h3><p>查询扩展IO模块是否运行</p><ul><li>参数说明 <ul><li>is_running&nbsp;扩展IO模块运行状态查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;is_extio_running(BOOL *is_running);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
//查询扩展IO状态&nbsp;&nbsp;
int&nbsp;main()&nbsp;&nbsp;
{&nbsp;&nbsp;
BOOL&nbsp;is_running;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询TIO的状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.is_extio_running(&amp;is_running);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("tio&nbsp;=&nbsp;%d",&nbsp;is_running);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂负载设置" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%B4%9F%E8%BD%BD%E8%AE%BE%E7%BD%AE"><span>机械臂负载设置</span></a></h3><p>机械臂负载设置</p><ul><li>参数说明 <ul><li>payload&nbsp;负载质心、质量数据</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_payload(const&nbsp;PayLoad *payload);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取机械臂负载数据" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E8%B4%9F%E8%BD%BD%E6%95%B0%E6%8D%AE"><span>获取机械臂负载数据</span></a></h3><p>获取机械臂负载数据</p><ul><li>参数说明 <ul><li>payload&nbsp;负载查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_payload(PayLoad *payload);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>int&nbsp;example_payload()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;PayLoad&nbsp;payloadret;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;PayLoad&nbsp;payload_set;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//查询当前负载数据&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_payload(&amp;payloadret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;payload&nbsp;mass&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;payloadret.mass&nbsp;&lt;&lt;&nbsp;"&nbsp;kg"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;payload&nbsp;center&nbsp;of&nbsp;mass&nbsp;is&nbsp;nx:&nbsp;"&nbsp;&lt;&lt;&nbsp;payloadret.centroid.x&lt;&lt;&nbsp;"y:&nbsp;"&nbsp;&lt;&lt;&nbsp;payloadret.centroid.y&nbsp;&lt;&lt;&nbsp;"z:&nbsp;"&nbsp;&lt;&lt;&nbsp;payloadret.centroid.z&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;payload_set.mass&nbsp;=&nbsp;1.0;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//单位mm&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;payload_set.centroid.x&nbsp;=&nbsp;0;&nbsp;payload_set.centroid.y&nbsp;=&nbsp;0;&nbsp;payload_set.centroid.z&nbsp;=&nbsp;10;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置当前负载数据&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_payload(&amp;payload_set);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前负载数据&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_payload(&amp;payloadret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;payload&nbsp;mass&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;payloadret.mass&nbsp;&lt;&lt;&nbsp;"&nbsp;kg"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;payload&nbsp;center&nbsp;of&nbsp;mass&nbsp;is&nbsp;nx:&nbsp;"&nbsp;&lt;&lt;&nbsp;payloadret.centroid.x&nbsp;&lt;&lt;&nbsp;"y:&nbsp;"&nbsp;&lt;&lt;&nbsp;payloadret.centroid.y&nbsp;&lt;&lt;&nbsp;"z:&nbsp;"&nbsp;&lt;&lt;&nbsp;payloadret.centroid.z&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置tiov3电压参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEtiov3%E7%94%B5%E5%8E%8B%E5%8F%82%E6%95%B0"><span>设置TIOV3电压参数</span></a></h3><p>设置tioV3电压参数</p><ul><li>参数说明 <ul><li>vout_enable&nbsp;电压使能0:关1开</li><li>vout_vol&nbsp;电压大小&nbsp;0:24v&nbsp;1:12v</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_tio_vout_param(int&nbsp;vout_enable,&nbsp;int&nbsp;vout_vol);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取tiov3电压参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96tiov3%E7%94%B5%E5%8E%8B%E5%8F%82%E6%95%B0"><span>获取TIOV3电压参数</span></a></h3><p>获取tioV3电压参数</p><ul><li>参数说明 <ul><li>vout_enable&nbsp;电压使能0:关1开</li><li>vout_vol&nbsp;电压大小&nbsp;0:24v&nbsp;1:12v</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_tio_vout_param(int *vout_enable,&nbsp;int *vout_vol);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="tio添加或修改信号量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio%E6%B7%BB%E5%8A%A0%E6%88%96%E4%BF%AE%E6%94%B9%E4%BF%A1%E5%8F%B7%E9%87%8F"><span>TIO添加或修改信号量</span></a></h3><p>添加或修改信号量</p><ul><li>参数说明 <ul><li>sign_info&nbsp;信号量参数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;add_tio_rs_signal(SignInfo&nbsp;sign_info);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> void&nbsp;example_add_tio_rs_signal()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;robot;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.login_in("192.168.20.138");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;SignInfo&nbsp;sign_info&nbsp;{0};&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;memcpy(sign_info.sig_name,&nbsp;"sign_tmp",&nbsp;sizeof("sign_tmp"));&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sign_info.chn_id&nbsp;=&nbsp;0,&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sign_info.sig_type&nbsp;=&nbsp;0,&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sign_info.value&nbsp;=&nbsp;10,&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sign_info.frequency&nbsp;=&nbsp;5;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;sign_info.sig_addr&nbsp;=&nbsp;0x1;&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.add_tio_rs_signal(sign_info);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.disable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.power_off();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.login_out();&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="tio删除信号量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio%E5%88%A0%E9%99%A4%E4%BF%A1%E5%8F%B7%E9%87%8F"><span>TIO删除信号量</span></a></h3><p>删除信号量</p><ul><li>参数说明 <ul><li>sig_name&nbsp;信号量名称</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;del_tio_rs_signal(const&nbsp;char&nbsp;*sig_name);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> void&nbsp;example_del_tio_rs_signal()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;robot;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.login_in("192.168.20.138");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;const&nbsp;char*&nbsp;name&nbsp;=&nbsp;"sign_tmp";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.del_tio_rs_signal(name);&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.disable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.power_off();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.login_out();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="tio-rs485发送指令" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485%E5%8F%91%E9%80%81%E6%8C%87%E4%BB%A4"><span>TIO RS485发送指令</span></a></h3><p>RS485发送命令</p><ul><li>参数说明 <ul><li>chn_id&nbsp;通道号</li><li>data&nbsp;数据字段</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;send_tio_rs_command(int&nbsp;chn_id,&nbsp;uint8_t*&nbsp;data,int&nbsp;buffsize);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-C++ line-numbers-mode" data-ext="C++" data-title="C++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-C++" copy-code-registered=""><code> void&nbsp;example_send_tio_rs_command()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;robot;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.login_in("192.168.20.138");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;uint8_t&nbsp;cmd[]&nbsp;=&nbsp;{'t',&nbsp;'e',&nbsp;'s',&nbsp;'t',&nbsp;'c',&nbsp;'m',&nbsp;'d'};&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.send_tio_rs_command(0,&nbsp;cmd,&nbsp;sizeof(cmd));&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.disable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.power_off();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.login_out();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="tio-刷新信号量信息" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-%E5%88%B7%E6%96%B0%E4%BF%A1%E5%8F%B7%E9%87%8F%E4%BF%A1%E6%81%AF"><span>TIO 刷新信号量信息</span></a></h3><p>刷新信号量信息</p><ul><li>参数说明 <ul><li>SignInfo&nbsp;信号量信息数组</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;update_tio_rs_signal(SignInfo_simple sign_info);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="tio-获取信号量信息" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-%E8%8E%B7%E5%8F%96%E4%BF%A1%E5%8F%B7%E9%87%8F%E4%BF%A1%E6%81%AF"><span>TIO 获取信号量信息</span></a></h3><p>获取信号量信息, 建议在获取前先调用上面的刷新接口</p><ul><li>参数说明 <ul><li>SignInfo*&nbsp;信号量信息数组</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_rs485_signal_info(SignInfo *sign_info);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>void&nbsp;example_get_rs485_signal_info()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;robot;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.login_in("192.168.20.138");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;SignInfo&nbsp;sign_info[256];&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;robot.get_rs485_signal_info(sign_info);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.disable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.power_off();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;robot.login_out();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置tio模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AEtio%E6%A8%A1%E5%BC%8F"><span>设置TIO模式</span></a></h3><p>设置tio模式</p><ul><li>参数说明 <ul><li>pin_type&nbsp;tio类型&nbsp;0&nbsp;for&nbsp;DI&nbsp;Pins1&nbsp;for&nbsp;DO&nbsp;Pins2&nbsp;for&nbsp;AI&nbsp;Pins <ul><li>DI&nbsp;Pins:&nbsp;00x00&nbsp;DI2为NPNDI1为NPN。10x01&nbsp;DI2为NPNDI1为PNP。20x10&nbsp;DI2为PNPDI1为NPN。30x11&nbsp;DI2为PNPDI1为PNP。</li><li>DO&nbsp;Pins:&nbsp;低8位数据高4位为DO2配置低四位为DO1配置。0x0&nbsp;DO为NPN输出0x1&nbsp;DO为PNP输出0x2&nbsp;DO为推挽输出0xF&nbsp;RS485H接口。</li><li>AI&nbsp;Pins:&nbsp;0模拟输入功能使能RS485L禁止。1RS485L接口使能模拟输入功能禁止。</li></ul></li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_tio_pin_mode(int&nbsp;pin_type,&nbsp;int&nbsp;pin_mode);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取tio模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96tio%E6%A8%A1%E5%BC%8F"><span>获取TIO模式</span></a></h3><p>获取tio模式</p><ul><li>参数说明 <ul><li>pin_type&nbsp;tio类型&nbsp;0&nbsp;for&nbsp;DI&nbsp;Pins,&nbsp;1&nbsp;for&nbsp;DO&nbsp;Pins,&nbsp;2&nbsp;for&nbsp;AI&nbsp;Pins <ul><li>DI&nbsp;Pins:&nbsp;0:0x00&nbsp;DI2为NPN,DI1为NPN,1:0x01&nbsp;DI2为NPN,DI1为PNP,&nbsp;2:0x10&nbsp;DI2为PNP,DI1为NPN,3:0x11&nbsp;DI2为PNP,DI1为PNP</li><li>DO&nbsp;Pins:&nbsp;低8位数据高4位为DO2配置低四位为DO1配置。0x0&nbsp;DO为NPN输出0x1&nbsp;DO为PNP输出,&nbsp;0x2&nbsp;DO为推挽输出,&nbsp;0xF&nbsp;RS485H接口</li><li>AI&nbsp;Pins:&nbsp;0:模拟输入功能使能RS485L禁止,&nbsp;1:RS485L接口使能模拟输入功能禁止</li></ul></li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_tio_pin_mode(int&nbsp;pin_type,&nbsp;int *pin_mode);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="tio-rs485通讯参数配置" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE"><span>TIO RS485通讯参数配置</span></a></h3><p>RS485通讯参数配置</p><ul><li>参数说明 <ul><li>ModRtuComm&nbsp;当通道模式设置为Modbus&nbsp;RTU时需额外指定Modbus从站节点ID</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_rs485_chn_comm(ModRtuComm&nbsp;mod_rtu_com);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="tio-rs485通讯参数查询" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0%E6%9F%A5%E8%AF%A2"><span>TIO RS485通讯参数查询</span></a></h3><p>RS485通讯参数查询</p><ul><li>参数说明 <ul><li>ModRtuComm&nbsp;查询时chn_id作为输入参数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_rs485_chn_comm(ModRtuComm *mod_rtu_com);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="tio-rs485-通讯模式配置" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485-%E9%80%9A%E8%AE%AF%E6%A8%A1%E5%BC%8F%E9%85%8D%E7%BD%AE"><span>TIO RS485 通讯模式配置</span></a></h3><p>RS485通讯模式配置</p><ul><li>参数说明 <ul><li>chn_id&nbsp;0:&nbsp;RS485H,&nbsp;channel&nbsp;1;&nbsp;1:&nbsp;RS485L,&nbsp;channel&nbsp;2</li><li>chn_mode&nbsp;0:&nbsp;Modbus&nbsp;RTU,&nbsp;1:&nbsp;Raw&nbsp;RS485,&nbsp;2,&nbsp;torque&nbsp;sensor</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_rs485_chn_mode(int&nbsp;chn_id,&nbsp;int&nbsp;chn_mode);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="tio-rs485-通讯模式查询" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#tio-rs485-%E9%80%9A%E8%AE%AF%E6%A8%A1%E5%BC%8F%E6%9F%A5%E8%AF%A2"><span>TIO RS485 通讯模式查询</span></a></h3><p>RS485通讯模式查询</p><ul><li>参数说明 <ul><li>chn_id&nbsp;输入参数&nbsp;0:&nbsp;RS485H,&nbsp;channel&nbsp;1。1:&nbsp;RS485L,&nbsp;channel&nbsp;2</li><li>chn_mode&nbsp;输出参数&nbsp;&nbsp;0:&nbsp;Modbus&nbsp;RTU。1:&nbsp;Raw&nbsp;RS485。2torque&nbsp;sensor</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_rs485_chn_mode(int&nbsp;chn_id,&nbsp;int&nbsp;*chn_mode);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取机器人安装角度" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%AE%89%E8%A3%85%E8%A7%92%E5%BA%A6"><span>获取机器人安装角度</span></a></h3><p>获取安装角度</p><ul><li>参数说明 <ul><li>quat&nbsp;安装角度四元数</li><li>appang&nbsp;安装角度RPY角</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_installation_angle(Quaternion&nbsp;*quat,&nbsp;Rpy *appang);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;JAKAZuRobot.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;
#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;main()&nbsp;&nbsp;&nbsp;&nbsp;
{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;robot;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;errno_t&nbsp;ret&nbsp;=&nbsp;robot.login_in("192.168.137.152");&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"login&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;robot.set_installation_angle(3.14,&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"set&nbsp;installation&nbsp;angle&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Quaternion&nbsp;quat;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Rpy&nbsp;rpy;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;robot.get_installation_angle(&amp;quat,&nbsp;&amp;rpy);&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"get&nbsp;installation&nbsp;angle&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"quat:&nbsp;["&nbsp;&lt;&lt;&nbsp;quat.x&nbsp;&lt;&lt;&nbsp;",&nbsp;"&nbsp;&lt;&lt;&nbsp;quat.y&nbsp;&lt;&lt;&nbsp;",&nbsp;"&nbsp;&lt;&lt;&nbsp;quat.z&nbsp;&lt;&lt;&nbsp;",&nbsp;"&nbsp;&lt;&lt;&nbsp;quat.s&nbsp;&lt;&lt;&nbsp;"]";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"anglex:&nbsp;"&nbsp;&lt;&lt;&nbsp;rpy.rx&nbsp;&lt;&lt;&nbsp;",&nbsp;anglez:&nbsp;"&nbsp;&lt;&lt;&nbsp;rpy.rz&nbsp;&lt;&lt;&nbsp;"";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;robot.login_out();&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"login&nbsp;out&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置机器人安装角度" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%AE%89%E8%A3%85%E8%A7%92%E5%BA%A6"><span>设置机器人安装角度</span></a></h3><p>设置安装角度</p><ul><li>参数说明 <ul><li>angleX&nbsp;绕X轴旋转角度</li><li>angleZ&nbsp;绕Z轴旋转角度</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_installation_angle(double&nbsp;angleX,&nbsp;double&nbsp;angleZ);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;JAKAZuRobot.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;
#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
int&nbsp;main()&nbsp;&nbsp;&nbsp;&nbsp;
{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;robot;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;errno_t&nbsp;ret&nbsp;=&nbsp;robot.login_in("192.168.137.152");&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"login&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;robot.set_installation_angle(3.14,&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"set&nbsp;installation&nbsp;angle&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Quaternion&nbsp;quat;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Rpy&nbsp;rpy;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;robot.get_installation_angle(&amp;quat,&nbsp;&amp;rpy);&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"get&nbsp;installation&nbsp;angle&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"quat:&nbsp;["&nbsp;&lt;&lt;&nbsp;quat.x&nbsp;&lt;&lt;&nbsp;",&nbsp;"&nbsp;&lt;&lt;&nbsp;quat.y&nbsp;&lt;&lt;&nbsp;",&nbsp;"&nbsp;&lt;&lt;&nbsp;quat.z&nbsp;&lt;&lt;&nbsp;",&nbsp;"&nbsp;&lt;&lt;&nbsp;quat.s&nbsp;&lt;&lt;&nbsp;"]";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"anglex:&nbsp;"&nbsp;&lt;&lt;&nbsp;rpy.rx&nbsp;&lt;&lt;&nbsp;",&nbsp;anglez:&nbsp;"&nbsp;&lt;&lt;&nbsp;rpy.rz&nbsp;&lt;&lt;&nbsp;"";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;robot.login_out();&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ret&nbsp;!=&nbsp;ERR_SUCC)&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"login&nbsp;out&nbsp;failed.";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置系统变量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E7%B3%BB%E7%BB%9F%E5%8F%98%E9%87%8F"><span>设置系统变量</span></a></h3><p>设置系统变量</p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_user_var(UserVariable v);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取机械臂状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%8A%B6%E6%80%81"><span>获取机械臂状态</span></a></h3><p>获取机械臂状态</p><ul><li>参数说明 <ul><li>state&nbsp;机械臂状态查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_robot_state(RobotState *state);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//获取机械臂状态(急停&nbsp;上电&nbsp;伺服使能)&nbsp;&nbsp;
int&nbsp;example_get_robstate()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;//声明机械臂状态结构体&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;RobotState&nbsp;state;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询机械臂状态&nbsp;&nbsp;
demo.get_robot_state(&amp;state);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"is&nbsp;e_stoped&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;state.estoped&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"is&nbsp;powered&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;state.poweredOn&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"is&nbsp;servoEnabled&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;state.servoEnabled&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取系统变量" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E7%B3%BB%E7%BB%9F%E5%8F%98%E9%87%8F"><span>获取系统变量</span></a></h3><p>获取系统变量</p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_user_var(UserVariableList *vlist);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="机械臂安全状态设置与查询" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81%E8%AE%BE%E7%BD%AE%E4%B8%8E%E6%9F%A5%E8%AF%A2"><span>机械臂安全状态设置与查询</span></a></h2><h3 id="查询机械臂是否超出限位" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E6%98%AF%E5%90%A6%E8%B6%85%E5%87%BA%E9%99%90%E4%BD%8D"><span>查询机械臂是否超出限位</span></a></h3><p>查询机械臂是否超出软限位</p><ul><li>参数说明 <ul><li>on_limit&nbsp;查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;is_on_limit(BOOL&nbsp;*on_limit);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//查询是否超出限位&nbsp;&nbsp;
int&nbsp;example_is_on_limit()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;BOOL&nbsp;on_limit;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//查询是否超限&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.is_on_limit(&amp;on_limit);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;on_limit&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;on_limit&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(200);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="查询机械臂是否处于碰撞保护模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%9C%BA%E6%A2%B0%E8%87%82%E6%98%AF%E5%90%A6%E5%A4%84%E4%BA%8E%E7%A2%B0%E6%92%9E%E4%BF%9D%E6%8A%A4%E6%A8%A1%E5%BC%8F"><span>查询机械臂是否处于碰撞保护模式</span></a></h3><p>查询机械臂是否处于碰撞保护模式</p><ul><li>参数说明 <ul><li>in_collision&nbsp;查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;is_in_collision(BOOL *in_collision);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="碰撞之后从碰撞保护模式恢复" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E7%A2%B0%E6%92%9E%E4%B9%8B%E5%90%8E%E4%BB%8E%E7%A2%B0%E6%92%9E%E4%BF%9D%E6%8A%A4%E6%A8%A1%E5%BC%8F%E6%81%A2%E5%A4%8D"><span>碰撞之后从碰撞保护模式恢复</span></a></h3><p>碰撞之后从碰撞保护模式恢复</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;collision_recover();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//碰撞保护状态查询,恢复&nbsp;&nbsp;
int&nbsp;example_collision_recover()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;BOOL&nbsp;in_collision;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询是否处于碰撞保护状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.is_in_collision(&amp;in_collision);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;in_collision&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;in_collision&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(in_collision)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果处于碰撞保护模式,则从碰撞保护中恢复&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{demo.collision_recover();}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{std::cout&nbsp;&lt;&lt;&nbsp;"robot&nbsp;is&nbsp;not&nbsp;collisio"&nbsp;&lt;&lt;&nbsp;std::endl;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置机械臂碰撞等级" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E7%A2%B0%E6%92%9E%E7%AD%89%E7%BA%A7"><span>设置机械臂碰撞等级</span></a></h3><p>设置机械臂碰撞等级</p><ul><li>参数说明 <ul><li>level&nbsp;&nbsp;碰撞等级,取值范围[0,5]&nbsp;其中0为关闭碰撞1为碰撞阈值25N2为碰撞阈值50N3为碰撞阈值75N4为碰撞阈值100N5为碰撞阈值125N</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_collision_level(const&nbsp;int&nbsp;level);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//碰撞等级查看,设置&nbsp;&nbsp;
int&nbsp;example_collision_level()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;level;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前碰撞等级&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_collision_level(&amp;level);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;collision&nbsp;level&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;level&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置碰撞等级,[0,5]0为关闭碰撞1为碰撞阈值25N2为碰撞阈值50N3为碰撞阈值75N4为碰撞阈值100N5为碰撞阈值125N&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_collision_level(2);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前碰撞等级&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_collision_level(&amp;level);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;collision&nbsp;level&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;level&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取机器设置的碰撞等级" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E5%99%A8%E8%AE%BE%E7%BD%AE%E7%9A%84%E7%A2%B0%E6%92%9E%E7%AD%89%E7%BA%A7"><span>获取机器设置的碰撞等级</span></a></h3><p>获取机械臂设置的碰撞等级</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_collision_level(int *level);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置网络异常时机械臂自动终止运动类型" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E7%BD%91%E7%BB%9C%E5%BC%82%E5%B8%B8%E6%97%B6%E6%9C%BA%E6%A2%B0%E8%87%82%E8%87%AA%E5%8A%A8%E7%BB%88%E6%AD%A2%E8%BF%90%E5%8A%A8%E7%B1%BB%E5%9E%8B"><span>设置网络异常时机械臂自动终止运动类型</span></a></h3><p>设置网络异常控制句柄SDK与机械臂控制器失去连接后多长时间机械臂控制器终止机械臂当前运动</p><ul><li>参数说明 <ul><li>millisecond 时间参数单位ms范围为500-30000ms若设置超出该范围则实际生效的时间为2s</li><li>mnt 网络异常时机械臂需要进行的动作类型</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_network_exception_handle(float millisecond, ProcessType mnt);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置网络异常时机械臂自动终止运动类型&nbsp;&nbsp;
int&nbsp;example_set_network_exception_handle()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;float&nbsp;milisec&nbsp;=&nbsp;100;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置柔顺力矩条件&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_network_exception_handle(milisec,&nbsp;MOT_KEEP);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取机械臂目前发生的最后一个错误码" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9B%AE%E5%89%8D%E5%8F%91%E7%94%9F%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E9%94%99%E8%AF%AF%E7%A0%81"><span>获取机械臂目前发生的最后一个错误码</span></a></h3><p>获取机械臂运行过程中最后一个错误码当调用clear_error时最后一个错误码会清零</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_last_error(ErrorCode *code);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="错误状态清除" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%94%99%E8%AF%AF%E7%8A%B6%E6%80%81%E6%B8%85%E9%99%A4"><span>错误状态清除</span></a></h3><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;clear_error();
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="注册机械臂出错时的回调函数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%B3%A8%E5%86%8C%E6%9C%BA%E6%A2%B0%E8%87%82%E5%87%BA%E9%94%99%E6%97%B6%E7%9A%84%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0"><span>注册机械臂出错时的回调函数</span></a></h3><p>注册机械臂出现错误时的回调函数</p><ul><li>参数说明 <ul><li>func&nbsp;指向用户定义的函数的函数指针</li><li>error_code&nbsp;机械臂的错误码</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_error_handler(CallBackFuncType&nbsp;func);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//注册机械臂出错函数&nbsp;错误处理,类中断&nbsp;&nbsp;
void&nbsp;user_error_handle(int&nbsp;error_code)&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;error_code&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
}&nbsp;&nbsp;
int&nbsp;example_set_err_handle()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.229");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置用户异常回调函数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_error_handler(user_error_handle);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置机械臂错误码文件存放路径" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E9%94%99%E8%AF%AF%E7%A0%81%E6%96%87%E4%BB%B6%E5%AD%98%E6%94%BE%E8%B7%AF%E5%BE%84"><span>设置机械臂错误码文件存放路径</span></a></h3><p>设置错误码文件路径需要使用get_last_error接口时需要设置错误码文件路径如果不使用get_last_error接口则不需要设置该接口</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_errorcode_file_path(char *path);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//错误码查看&nbsp;&nbsp;
int&nbsp;example_get_last_errcode()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
//初始化错误码文件存放路径&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;path[100]&nbsp;=&nbsp;"E:JAKA_ERROR_CODE.csv";&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ErrorCode&nbsp;Eret;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.program_load("not_exist999875");//故意加载一个不存在的程序,引发报错。&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_last_error(&amp;Eret);//查询最后一个报错信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;error&nbsp;code&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;Eret.code&nbsp;&lt;&lt;&nbsp;"&nbsp;message:&nbsp;"&lt;&lt;&nbsp;Eret.message&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_errorcode_file_path(path);//设置错误码说明文件&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_last_error(&amp;Eret);//查询最后一个报错信息&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;error&nbsp;code&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;Eret.code&nbsp;&lt;&lt;&nbsp;"&nbsp;message:&nbsp;"&nbsp;&lt;&lt;&nbsp;Eret.message&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="使用app脚本程序" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E4%BD%BF%E7%94%A8app%E8%84%9A%E6%9C%AC%E7%A8%8B%E5%BA%8F"><span>使用App脚本程序</span></a></h2><h3 id="运行当前加载的作业程序" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%BF%90%E8%A1%8C%E5%BD%93%E5%89%8D%E5%8A%A0%E8%BD%BD%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F"><span>运行当前加载的作业程序</span></a></h3><p>运行当前加载的作业程序</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;program_run();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//脚本加载,脚本运行控制,脚本过程查看&nbsp;&nbsp;
int&nbsp;example_program()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;char&nbsp;name[128];&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;cur_line;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ProgramState&nbsp;pstatus;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//加载预先通过app编辑完成的example脚本&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.program_load("example");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取已加载的程序名&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_loaded_program(name);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;"Pro_name&nbsp;is&nbsp;:"&lt;&lt;&nbsp;name&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//运行当前加载的程序&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.program_run();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Sleep(1000);//让程序先运行1s&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//暂停当前运行的程序&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.program_pause();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取当前执行程序的行号&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_current_line(&amp;cur_line);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"cur_line&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;cur_line&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取当前程序状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_program_state(&amp;pstatus);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;&nbsp;"pro_status&nbsp;is&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;pstatus&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//继续运行当前程序&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.program_resume();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Sleep(10000);//需要window.h延时10s&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//终止当前程序&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.program_abort();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="暂停当前运行的作业程序" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9A%82%E5%81%9C%E5%BD%93%E5%89%8D%E8%BF%90%E8%A1%8C%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F"><span>暂停当前运行的作业程序</span></a></h3><p>暂停当前运行的作业程序</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;program_pause();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="继续运行当前暂停的作业程序" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E7%BB%A7%E7%BB%AD%E8%BF%90%E8%A1%8C%E5%BD%93%E5%89%8D%E6%9A%82%E5%81%9C%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F"><span>继续运行当前暂停的作业程序</span></a></h3><p>继续运行当前暂停的作业程序</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;program_resume();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="终止当前执行的作业程序" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E7%BB%88%E6%AD%A2%E5%BD%93%E5%89%8D%E6%89%A7%E8%A1%8C%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F"><span>终止当前执行的作业程序</span></a></h3><p>终止当前执行的作业程序</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;program_abort();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="加载指定的作业程序" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%8A%A0%E8%BD%BD%E6%8C%87%E5%AE%9A%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F"><span>加载指定的作业程序</span></a></h3><p>加载指定的作业程序 程序名为app中的名称即可加载轨迹复现数据轨迹复现数据的加载需要在文件夹名字前加上track/</p><ul><li>参数说明 <ul><li>file&nbsp;程序文件路径</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;program_load(const&nbsp;char&nbsp;*file);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取已加载的作业程序的名字" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%B2%E5%8A%A0%E8%BD%BD%E7%9A%84%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%90%8D%E5%AD%97"><span>获取已加载的作业程序的名字</span></a></h3><p>获取已加载的作业程序名字</p><ul><li>参数说明 <ul><li>file&nbsp;程序文件路径</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_loaded_program(char&nbsp;*file);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取当前机械臂作业程序的执行行号" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%89%A7%E8%A1%8C%E8%A1%8C%E5%8F%B7"><span>获取当前机械臂作业程序的执行行号</span></a></h3><p>获取当前机械臂作业程序的执行行号</p><ul><li>参数说明 <ul><li>curr_line&nbsp;当前行号查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_current_line(int&nbsp;*curr_line);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取机械臂作业程序的执行状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BD%9C%E4%B8%9A%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%89%A7%E8%A1%8C%E7%8A%B6%E6%80%81"><span>获取机械臂作业程序的执行状态</span></a></h3><p>获取机械臂作业程序执行状态</p><ul><li>参数说明 <ul><li>status&nbsp;作业程序执行状态查询结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_program_state(ProgramState *status);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置机械臂的运行倍率" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9A%84%E8%BF%90%E8%A1%8C%E5%80%8D%E7%8E%87"><span>设置机械臂的运行倍率</span></a></h3><p>设置机械臂运行倍率</p><ul><li>参数说明 <ul><li>rapid_rate&nbsp;是程序运行倍率,设置范围为[0,1]</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_rapidrate(double&nbsp;rapid_rate);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//机械臂速度查看及调整&nbsp;&nbsp;
int&nbsp;example_rapidrate()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;double&nbsp;rapid_rate;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取机械臂运动速率&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_rapidrate(&amp;rapid_rate);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"rapid_rate&nbsp;is&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;rapid_rate&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置机械臂运动速率&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_rapidrate(0.4);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Sleep(100);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_rapidrate(&amp;rapid_rate);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"rapid_rate&nbsp;is&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;rapid_rate&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取机械臂的运行倍率" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9A%84%E8%BF%90%E8%A1%8C%E5%80%8D%E7%8E%87"><span>获取机械臂的运行倍率</span></a></h3><p>获取机械臂运行倍率</p><ul><li>参数说明 <ul><li>rapid_rate当前控制系统倍率</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_rapidrate(double&nbsp;*rapid_rate);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="机械臂轨迹复现" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0"><span>机械臂轨迹复现</span></a></h2><h3 id="设置轨迹复现配置参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0"><span>设置轨迹复现配置参数</span></a></h3><p>设置轨迹复现配置参数</p><ul><li>参数说明 <ul><li>para&nbsp;轨迹复现配置参数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_traj_config(const&nbsp;TrajTrackPara *para);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//轨迹复现参数查看及设置&nbsp;&nbsp;
int&nbsp;example_traj_config()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;TrajTrackPara&nbsp;trajpar_read;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;TrajTrackPara&nbsp;trajpar_set;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前轨迹复现参数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_traj_config(&amp;trajpar_read);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;trajTrackPara&nbsp;is&nbsp;:n&nbsp;xyz&nbsp;interval:"&nbsp;&lt;&lt;&nbsp;trajpar_read.xyz_interval&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;rpy&nbsp;interval&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;trajpar_read.rpy_interval&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;vel:&nbsp;"&nbsp;&lt;&lt;&nbsp;trajpar_read.vel&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;acc:&nbsp;"&nbsp;&lt;&lt;&nbsp;trajpar_read.acc&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置当前轨迹复现参数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;trajpar_set.xyz_interval&nbsp;=&nbsp;0.01;&nbsp;trajpar_set.rpy_interval&nbsp;=&nbsp;0.01;&nbsp;trajpar_set.vel&nbsp;=&nbsp;10;&nbsp;trajpar_set.acc&nbsp;=&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_traj_config(&amp;trajpar_set);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前轨迹复现参数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_traj_config(&amp;trajpar_read);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;trajTrackPara&nbsp;is&nbsp;:n&nbsp;xyz&nbsp;interval:"&nbsp;&lt;&lt;&nbsp;trajpar_read.xyz_interval&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;rpy&nbsp;interval&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;trajpar_read.rpy_interval&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"&nbsp;vel:&nbsp;"&nbsp;&lt;&lt;&nbsp;trajpar_read.vel&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;acc:&nbsp;"&nbsp;&lt;&lt;&nbsp;trajpar_read.acc&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取轨迹复现配置参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0"><span>获取轨迹复现配置参数</span></a></h3><p>获取轨迹复现配置参数</p><ul><li>参数说明 <ul><li>para&nbsp;轨迹复现配置参数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_traj_config(TrajTrackPara *para);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="采集轨迹复现数据控制开关" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%87%87%E9%9B%86%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%8E%A7%E5%88%B6%E5%BC%80%E5%85%B3"><span>采集轨迹复现数据控制开关</span></a></h3><p>采集轨迹复现数据控制开关,该开关开启后需要启动 拖拽 才有轨迹文件生成。</p><ul><li>参数说明 <ul><li>mode&nbsp;选择TRUE时开始数据采集选择FALSE时结束数据采集</li><li>filename&nbsp;采集数据的存储文件名当filename为空指针时存储文件以当前日期命名</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;set_traj_sample_mode(const&nbsp;BOOL&nbsp;mode,char&nbsp;*filename);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//轨迹采集开关与状态查询&nbsp;&nbsp;
int&nbsp;example_traj_sample()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;BOOL&nbsp;samp_stu;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;name[20]&nbsp;=&nbsp;"testxx";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//开启轨迹复现数据采集开关&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_traj_sample_mode(TRUE,&nbsp;name);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询轨迹复现采集状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_traj_sample_status(&amp;samp_stu);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Sleep(10000);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_traj_sample_mode(FALSE,&nbsp;name);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="采集轨迹复现数据状态查询" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%87%87%E9%9B%86%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%8A%B6%E6%80%81%E6%9F%A5%E8%AF%A2"><span>采集轨迹复现数据状态查询</span></a></h3><p>采集轨迹复现数据状态查询</p><ul><li>参数说明 <ul><li>mode&nbsp;为TRUE时数据正在采集为FALSE时数据采集结束在数据采集状态时不允许再次开启数据采集开关</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_traj_sample_status(BOOL*&nbsp;sample_status);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="查询控制器中已经存在的轨迹复现数据的文件名" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9F%A5%E8%AF%A2%E6%8E%A7%E5%88%B6%E5%99%A8%E4%B8%AD%E5%B7%B2%E7%BB%8F%E5%AD%98%E5%9C%A8%E7%9A%84%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D"><span>查询控制器中已经存在的轨迹复现数据的文件名</span></a></h3><p>查询控制器中已经存在的轨迹复现数据的文件名</p><ul><li>参数说明 <ul><li>filename&nbsp;控制器中已经存在的轨迹复现数据的文件名</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;get_exist_traj_file_name(MultStrStorType *filename);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//查询控制器中已经存在的轨迹复现数据的文件名&nbsp;&nbsp;
int&nbsp;example_get_traj_existed_filename()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;MultStrStorType&nbsp;traj_file;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前轨迹文件名。&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_exist_traj_file_name(&amp;traj_file);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"file&nbsp;nums&nbsp;:"&nbsp;&lt;&lt;&nbsp;traj_file.len&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;&nbsp;i&lt;traj_file.len;i++)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;traj_file.name[i]&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="重命名轨迹复现数据的文件名" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%87%8D%E5%91%BD%E5%90%8D%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D"><span>重命名轨迹复现数据的文件名</span></a></h3><p>重命名轨迹复现数据的文件名</p><ul><li>参数说明 <ul><li>src&nbsp;原文件名</li><li>dest&nbsp;目标文件名文件名长度不能超过100个字符文件名不能为空目标文件名不支持中文</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;rename_traj_file_name(const&nbsp;char&nbsp;*src,const&nbsp;char&nbsp;*dest);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//重命名轨迹复现的数据文件名&nbsp;&nbsp;
int&nbsp;example_rename_traj_file_name()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;MultStrStorType&nbsp;traj_file;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;name_new[20]&nbsp;=&nbsp;"555";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前轨迹文件名。&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_exist_traj_file_name(&amp;traj_file);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"file&nbsp;nums&nbsp;:"&nbsp;&lt;&lt;&nbsp;traj_file.len&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;traj_file.len;&nbsp;i++)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;traj_file.name[i]&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
}
&nbsp;&nbsp;&nbsp;&nbsp;//重命名轨迹复现的数据文件名&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.rename_traj_file_name(traj_file.name[0],&nbsp;name_new);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//查询当前轨迹文件名。&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.get_exist_traj_file_name(&amp;traj_file);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"file&nbsp;nums&nbsp;:"&nbsp;&lt;&lt;&nbsp;traj_file.len&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;traj_file.len;&nbsp;i++)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;traj_file.name[i]&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
}
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="删除控制器中轨迹复现数据文件" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%88%A0%E9%99%A4%E6%8E%A7%E5%88%B6%E5%99%A8%E4%B8%AD%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6"><span>删除控制器中轨迹复现数据文件</span></a></h3><p>删除控制器中轨迹复现数据文件</p><ul><li>参数说明 <ul><li>filename&nbsp;要删除的文件的文件名,文件名为数据文件名字</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;remove_traj_file(const&nbsp;char *filename);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="控制器中轨迹复现数据文件生成控制器执行脚本" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%8E%A7%E5%88%B6%E5%99%A8%E4%B8%AD%E8%BD%A8%E8%BF%B9%E5%A4%8D%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E7%94%9F%E6%88%90%E6%8E%A7%E5%88%B6%E5%99%A8%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC"><span>控制器中轨迹复现数据文件生成控制器执行脚本</span></a></h3><p>控制器中轨迹复现数据文件生成控制器执行脚本</p><ul><li>参数说明 <ul><li>filename&nbsp;数据文件的文件名,文件名为数据文件名字,不带后缀</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;generate_traj_exe_file(const&nbsp;char *filename);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="机械臂伺服运动模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BC%BA%E6%9C%8D%E8%BF%90%E5%8A%A8%E6%A8%A1%E5%BC%8F"><span>机械臂伺服运动模式</span></a></h2><h3 id="机械臂伺服位置控制模式使能" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E4%BC%BA%E6%9C%8D%E4%BD%8D%E7%BD%AE%E6%8E%A7%E5%88%B6%E6%A8%A1%E5%BC%8F%E4%BD%BF%E8%83%BD"><span>机械臂伺服位置控制模式使能</span></a></h3><p>机械臂伺服位置控制模式使能。</p><ul><li>参数说明 <ul><li>enable&nbsp;&nbsp;TRUE为进入伺服位置控制模式FALSE表示退出该模式</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li><li>Ps:v19及之前的版本该接口为非阻塞指令V20之后该指令变为为阻塞指令。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_move_enable(BOOL&nbsp;enable);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂关节空间伺服模式运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8"><span>机械臂关节空间伺服模式运动</span></a></h3><p>机械臂关节空间位置控制模式</p><ul><li>参数说明 <ul><li>joint_pos&nbsp;机械臂关节运动目标位置</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动和连续运动</li></ul></li><li>返回值&nbsp;ERR_SUCC成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_j(const&nbsp;JointValue *joint_pos,&nbsp;MoveMode move_mode);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> //机械臂伺服关节运动&nbsp;&nbsp;
//使用该接口时需要先调用servo_move_enable(TRUE)开启伺服控制&nbsp;&nbsp;
//控制器的发送周期为8ms建议用户发送周期也为8ms网络环境较差的情况可以适当减小周期&nbsp;&nbsp;
//关节速度上限180rad/s&nbsp;&nbsp;
//本指令与joint_move有较大差别joint_move的插补由控制器进行servo_j需要预先进行轨迹规划。&nbsp;&nbsp;
#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
int&nbsp;main()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//TRUE为进入伺服模式&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.servo_move_enable(TRUE);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//定义并初始化关JointValue变量&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;joint_pos&nbsp;=&nbsp;{-0.001,&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;-0.001};&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;100;&nbsp;i++)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关节空间伺服运动其中INCR代表增量运动&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.servo_j(&amp;joint_pos,&nbsp;INCR);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//FALSE为退出伺服模式&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.servo_move_enable(FALSE);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂关节空间伺服模式运动扩展" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8%E6%89%A9%E5%B1%95"><span>机械臂关节空间伺服模式运动扩展</span></a></h3><p>机械臂关节空间位置控制模式增加了周期的调节性可以将周期调整为8ms的倍数</p><ul><li>参数说明 <ul><li>joint_pos&nbsp;机械臂关节运动目标位置</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动</li></ul></li><li><ul><li>step_num&nbsp;倍分周期servo_j运动周期为step_num*8ms其中step_num&gt;=1</li></ul></li><li>返回值&nbsp;ERR_SUCC成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_j(const&nbsp;JointValue *joint_pos,&nbsp;MoveMode&nbsp;move_mode,&nbsp;unsigned&nbsp;int&nbsp;step_num);&nbsp;
```&nbsp;
### 机械臂笛卡尔空间伺服模式运动
机械臂笛卡尔空间位置控制模式&nbsp;&nbsp;
* 参数说明&nbsp;
* cartesian_pose&nbsp;机械臂笛卡尔空间运动目标位置&nbsp;
* move_mode&nbsp;指定运动模式:增量运动、绝对运动和连续运动&nbsp;
* 返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败&nbsp;
```c++
errno_t&nbsp;&nbsp;servo_p(const&nbsp;CartesianPose *cartesian_pose,&nbsp;MoveMode move_mode);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> //机械臂伺服笛卡尔空间运动&nbsp;&nbsp;
//使用该接口时需要先调用servo_move_enable(TRUE)开启伺服控制&nbsp;&nbsp;
//控制器的发送周期为8ms建议用户发送周期也为8ms网络环境较差的情况可以适当减小周期&nbsp;&nbsp;
//关节速度上限180&nbsp;rad/s笛卡尔空间没有相对直观的限制但应满足该关节速度限制&nbsp;&nbsp;
//本指令与linear_move有较大差别linear_move的插补由控制器进行servo_p需要预先进行轨迹规划。&nbsp;&nbsp;
#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
&nbsp;&nbsp;
int&nbsp;main()//机械臂伺服笛卡尔空间运动&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.152");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//TRUE为进入伺服模式&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.servo_move_enable(TRUE);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//定义并初始化关CartesianPose变量&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;cart;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;cart.tran.x&nbsp;=&nbsp;0;&nbsp;cart.tran.y&nbsp;=&nbsp;1;&nbsp;cart.tran.z&nbsp;=&nbsp;0;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;cart.rpy.rx&nbsp;=&nbsp;0;&nbsp;cart.rpy.ry&nbsp;=&nbsp;0;&nbsp;cart.rpy.rz&nbsp;=&nbsp;0;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;100;&nbsp;i++)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//笛卡尔空间伺服运动其中INCR代表增量运动&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.servo_p(&amp;cart,&nbsp;INCR);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//FALSE为退出伺服模式&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.servo_move_enable(FALSE);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂笛卡尔空间伺服模式运动扩展" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8%E6%89%A9%E5%B1%95"><span>机械臂笛卡尔空间伺服模式运动扩展</span></a></h3><p>机械臂笛卡尔空间位置控制模式增加了周期的调节性可以将周期调整为8ms的倍数</p><ul><li>参数说明 <ul><li>cartesian_pose&nbsp;机械臂笛卡尔空间运动目标位置</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动</li><li>step_num&nbsp;倍分周期servo_p运动周期为step_num*8ms其中step_num&gt;=1</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_p(const&nbsp;CartesianPose *cartesian_pose,&nbsp;MoveMode&nbsp;move_mode,&nbsp;unsigned&nbsp;int&nbsp;step_num);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂servo模式下禁用滤波器" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%A6%81%E7%94%A8%E6%BB%A4%E6%B3%A2%E5%99%A8"><span>机械臂SERVO模式下禁用滤波器</span></a></h3><p>SERVO模式下不使用滤波器,该指令在SERVO模式下不可设置退出SERVO后可设置</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_move_use_none_filter();&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
//servo模式禁用滤波器&nbsp;&nbsp;
int&nbsp;example_servo_use_none_filter()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp; &nbsp;int ret&nbsp;&nbsp;
&nbsp; &nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.servo_move_use_none_filter();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂servo模式下关节空间一阶低通滤波" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%B8%80%E9%98%B6%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2"><span>机械臂SERVO模式下关节空间一阶低通滤波</span></a></h3><p>SERVO模式下切换到关节空间一阶低通滤波该指令在SERVO模式下不可设置退出SERVO后可设置</p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_move_use_joint_LPF(double&nbsp;cutoffFreq);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>参数说明 <ul><li>cutoffFreq&nbsp;一阶低通滤波器截止频率</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//servo模式下关节空间一阶低通滤波&nbsp;&nbsp;
int&nbsp;example_servo_use_joint_LPF()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//servo模式下关节空间一阶低通滤波,截止频率0.5Hz&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.servo_move_use_joint_LPF(0.5);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂servo模式下关节空间非线性滤波" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E9%9D%9E%E7%BA%BF%E6%80%A7%E6%BB%A4%E6%B3%A2"><span>机械臂SERVO模式下关节空间非线性滤波</span></a></h3><p>SERVO模式下切换到关节空间非线性滤波该指令在SERVO模式下不可设置退出SERVO后可设置</p><ul><li>参数说明 <ul><li>max_vr&nbsp;笛卡尔空间姿态变化速度的速度上限值(绝对值)°/s</li><li>max_ar&nbsp;笛卡尔空间姿态变化速度的加速度上限值(绝对值)°/s^2</li><li>max_jr&nbsp;笛卡尔空间姿态变化速度的加加速度上限值(绝对值)°/s^3</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_move_use_joint_NLF(double&nbsp;max_vr,&nbsp;double&nbsp;max_ar,&nbsp;double&nbsp;max_jr);&nbsp;
```&nbsp;
**代码示例:**
```c++
#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//servo模式下关节空间非线性滤波&nbsp;&nbsp;
int&nbsp;example_servo_use_joint_NLF()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//servo模式下关节空间非线性滤波&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.servo_move_use_joint_NLF(2,2,4);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂servo模式下笛卡尔空间非线性滤波" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A9%BA%E9%97%B4%E9%9D%9E%E7%BA%BF%E6%80%A7%E6%BB%A4%E6%B3%A2"><span>机械臂SERVO模式下笛卡尔空间非线性滤波</span></a></h3><p>SERVO模式下切换到笛卡尔空间非线性滤波,该指令在SERVO模式下不可设置退出SERVO后可设置</p><ul><li>参数说明 <ul><li>max_vp&nbsp;笛卡尔空间下移动指令速度的上限值绝对值。单位mm/s</li><li>max_ap&nbsp;笛卡尔空间下移动指令加速度的上限值绝对值。单位mm/s^2</li><li>max_jp&nbsp;笛卡尔空间下移动指令加加速度的上限值绝对值单位mm/s^3</li><li>max_vr&nbsp;笛卡尔空间姿态变化速度的速度上限值(绝对值)°/s</li><li>max_ar&nbsp;笛卡尔空间姿态变化速度的加速度上限值(绝对值)°/s^2</li><li>max_jr&nbsp;笛卡尔空间姿态变化速度的加加速度上限值(绝对值)°/s^3</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_move_use_carte_NLF(double&nbsp;max_vp,&nbsp;double&nbsp;max_ap,&nbsp;double&nbsp;max_jp,&nbsp;double&nbsp;max_vr,&nbsp;double&nbsp;max_ar,&nbsp;double&nbsp;max_jr);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//servo模式下笛卡尔空间非线性滤波&nbsp;&nbsp;
int&nbsp;example_servo_use_carte_NLF()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp; &nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//servo模式下笛卡尔空间非线性滤波&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.servo_move_use_carte_NLF(2,&nbsp;2,&nbsp;4,&nbsp;2,&nbsp;2,&nbsp;4);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂servo模式下关节空间多阶均值滤波" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E5%A4%9A%E9%98%B6%E5%9D%87%E5%80%BC%E6%BB%A4%E6%B3%A2"><span>机械臂SERVO模式下关节空间多阶均值滤波</span></a></h3><p>SERVO模式下切换到关节空间多阶均值滤波器,该指令在SERVO模式下不可设置退出SERVO后可设置</p><ul><li>参数说明 <ul><li>max_buf&nbsp;均值滤波器缓冲区的大小</li><li>kp&nbsp;加速度滤波系数</li><li>kv&nbsp;速度滤波系数</li><li>ka&nbsp;位置滤波系数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;servo_move_use_joint_MMF(int&nbsp;max_buf,&nbsp;double&nbsp;kp,&nbsp;double&nbsp;kv,&nbsp;double&nbsp;ka);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
#define&nbsp;PI&nbsp;3.1415926&nbsp;
//servo模式下关节空间多阶均值滤波&nbsp;&nbsp;
int&nbsp;example_servo_use_joint_MMF()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp; int ret&nbsp;&nbsp;
&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp; &nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//servo模式下关节空间多阶均值滤波&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.servo_move_use_joint_MMF(20,&nbsp;0.2,&nbsp;0.4,&nbsp;0.2);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂servo模式下速度前瞻参数设置" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82servo%E6%A8%A1%E5%BC%8F%E4%B8%8B%E9%80%9F%E5%BA%A6%E5%89%8D%E7%9E%BB%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE"><span>机械臂SERVO模式下速度前瞻参数设置</span></a></h3><p>SERVO模式下关节空间多阶均值滤波器,该指令在SERVO模式下不可设置退出SERVO后可设置</p><ul><li>参数说明 <ul><li>max_buf&nbsp;均值滤波器缓冲区的大小</li><li>kp&nbsp;加速度滤波系数</li><li>kv&nbsp;速度滤波系数</li><li>ka&nbsp;位置滤波系数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t servo_speed_foresight(int max_buf, double kp);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//servo模式下速度前瞻参数设置&nbsp;&nbsp;
int&nbsp;example_speed_foresight()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp; int ret&nbsp;&nbsp;
&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp; &nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//servo模式下关节空间多阶均值滤波&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.servo_speed_foresight(200,&nbsp;2);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="机械臂edg-external-data-guider-功能" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg-external-data-guider-%E5%8A%9F%E8%83%BD"><span>机械臂EDGExternal Data Guider功能</span></a></h2><p>目前只能通过C++语言和Python语言使用该功能该功能使用UDPUser Datagram Protocol通讯</p><h3 id="机械臂edg使能" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg%E4%BD%BF%E8%83%BD"><span>机械臂EDG使能</span></a></h3><p>机械臂EDG功能使能使能后才能使用EDG相关接口</p><ul><li>参数说明 <ul><li>en&nbsp;&nbsp;使能开关true为开启EDG功能false表示退出该功能</li><li>edg_stat_ip&nbsp;&nbsp;sdk客户端IP地址</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败&nbsp; Ps: 使能后不能调用servo_j和servo_p必须调用edg_init(false)关闭EDG功能后才能调用servo_j和servo_p</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t edg_init(BOOL en = true, std::string edg_stat_ip = "0.0.0.0");
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂高速获取edg反馈数据" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E9%AB%98%E9%80%9F%E8%8E%B7%E5%8F%96edg%E5%8F%8D%E9%A6%88%E6%95%B0%E6%8D%AE"><span>机械臂高速获取EDG反馈数据</span></a></h3><p>机械臂高速获取EDG反馈数据</p><ul><li>参数说明 <ul><li>edg_state&nbsp;EDG反馈数据包括关节位置、速度、力矩、笛卡尔位置、传感器数据</li><li>robot_index&nbsp;使用默认值,无须传参</li></ul></li><li>返回值&nbsp;ERR_SUCC成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t edg_get_stat(EDGState *edg_state, unsigned char robot_index = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂获取edg反馈数据发出时间戳" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%8E%B7%E5%8F%96edg%E5%8F%8D%E9%A6%88%E6%95%B0%E6%8D%AE%E5%8F%91%E5%87%BA%E6%97%B6%E9%97%B4%E6%88%B3"><span>机械臂获取EDG反馈数据发出时间戳</span></a></h3><p>机械臂获取EDG反馈数据发出时间戳</p><ul><li>参数说明 <ul><li>details 时间戳 <ul><li>details[0]秒</li><li>details[1]纳秒</li><li>details[3]时间戳计数</li></ul></li></ul></li><li>返回值&nbsp;ERR_SUCC成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t edg_stat_details(unsigned long int details[3]);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂edg关节空间伺服模式运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg%E5%85%B3%E8%8A%82%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8"><span>机械臂EDG关节空间伺服模式运动</span></a></h3><p>机械臂EDG关节空间位置控制模式</p><ul><li>参数说明 <ul><li>joint_pos&nbsp;机械臂关节运动目标位置</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动</li><li>step_num&nbsp;倍分周期edg_servo_j运动周期为step_num*8ms其中step_num&gt;=1</li><li>robot_index&nbsp;使用默认值,无须传参</li></ul></li><li>返回值&nbsp;ERR_SUCC成功&nbsp;其他失败&nbsp;&nbsp;&nbsp; Ps: 该接口相比于原先的servo_j接口实时控制的性能更好</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t edg_servo_j(const JointValue *joint_pos, MoveMode move_mode, unsigned int step_num = 1, unsigned char robot_index = 0);
```&nbsp;
**代码示例:**
```c++
#include "JAKAZuRobot.h"
#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
#include &lt;string.h&gt;
#include &lt;pthread.h&gt;
#include "timespec.h"
#include &lt;iostream&gt;
#include "JAKAZuRobot.h"
#include &lt;time.h&gt;
#include &lt;thread&gt;
#include &lt;chrono&gt;
using namespace std;
#define rad2deg(x) ((x)*180.0/M_PI)
#define deg2rad(x) ((x)*M_PI/180.0)
JAKAZuRobot robot;
errno_t ret;
void check_return(int ret, const std::string&amp; func_name) {
if (ret != 0) {
std::cout &lt;&lt; func_name &lt;&lt; " failed, return value: " &lt;&lt; ret &lt;&lt; std::endl;
}
}
&nbsp;&nbsp;
void edg_stat_time_test()
{
robot.clear_error();
ret = robot.servo_move_enable(0);
check_return(ret, "servo_move_enable");
ret = robot.edg_init(false);
check_return(ret, "edg_init");
ret = robot.servo_move_use_none_filter();
check_return(ret, "servo_move_use_none_filter");
JointValue jpos = {0, deg2rad(90), deg2rad(-90), deg2rad(90), deg2rad(90), 0};
ret = robot.joint_move(&amp;jpos, ABS, TRUE, 10);
check_return(ret, "joint_move");
JointValue jpos_cmd;
memset(&amp;jpos_cmd,0,sizeof(jpos_cmd));
sched_param sch;
sch.sched_priority = 90;
pthread_setschedparam(pthread_self(), SCHED_FIFO, &amp;sch);
timespec next;
ret = robot.edg_init(true,"192.168.75.141");
check_return(ret, "edg_init");
ret = robot.servo_move_enable(1); //必须先调用edg_init后再调用servo_move_enable
check_return(ret, "servo_move_enable");
clock_gettime(CLOCK_REALTIME, &amp;next);
for(int i = 0;i&lt;2000;i++)
{
timespec cc;
timespec max_wkup_time;
clock_gettime(CLOCK_REALTIME, &amp;cc);
EDGState edgdata;
CartesianPose cpos;
int64_t recv_time = 0;
double t = (i - 0)/5000.0;
double kk = 32;
jpos_cmd.jVal[0] = sin(kk*t)*deg2rad(30.0) + jpos.jVal[0];
jpos_cmd.jVal[1] = -sin(kk*t)*deg2rad(20.0) + jpos.jVal[1];
jpos_cmd.jVal[2] = jpos.jVal[2];
jpos_cmd.jVal[3] = -sin(kk*t)*deg2rad(10.0) + jpos.jVal[3];
jpos_cmd.jVal[4] = jpos.jVal[4];
jpos_cmd.jVal[5] = jpos.jVal[5];
ret = robot.edg_servo_j(&amp;jpos_cmd,MoveMode::ABS);
check_return(ret, "edg_servo_j");
ret = robot.edg_get_stat(&amp;edgdata);
check_return(ret, "edg_get_stat");
cout &lt;&lt; "jointVal:" &lt;&lt; edgdata.jointVal.jVal[0] &lt;&lt; "," &lt;&lt; edgdata.jointVal.jVal[1] &lt;&lt; "," &lt;&lt; edgdata.jointVal.jVal[2]
&lt;&lt; "," &lt;&lt; edgdata.jointVal.jVal[3] &lt;&lt; "," &lt;&lt; edgdata.jointVal.jVal[4] &lt;&lt; "," &lt;&lt; edgdata.jointVal.jVal[5] &lt;&lt; endl;
cout &lt;&lt; "jvel:" &lt;&lt; edgdata.jointVel.jVel[0] &lt;&lt; "," &lt;&lt; edgdata.jointVel.jVel[1] &lt;&lt; "," &lt;&lt; edgdata.jointVel.jVel[2]
&lt;&lt; "," &lt;&lt; edgdata.jointVel.jVel[3] &lt;&lt; "," &lt;&lt; edgdata.jointVel.jVel[4] &lt;&lt; "," &lt;&lt; edgdata.jointVel.jVel[5] &lt;&lt; endl;
cout &lt;&lt; "jtorque:" &lt;&lt; edgdata.jointTorq.jtorq[0] &lt;&lt; "," &lt;&lt; edgdata.jointTorq.jtorq[1] &lt;&lt; "," &lt;&lt; edgdata.jointTorq.jtorq[2]
&lt;&lt; "," &lt;&lt; edgdata.jointTorq.jtorq[3] &lt;&lt; "," &lt;&lt; edgdata.jointTorq.jtorq[4] &lt;&lt; "," &lt;&lt; edgdata.jointTorq.jtorq[5] &lt;&lt; endl;
cout &lt;&lt; "cpos:" &lt;&lt; edgdata.cartpose.tran.x &lt;&lt; "," &lt;&lt; edgdata.cartpose.tran.y &lt;&lt; "," &lt;&lt; edgdata.cartpose.tran.z
&lt;&lt; "," &lt;&lt; edgdata.cartpose.rpy.rx &lt;&lt; "," &lt;&lt; edgdata.cartpose.rpy.ry &lt;&lt; "," &lt;&lt; edgdata.cartpose.rpy.rz &lt;&lt; endl;
cout &lt;&lt; "sensor:" &lt;&lt; edgdata.torqSensor.fx &lt;&lt; "," &lt;&lt; edgdata.torqSensor.fy &lt;&lt; "," &lt;&lt; edgdata.torqSensor.fz
&lt;&lt; "," &lt;&lt; edgdata.torqSensor.tx &lt;&lt; "," &lt;&lt; edgdata.torqSensor.ty &lt;&lt; "," &lt;&lt; edgdata.torqSensor.tz &lt;&lt; endl;
unsigned long int detail[3];
ret = robot.edg_stat_details(detail);
check_return(ret, "edg_stat_details");
cout &lt;&lt; "detail:" &lt;&lt; detail[0] &lt;&lt; "," &lt;&lt; detail[1] &lt;&lt; "," &lt;&lt; detail[2] &lt;&lt; endl;
//等待下一个周期
timespec dt;
dt.tv_nsec = 8000000;
dt.tv_sec = 0;
next = timespec_add(next, dt);
clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &amp;next, NULL);
}
ret = robot.edg_init(false);
check_return(ret, "edg_init");
ret = robot.servo_move_enable(0);
check_return(ret, "servo_move_enable");
}
int main()
{
robot.login_in("172.30.95.84",false);
robot.power_on();
robot.enable_robot();
std::this_thread::sleep_for(std::chrono::seconds(3));
edg_servoj_test();
robot.edg_init(false);
robot.servo_move_enable(0);
robot.servo_move_use_none_filter();
robot.login_out();
return 0;
}
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂edg笛卡尔空间伺服模式运动" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82edg%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A9%BA%E9%97%B4%E4%BC%BA%E6%9C%8D%E6%A8%A1%E5%BC%8F%E8%BF%90%E5%8A%A8"><span>机械臂EDG笛卡尔空间伺服模式运动</span></a></h3><p>机械臂EDG笛卡尔空间位置控制模式</p><ul><li>参数说明 <ul><li>cartesian_pose&nbsp;机械臂笛卡尔空间运动目标位置</li><li>move_mode&nbsp;指定运动模式:增量运动、绝对运动和连续运动</li><li>step_num&nbsp;倍分周期edg_servo_p运动周期为step_num*8ms其中step_num&gt;=1</li><li>robot_index&nbsp;使用默认值,无须传参</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败&nbsp; Ps: 该接口相比于原先的servo_p接口实时控制的性能更好</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t edg_servo_p(const CartesianPose *cartesian_pose, MoveMode move_mode, unsigned int step_num = 1, unsigned char robot_index = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>#include "JAKAZuRobot.h"
#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
#include &lt;string.h&gt;
#include &lt;pthread.h&gt;
#include "timespec.h"
#include &lt;iostream&gt;
#include "JAKAZuRobot.h"
#include &lt;time.h&gt;
#include &lt;thread&gt;
#include &lt;chrono&gt;
using namespace std;
#define rad2deg(x) ((x)*180.0/M_PI)
#define deg2rad(x) ((x)*M_PI/180.0)
JAKAZuRobot robot;
errno_t ret;
void check_return(int ret, const std::string&amp; func_name) {
if (ret != 0) {
std::cout &lt;&lt; func_name &lt;&lt; " failed, return value: " &lt;&lt; ret &lt;&lt; std::endl;
}
}
&nbsp;&nbsp;
void edg_servop_test()
{
robot.clear_error();
ret = robot.servo_move_enable(0);
check_return(ret, "servo_move_enable");
ret = robot.edg_init(false);
check_return(ret, "edg_init");
ret = robot.servo_move_use_none_filter();
check_return(ret, "servo_move_use_none_filter");
JointValue jpos = {0, deg2rad(90), deg2rad(-90), deg2rad(90), deg2rad(90), 0};
ret = robot.joint_move(&amp;jpos, ABS, TRUE, 10);
check_return(ret, "joint_move");
CartesianPose cpos_init, cpos_cmd;
robot.kine_forward(&amp;jpos,&amp;cpos_init);
sched_param sch;
sch.sched_priority = 90;
pthread_setschedparam(pthread_self(), SCHED_FIFO, &amp;sch);
ret = robot.edg_init(true,"192.168.75.141");
check_return(ret, "edg_init");
ret = robot.servo_move_enable(1);
check_return(ret, "servo_move_enable");
timespec next;
clock_gettime(CLOCK_REALTIME, &amp;next);
for(int i=0;i&lt;4000;i++)
{
double coefficient = sin(i/200.0);
double ori_step = deg2rad(20.0) * coefficient;
double y_step = 100.0 * coefficient;
double x_step = 100.0 * coefficient;
cpos_cmd.tran.x = cpos_init.tran.x + x_step;
cpos_cmd.tran.y = cpos_init.tran.y + y_step;
cpos_cmd.tran.z = cpos_init.tran.z;
cpos_cmd.rpy.rx = cpos_init.rpy.rx + ori_step;
cpos_cmd.rpy.ry = cpos_init.rpy.ry + ori_step;
cpos_cmd.rpy.rz = cpos_init.rpy.rz + ori_step;
ret = robot.edg_servo_p(&amp;cpos_cmd,MoveMode::ABS);
check_return(ret, "edg_servo_p");
timespec dt;
dt.tv_nsec = 8000000;
dt.tv_sec = 0;
next = timespec_add(next, dt);
clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &amp;next, NULL);
}
ret = robot.edg_init(false);
check_return(ret, "edg_init");
ret = robot.servo_move_enable(0);
check_return(ret, "servo_move_enable");
}
int main()
{
robot.login_in("172.30.95.84",false);
robot.power_on();
robot.enable_robot();
std::this_thread::sleep_for(std::chrono::seconds(3));
edg_servop_test();
robot.edg_init(false);
robot.servo_move_enable(0);
robot.servo_move_use_none_filter();
robot.login_out();
return 0;
}
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="机械臂运动学" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E8%BF%90%E5%8A%A8%E5%AD%A6"><span>机械臂运动学</span></a></h2><h3 id="机械臂求解逆解" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E9%80%86%E8%A7%A3"><span>机械臂求解逆解</span></a></h3><p>计算指定位姿在当前工具、当前安装角度以及当前用户坐标系设置下的逆解</p><ul><li>参数说明 <ul><li>ref_pos&nbsp;逆解计算用的参考关节空间位置</li><li>cartesian_pose&nbsp;笛卡尔空间位姿值</li><li>joint_pos&nbsp;计算成功时关节空间位置计算结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;kine_inverse(const&nbsp;JointValue *ref_pos,&nbsp;const&nbsp;CartesianPose *cartesian_pose,&nbsp;JointValue *joint_pos);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//&nbsp;机械臂逆解&nbsp;已知tcp_pos,求joint_pos&nbsp;&nbsp;
int&nbsp;example_kine_inverse()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp; &nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化参考点&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;ref_jpos&nbsp;=&nbsp;{&nbsp;0.558,&nbsp;0.872,&nbsp;0.872&nbsp;,&nbsp;0.349,&nbsp;0.191,&nbsp;0.191&nbsp;};&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化笛卡尔空间点坐标&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;tcp_pos;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;tcp_pos.tran.x&nbsp;=&nbsp;243.568;&nbsp;tcp_pos.tran.y&nbsp;=&nbsp;164.064;&nbsp;tcp_pos.tran.z&nbsp;=&nbsp;742.002;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;tcp_pos.rpy.rx&nbsp;=&nbsp;-1.81826;&nbsp;tcp_pos.rpy.ry&nbsp;=&nbsp;-0.834253;&nbsp;&nbsp;tcp_pos.rpy.rz&nbsp;=&nbsp;-2.30243;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化返回值&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;joint_pos&nbsp;=&nbsp;{&nbsp;0,0,0,0,0,0&nbsp;};&nbsp;;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
//求逆解&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.kine_inverse(&amp;ref_jpos,&nbsp;&amp;tcp_pos,&nbsp;&amp;joint_pos);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;6;&nbsp;i++)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"joint&nbsp;["&nbsp;&lt;&lt;&nbsp;i&nbsp;+&nbsp;1&nbsp;&lt;&lt;&nbsp;"]&nbsp;is&nbsp;:"&nbsp;&lt;&lt;&nbsp;joint_pos.jVal[i]&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂求解逆解拓展" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E9%80%86%E8%A7%A3%E6%8B%93%E5%B1%95"><span>机械臂求解逆解拓展</span></a></h3><p>只适配控制器版本1.7.2 计算指定位姿在指定工具、当前安装角度以及指定用户坐标系设置下的逆解</p><ul><li>参数说明 <ul><li>ref_pos&nbsp;逆解计算用的参考关节空间位置</li><li>cartesian_pose&nbsp;笛卡尔空间位姿值</li><li>joint_pos&nbsp;计算成功时关节空间位置计算结果</li><li>tool 指定的工具坐标系,未指定则使用当前默认工具坐标系</li><li>userFrame 指定的用户坐标系,未指定则使用当前默认的用户坐标系</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t kine_inverse(const JointValue *ref_pos, const CartesianPose *cartesian_pose, JointValue *joint_pos, const CartesianPose* tool, const CartesianPose* userFrame);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="机械臂求解正解" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E6%AD%A3%E8%A7%A3"><span>机械臂求解正解</span></a></h3><p>计算指定关节位置在当前工具、当前安装角度以及当前用户坐标系设置下的位姿值</p><ul><li>参数说明 <ul><li>joint_pos&nbsp;关节空间位置</li><li>cartesian_pose&nbsp;笛卡尔空间位姿计算结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;kine_forward(const&nbsp;JointValue *joint_pos,&nbsp;CartesianPose&nbsp;*cartesian_pose);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//&nbsp;4.55机械臂正解&nbsp;已知joint_pos,求tcp_pos&nbsp;&nbsp;
int&nbsp;example_kine_forward()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
//初始化返回值&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;CartesianPose&nbsp;tcp_pos;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
//初始化关节矩阵&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;JointValue&nbsp;joint_pos&nbsp;=&nbsp;{&nbsp;0.558,&nbsp;0.872,&nbsp;0.872&nbsp;,&nbsp;0.349,&nbsp;0.191,&nbsp;0.191&nbsp;};&nbsp;&nbsp;
//求正解&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.kine_forward(&amp;joint_pos,&nbsp;&amp;tcp_pos);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"tcp_pos&nbsp;is&nbsp;:\n&nbsp;x:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.tran.x&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;y:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.tran.y&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;z:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.tran.z&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"rx:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.rpy.rx&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;ry:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.rpy.ry&nbsp;&lt;&lt;&nbsp;"&nbsp;&nbsp;rz:&nbsp;"&nbsp;&lt;&lt;&nbsp;tcp_pos.rpy.rz&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="机械臂求解正解拓展" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E6%A2%B0%E8%87%82%E6%B1%82%E8%A7%A3%E6%AD%A3%E8%A7%A3%E6%8B%93%E5%B1%95"><span>机械臂求解正解拓展</span></a></h3><p>只适配控制器版本1.7.2 计算指定关节位置在指定工具、当前安装角度以及指定用户坐标系设置下的位姿值</p><ul><li>参数说明 <ul><li>joint_pos&nbsp;关节空间位置</li><li>cartesian_pose&nbsp;笛卡尔空间位姿计算结果</li><li>tool 指定的工具坐标系,未指定则使用当前默认工具坐标系</li><li>userFrame 指定的用户坐标系,未指定则使用当前默认的用户坐标系</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t kine_forward(const JointValue *joint_pos, CartesianPose *cartesian_pose, const CartesianPose* tool, const CartesianPose* userFrame);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="欧拉角到旋转矩阵的转换" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%AC%A7%E6%8B%89%E8%A7%92%E5%88%B0%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BD%AC%E6%8D%A2"><span>欧拉角到旋转矩阵的转换</span></a></h3><p>欧拉角到旋转矩阵的转换</p><ul><li>参数说明 <ul><li>rpy&nbsp;待转换的欧拉角数据</li><li>rot_matrix&nbsp;转换后的旋转矩阵</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;rpy_to_rot_matrix(const&nbsp;Rpy *rpy,&nbsp;RotMatrix *rot_matrix);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//&nbsp;4.56欧拉角到旋转矩阵&nbsp;&nbsp;
int&nbsp;example_rpy_to_rot_matrix()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp; int ret&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化旋转矩阵&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Rpy&nbsp;rpy;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rpy.rx&nbsp;=&nbsp;-1.81826;&nbsp;rpy.ry&nbsp;=&nbsp;-0.834253;&nbsp;&nbsp;rpy.rz&nbsp;=&nbsp;-2.30243;&nbsp;&nbsp;
//初始化返回值&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;RotMatrix&nbsp;rot_matrix;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
//欧拉角变换成旋转矩阵&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.rpy_to_rot_matrix(&amp;rpy,&nbsp;&amp;rot_matrix);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;"eul2rotm"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%f&nbsp;%f&nbsp;%f",&nbsp;rot_matrix.x.x,&nbsp;rot_matrix.y.x,&nbsp;rot_matrix.z.x);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%f&nbsp;%f&nbsp;%f",&nbsp;rot_matrix.x.y,&nbsp;rot_matrix.y.y,&nbsp;rot_matrix.z.y);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%f&nbsp;%f&nbsp;%f",&nbsp;rot_matrix.x.z,&nbsp;rot_matrix.y.z,&nbsp;rot_matrix.z.z);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="旋转矩阵到欧拉角的转换" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%88%B0%E6%AC%A7%E6%8B%89%E8%A7%92%E7%9A%84%E8%BD%AC%E6%8D%A2"><span>旋转矩阵到欧拉角的转换</span></a></h3><p>旋转矩阵到欧拉角的转换</p><ul><li>参数说明 <ul><li>rot_matrix&nbsp;待转换的旋转矩阵数据</li><li>rpy&nbsp;转换后的RPY欧拉角结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;rot_matrix_to_rpy(const&nbsp;RotMatrix *rot_matrix,&nbsp;Rpy *rpy);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//&nbsp;4.57旋转矩阵---&gt;欧拉角&nbsp;&nbsp;
int&nbsp;example_rot_matrix_to_rpy()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp; &nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化欧拉角&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Rpy&nbsp;rpy;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化旋转矩阵&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;RotMatrix&nbsp;rot_matrix;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rot_matrix.x.x&nbsp;=&nbsp;-0.4488,&nbsp;rot_matrix.y.x&nbsp;=&nbsp;-0.4998,&nbsp;rot_matrix.z.x&nbsp;=&nbsp;0.7408;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rot_matrix.x.y&nbsp;=&nbsp;-0.6621,&nbsp;rot_matrix.y.y&nbsp;=&nbsp;-0.3708,&nbsp;rot_matrix.z.y&nbsp;=&nbsp;-0.6513;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rot_matrix.x.z&nbsp;=&nbsp;0.6002,&nbsp;rot_matrix.y.z&nbsp;=&nbsp;-0.7828,&nbsp;rot_matrix.z.z&nbsp;=&nbsp;-0.1645;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.rot_matrix_to_rpy(&amp;rot_matrix,&nbsp;&amp;rpy);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;"rotm2eul:"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%f&nbsp;%f&nbsp;%f&nbsp;",&nbsp;rpy.rx,&nbsp;rpy.ry,&nbsp;rpy.rz);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="四元数到旋转矩阵的转换" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%9B%9B%E5%85%83%E6%95%B0%E5%88%B0%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BD%AC%E6%8D%A2"><span>四元数到旋转矩阵的转换</span></a></h3><p>四元数到旋转矩阵的转换</p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;quaternion_to_rot_matrix(const&nbsp;Quaternion *quaternion,&nbsp;RotMatrix *rot_matrix);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>参数说明 <ul><li>quaternion&nbsp;待转换的四元数数据</li><li>rot_matrix&nbsp;转换后的旋转矩阵结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//&nbsp;4.58四元数--&gt;旋转矩阵&nbsp;&nbsp;
int&nbsp;example_quaternion_to_rot_matrix()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化四元数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Quaternion&nbsp;quat;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;quat.s&nbsp;=&nbsp;0.0629;&nbsp;&nbsp;quat.x&nbsp;=&nbsp;0.522886;&nbsp;quat.y&nbsp;=&nbsp;-0.5592;&nbsp;&nbsp;quat.z&nbsp;=&nbsp;0.6453;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化旋转矩阵&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;RotMatrix&nbsp;rot_matrix;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.quaternion_to_rot_matrix(&amp;quat,&nbsp;&amp;rot_matrix);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;"quatl2rotm:"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%f&nbsp;%f&nbsp;%f\n",&nbsp;rot_matrix.x.x,&nbsp;rot_matrix.y.x,&nbsp;rot_matrix.z.x);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%f&nbsp;%f&nbsp;%f\n",&nbsp;rot_matrix.x.y,&nbsp;rot_matrix.y.y,&nbsp;rot_matrix.z.y);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%f&nbsp;%f&nbsp;%f\n",&nbsp;rot_matrix.x.z,&nbsp;rot_matrix.y.z,&nbsp;rot_matrix.z.z);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取当前连接机械臂的dh参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E8%BF%9E%E6%8E%A5%E6%9C%BA%E6%A2%B0%E8%87%82%E7%9A%84dh%E5%8F%82%E6%95%B0"><span>获取当前连接机械臂的DH参数</span></a></h3><p>获取机器人DH参数</p><ul><li>参数说明 <ul><li>dhParam&nbsp;DH参数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_dh_param(const&nbsp;JKHD&nbsp;*handle,&nbsp;DHParam&nbsp;*dhParam);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="旋转矩阵到四元数的转换" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%88%B0%E5%9B%9B%E5%85%83%E6%95%B0%E7%9A%84%E8%BD%AC%E6%8D%A2"><span>旋转矩阵到四元数的转换</span></a></h3><p>旋转矩阵到四元数的转换</p><ul><li>参数说明 <ul><li>rot_matrix&nbsp;待转换的旋转矩阵</li><li>quaternion&nbsp;转换后的四元数结果</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;&nbsp;rot_matrix_to_quaternion(const&nbsp;RotMatrix *rot_matrix,&nbsp;Quaternion *quaternion);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//&nbsp;4.59旋转矩阵---&gt;四元数&nbsp;&nbsp;
int&nbsp;example_rot_matrix_to_quaternion()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化四元数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Quaternion&nbsp;quat;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//初始化旋转矩阵&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;RotMatrix&nbsp;rot_matrix;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rot_matrix.x.x&nbsp;=&nbsp;-0.4488774,&nbsp;rot_matrix.y.x&nbsp;=&nbsp;-0.499824,&nbsp;rot_matrix.z.x&nbsp;=&nbsp;0.740795;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rot_matrix.x.y&nbsp;=&nbsp;-0.662098,&nbsp;rot_matrix.y.y&nbsp;=&nbsp;-0.370777,&nbsp;rot_matrix.z.y&nbsp;=&nbsp;-0.651268;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;rot_matrix.x.z&nbsp;=&nbsp;0.600190,&nbsp;rot_matrix.y.z&nbsp;=&nbsp;-0.782751,&nbsp;rot_matrix.z.z&nbsp;=&nbsp;-0.164538;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.rot_matrix_to_quaternion(&amp;rot_matrix,&nbsp;&amp;quat);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;"rotm2quat:"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%lf&nbsp;%lf&nbsp;%lf&nbsp;%lf&nbsp;\n",&nbsp;quat.s,&nbsp;quat.x,&nbsp;quat.y,&nbsp;quat.z);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="机器人力控接口" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%8A%9B%E6%8E%A7%E6%8E%A5%E5%8F%A3"><span>机器人力控接口</span></a></h2><p>JAKA机器人提供了一套基于末端力传感器的力控接口用户可以基于这些接口完成高级的力控功能如恒力柔顺控制等进而实现一些较复杂的应用场景如笛卡尔空间指定方向拖拽、力控装配、打磨等。</p><p>但需要注意的是,这些接口依赖于末端力传感器。</p><p>本节内容建议在完成阅读<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">力控产品使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>的基础上阅读,并参考<a href="https://www.jaka.com/prod-api/common/preview?filePath=/profile/upload/2024/12/09/20241209175146A008.pdf" target="_blank" rel="noopener noreferrer">节卡SDK力控功能快速入门指南<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>配合理解。 为避免文字冗长本节中“力控”都代表“力柔顺控制”“末端力传感器”、“力传感器”、“传感器”都代表安装于机器人末端的6维或1维力/力矩传感器。</p><h3 id="设置末端力传感器型号" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E5%9E%8B%E5%8F%B7"><span>设置末端力传感器型号</span></a></h3><p>设置末端力传感器型号</p><ul><li>参数说明 <ul><li>sensor_brand&nbsp;传感器型号取值范围为1-6或10需要与传感器硬件外壳铭刻的型号数字相匹配。其中10特指已经内置与机器人法兰内部的传感器此型传感器由系统自动管理无需调用此接口进行配置</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_torsenosr_brand(int&nbsp;sensor_brand);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置末端力传感器型号
int&nbsp;example_set_torsensor_brand()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置末端力传感器型号
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_torsenosr_brand(2);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取末端力传感器型号" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E5%9E%8B%E5%8F%B7"><span>获取末端力传感器型号</span></a></h3><p>获取末端力传感器型号</p><ul><li>参数说明 <ul><li>sensor_brand&nbsp;传感器型号,</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_torsenosr_brand(int*&nbsp;sensor_brand);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//获取末端力传感器型号
int&nbsp;example_get_torsensor_brand()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;ret,cur_sensor;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取末端力传感器型号
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.get_torsenosr_brand(&amp;cur_sensor);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="开启或关闭末端力传感器" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E6%88%96%E5%85%B3%E9%97%AD%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8"><span>开启或关闭末端力传感器</span></a></h3><p>开启或关闭末端力传感器</p><ul><li>参数说明 <ul><li>sensor_mode&nbsp;0代表关闭传感器1代表开启传感器</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li><li>注意末端法兰已内置传感器的机器人型号如S系列传感器已默认开启除特殊需求外一般无需调用此接口</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_torque_sensor_mode(int&nbsp;sensor_mode);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//开启或关闭末端力传感器
int&nbsp;example_set_torque_sensor_mode()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
demo.servo_move_enable(TRUE);&nbsp;&nbsp;
Sleep(200);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//开启或关闭末端力传感器1打开0关闭&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_torque_sensor_mode(1);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
::: warning 注意: 请仔细区分set_tool_payload和set_payload的区别。
payload影响的是机器人的动力学
tool_payload影响的是力控效果即力控时机器人的力、力矩补偿
注意末端法兰已内置传感器的机器人型号如S系列传感器末端负载与机械臂负载无区别在这种情况下它们对应的两个设置和查询接口是等价的:::
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置传感器末端负载" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD"><span>设置传感器末端负载</span></a></h3><p>设置传感器末端负载</p><ul><li>参数说明 <ul><li>payload&nbsp;末端负载单位为kg、mm</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_torq_sensor_tool_payload(const&nbsp;PayLoad*&nbsp;payload);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器末端负载" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD"><span>获取传感器末端负载</span></a></h3><p>获取传感器末端负载</p><ul><li>参数说明 <ul><li>payload&nbsp;末端负载单位为kg、mm</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_torq_sensor_tool_payload(PayLoad *payload);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//辨识传感器负载和获取负载辨识状态,设置与获取传感器末端负载&nbsp;&nbsp;
int&nbsp;example_sensor_payload()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JointValue&nbsp;joint_pos;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;PayLoad&nbsp;pl,pl_ret;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
//结束位置需要根据实际设置,此处仅为示例,请勿直接使用
joint_pos.jVal[0] = 0;
joint_pos.jVal[1] = 0;
joint_pos.jVal[2] = 0;
joint_pos.jVal[3] = 0;
joint_pos.jVal[4] = 0;
joint_pos.jVal[5] = 0;
&nbsp;&nbsp;&nbsp;&nbsp;//开始辨识传感器负载
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.start_torq_sensor_payload_identify(&amp;joint_pos);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
Sleep(1000);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//查询传感器负载状态&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo.get_torq_sensor_identify_staus(&amp;ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;while&nbsp;(1&nbsp;==&nbsp;ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取辨识结果&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if(ret == 0) ret&nbsp;=&nbsp;demo.get_torq_sensor_payload_identify_result(&amp;pl);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置传感器末端负载&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_torq_sensor_tool_payload(&amp;pl);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取当前设置的传感器末端负载&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.get_torq_sensor_tool_payload(&amp;pl_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取传感器末端负载辨识状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD%E8%BE%A8%E8%AF%86%E7%8A%B6%E6%80%81"><span>获取传感器末端负载辨识状态</span></a></h3><p>获取传感器末端负载辨识状态</p><ul><li>参数说明 <ul><li>identify_status&nbsp;0代表辨识完成结果已可以读取1代表暂无可以读取的辨识结果2代表辨识失败。</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_torq_sensor_identify_staus(int *identify_status);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="开始辨识传感器末端负载" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%A7%8B%E8%BE%A8%E8%AF%86%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD"><span>开始辨识传感器末端负载</span></a></h3><p>开始辨识传感器末端负载 注意这是一条会触发运动的指令会使机器人运动到jointposition指定的位置辨识过程可能需要1-3分钟。</p><ul><li>参数说明 <ul><li>joint_pos&nbsp;负载辨识终点,关于终点点位设置的注意事项,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">力控产品使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中对相关功能的说明。</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;start_torq_sensor_payload_identify(const&nbsp;JointValue *joint_pos);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器末端负载辨识结果" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%9C%AB%E7%AB%AF%E8%B4%9F%E8%BD%BD%E8%BE%A8%E8%AF%86%E7%BB%93%E6%9E%9C"><span>获取传感器末端负载辨识结果</span></a></h3><p>获取传感器末端负载辨识结果</p><ul><li>参数说明 <ul><li>payload&nbsp;末端负载单位为kg、mm</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_torq_sensor_payload_identify_result(PayLoad *payload);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置末端力传感器通讯参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0"><span>设置末端力传感器通讯参数</span></a></h3><p>设置末端力传感器通讯参数</p><ul><li>参数说明 <ul><li>type0为使用网口或USB1为使用TIO。</li><li>ip_addr为使用网口时传感器ip地址。</li><li>port为使用网口时力控传感器端口号。</li><li>设置为1或使用USB时ip_addr和port不起作用给定如示例所示的默认参数即可</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li><li>末端法兰已内置传感器的机器人型号如S系列系统内部已经自动指定无需进行此项配置。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_torque_sensor_comm(const&nbsp;int&nbsp;type,&nbsp;const&nbsp;char *ip_addr,&nbsp;const&nbsp;int&nbsp;port);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取末端力传感器通讯参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E9%80%9A%E8%AE%AF%E5%8F%82%E6%95%B0"><span>获取末端力传感器通讯参数</span></a></h3><p>获取末端力传感器通讯参数</p><ul><li>参数说明 <ul><li>type0为使用网口或USB1为使用TIO。</li><li>ip_addr为使用网口时传感器ip地址。</li><li>port为使用网口时力控传感器端口号。</li><li>使用TIO或USB时ip_addr和port为无效参数返回值无实际意义</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_torque_sensor_comm(int *type,&nbsp;char *ip_addr,int *port);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> int&nbsp;example_torque_sensor_comm()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;char&nbsp;ip_set[30]="192.168.2.108";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;ret=2;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;type_set&nbsp;=&nbsp;0,port_set&nbsp;=&nbsp;4008;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;char&nbsp;ip_ret[30]="1";&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;type_ret&nbsp;=&nbsp;0,&nbsp;port_ret&nbsp;=&nbsp;0;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.105替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("logining!");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.106");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("powering");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置传感器型号
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_torsenosr_brand(4);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取传感器通讯参数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.get_torque_sensor_comm(&amp;type_ret,&nbsp;ip_ret,&nbsp;&amp;port_ret);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ip_ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;port_ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cin&nbsp;&gt;&gt;&nbsp;type_ret;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置传感器通信参数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_torque_sensor_comm(type_set,&nbsp;ip_set,&nbsp;port_set);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ip_set&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;port_set&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cin&nbsp;&gt;&gt;&nbsp;type_set;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="hint-container warning"><p class="hint-container-title">兼容性接口保留。</p><p>适配1.7.1控制器1.7.2请调用set_ft_ctrl_mode接口。</p></div><h3 id="关闭力柔顺控制" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%85%B3%E9%97%AD%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6"><span>关闭力柔顺控制</span></a></h3><p>关闭力柔顺控制(对恒力柔顺控制和速度柔顺控制生效,但不对工具拖拽生效)</p><ul><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;disable_force_control();&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//关闭力柔顺控制
int&nbsp;example_disable_force_control()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//关闭力矩控制&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.disable_force_control();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置末端力传感器低通滤波器截止频率" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8%E6%88%AA%E6%AD%A2%E9%A2%91%E7%8E%87"><span>设置末端力传感器低通滤波器截止频率</span></a></h3><p>设置末端力传感器低通滤波器截止频率</p><ul><li>参数说明 <ul><li>torque_sensor_filter&nbsp;低通滤波器截止频率单位Hz</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_torque_sensor_filter(const float torque_sensor_filter);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取末端力传感器低通滤波器截止频率" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8%E6%88%AA%E6%AD%A2%E9%A2%91%E7%8E%87"><span>获取末端力传感器低通滤波器截止频率</span></a></h3><p>获取末端力传感器低通滤波器截止频率</p><ul><li>参数说明 <ul><li>torque_sensor_filter&nbsp;低通滤波器截止频率单位Hz</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_torque_sensor_filter(float *torque_sensor_filter);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置末端力传感器软限位" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D"><span>设置末端力传感器软限位</span></a></h3><p>设置末端力传感器软限位</p><ul><li>参数说明 <ul><li>torque_sensor_soft_limit&nbsp;各方向上允许的最大力或力矩数值,超过此数值将触发碰撞保护。 <ul><li>力限位&nbsp;fx,&nbsp;fy,&nbsp;fz&nbsp;单位N</li><li>力矩限位&nbsp;tx,&nbsp;ty,&nbsp;tz&nbsp;单位Nm</li></ul></li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_torque_sensor_soft_limit( const&nbsp;FTxyz&nbsp;torque_sensor_soft_limit);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取末端力传感器软限位" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%9C%AB%E7%AB%AF%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D"><span>获取末端力传感器软限位</span></a></h3><p>获取末端力传感器软限位</p><ul><li>参数说明 <ul><li>torque_sensor_soft_limit&nbsp;各方向上允许的最大力或力矩数值,超过此数值将触发碰撞保护。 <ul><li>力限位&nbsp;fx,&nbsp;fy,&nbsp;fz&nbsp;单位N</li><li>力矩限位 tx, ty, tz 单位Nm</li></ul></li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_torque_sensor_soft_limit(FTxyz&nbsp;*torque_sensor_soft_limit);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="开启或关闭工具拖拽" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E6%88%96%E5%85%B3%E9%97%AD%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD"><span>开启或关闭工具拖拽</span></a></h3><div class="hint-container warning"><p class="hint-container-title">兼容性接口保留。</p><p>适配1.7.1控制器1.7.2为对应替代接口。</p></div><p>开启或关闭工具拖拽,需要开启传感器并设置合理的柔顺控制参数,此外,推荐进行至少一次力控传感器校零后再开启工具拖拽。</p><ul><li>参数说明 <ul><li>enable_flag&nbsp;0为关闭工具拖拽1为开启</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;enable_admittance_ctrl(const&nbsp;int&nbsp;enable_flag);&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
//开启或关闭工具拖拽
int&nbsp;example_enable_admittance_ctrl()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("10.5.5.100");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//开启力传感器&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_torque_sensor_mode(1);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//校零传感器&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.set_compliant_type(1,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("inint&nbsp;sensor&nbsp;comple");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置柔顺控制参数此处仅开启z方向
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(0,&nbsp;0,&nbsp;30,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(1,&nbsp;0,&nbsp;30,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(2,&nbsp;1,&nbsp;30,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(3,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(4,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(5,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//开启工具拖拽&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.enable_admittance_ctrl(1);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("enable_admittance_ctrl&nbsp;open");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("input&nbsp;any&nbsp;word&nbsp;to&nbsp;quit:");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cin&nbsp;&gt;&gt;&nbsp;ret;&nbsp;
//关闭工具拖拽&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.enable_admittance_ctrl(0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("close");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置力控类型和校零-初始化-选项" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E7%B1%BB%E5%9E%8B%E5%92%8C%E6%A0%A1%E9%9B%B6-%E5%88%9D%E5%A7%8B%E5%8C%96-%E9%80%89%E9%A1%B9"><span>设置力控类型和校零(初始化)选项</span></a></h3><div class="hint-container warning"><p class="hint-container-title">兼容性接口保留。</p><p>适配1.7.1控制器1.7.2拆分为多个对应替代接口。1.7.2控制器调用此接口时仅实现触发校零及设置力控类型功能torq_sensor_monitor_data.actTorque将固定为实际外力且需要注意在sensor_compensation给1时compliance_type参数必须给0且必须等待1秒后才能再次调用此接口设置compliance_type参数。</p></div><p>设置力控类型和校零(初始化)选项</p><ul><li>参数说明 <ul><li>sensor_compensation1代表立即进行一次传感器校零并将APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque切换为实际外力0代表不做校零操作并将不处于力控状态下时APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque切换为传感器原始读数若处于力控状态下则仍为实际外力</li><li>compliance_type0代表不使用任何一种柔顺控制方法1代表开启恒力柔顺控制2代表开启速度柔顺控制。</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_compliant_type(int&nbsp;sensor_compensation,&nbsp;int&nbsp;compliance_type);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取力控类型和读数显示-初始化-状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%8E%A7%E7%B1%BB%E5%9E%8B%E5%92%8C%E8%AF%BB%E6%95%B0%E6%98%BE%E7%A4%BA-%E5%88%9D%E5%A7%8B%E5%8C%96-%E7%8A%B6%E6%80%81"><span>获取力控类型和读数显示(初始化)状态</span></a></h3><div class="hint-container warning"><p class="hint-container-title">兼容性接口保留。</p><p>适配1.7.1控制器1.7.2为对应替代接口。1.7.2控制器调用此接口时仅实现获取力控类型功能sensor_compensation参数无意义。</p></div><p>获取力控类型和传感器初始化状态</p><ul><li>参数说明 <ul><li>sensor_compensation&nbsp;是否开启传感器补偿1代表APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque为实际外力0代表不处于力控状态下时APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque为传感器原始读数若处于力控状态下则仍为实际外力</li><li>compliance_type&nbsp;0 代表不使用任何一种柔顺控制方法 1 代表恒力柔顺控制2 代表速度柔顺控制</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_compliant_type(int *sensor_compensation,&nbsp;int *compliance_type);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置与获取力控类型和传感器初始化状态&nbsp;&nbsp;
int&nbsp;example_set_compliant_type()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int&nbsp;ret,sensor_compensation,compliance_type;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
demo.servo_move_enable(TRUE);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置力控类型和校零(初始化)选项
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_compliant_type(1,0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
//获取力控类型和读数显示(初始化)状态
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.get_compliant_type(&amp;sensor_compensation,&nbsp;&amp;compliance_type);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置力柔顺控制参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0"><span>设置力柔顺控制参数</span></a></h3><div class="hint-container warning"><p class="hint-container-title">兼容性接口保留。</p><p>适配1.7.1控制器1.7.2针对工具拖拽和恒力柔顺控制两种功能分别拆分为独立的接口仅对相应的功能生效。1.7.2控制器调用此接口时将调用全部的替代接口并设置为相同参数。</p></div><p>设置力柔顺控制参数</p><ul><li>参数说明 <ul><li>axis0x轴1y轴2z轴3rx4ry5rz。</li><li>opt0关1开。</li><li>ftUser阻尼影响机器人末端对外界环境所表现出的刚度。此参数越大机器人末端表现出的刚度越大。单位为×8N·s/m(对于x/y/z)、×16Nm·s/(π·rad)(对于rx/ry/rz)</li><li>ftReboundFK回弹表示机器人柔顺控制过程中与指令轨迹或初始位置之间的弹性系数单位为N/mm(对于x/y/z)、Nm/rad(对于rx/ry/rz)。</li><li>ftConstant代表目标力单位为N(对于x/y/z)、Nm(对于rx/ry/rz)。</li><li>ftNnormalTrack历史兼容性接口目前必须全部设置为0以确保正常运作。</li><li>关于对上述各参数的理解,请进一步参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">171力控产品使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;set_admit_ctrl_config(int&nbsp;axis,&nbsp;int&nbsp;opt,&nbsp;double ftUser, double ftConstant, int&nbsp;ftNnormalTrack, double&nbsp;ftReboundFK);&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置力柔顺控制参数
int&nbsp;example_set_admit_ctrl_config()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置力柔顺控制参数
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(0,&nbsp;0,&nbsp;30,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(1,&nbsp;0,&nbsp;30,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(2,&nbsp;1,&nbsp;30,&nbsp;5,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(3,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(4,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_admit_ctrl_config(5,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取力柔顺控制参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0"><span>获取力柔顺控制参数</span></a></h3><div class="hint-container warning"><p class="hint-container-title">兼容性接口保留。</p><p>适配1.7.1控制器1.7.2针对工具拖拽和恒力柔顺控制两种功能分别拆分为独立的接口仅对相应的功能生效。1.7.2控制器调用此接口时将返回恒力柔顺控制功能对应的柔顺参数。</p></div><p>获取力控柔顺控制参数</p><ul><li>参数说明 <ul><li>admit_ctrl_cfg&nbsp;机械臂力柔顺控制参数存储地址6个AdmitCtrlType组成的数组分别对应x,y,z,rx,ry,rz方向的力柔顺控制参数</li></ul></li><li>返回值&nbsp;ERR_SUCC&nbsp;成功&nbsp;其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t&nbsp;get_admit_ctrl_config(RobotAdmitCtrl&nbsp;*admit_ctrl_cfg);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//获取力柔顺控制参数
int&nbsp;example_get_admit_ctrl_config()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;RobotAdmitCtrl&nbsp;adm_ctr_cfg;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; JAKAZuRobot&nbsp;demo;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//获取力控柔顺控制参数&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.get_admit_ctrl_config(&amp;adm_ctr_cfg);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置速度柔顺控制参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E9%80%9F%E5%BA%A6%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0"><span>设置速度柔顺控制参数</span></a></h3><div class="hint-container warning"><p class="hint-container-title">1.7.2为废弃接口,不建议使用</p></div><p>设置速度柔顺控制参数</p><ul><li>参数说明 <ul><li>vel_cfg为速度柔顺控制参数</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_vel_compliant_ctrl(const VelCom *vel_cfg);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置速度柔顺控制力条件" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E9%80%9F%E5%BA%A6%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8A%9B%E6%9D%A1%E4%BB%B6"><span>设置速度柔顺控制力条件</span></a></h3><div class="hint-container warning"><p class="hint-container-title">1.7.2为废弃接口,不建议使用</p></div><p>设置柔顺控制力条件</p><ul><li>参数说明 <ul><li>ft为柔顺控制力矩限制超过限制值会减速直至停止</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_compliance_condition(const FTxyz *ft);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>代码示例:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> #include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;
#include&nbsp;"JAKAZuRobot.h"&nbsp;&nbsp;
#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;
&nbsp;&nbsp;
//设置速度柔顺控制力条件
int&nbsp;example_set_compliance_condition()&nbsp;&nbsp;
{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;FTxyz&nbsp;ft;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;ft.fx&nbsp;=&nbsp;10;&nbsp;ft.fy&nbsp;=&nbsp;10;&nbsp;ft.fz&nbsp;=&nbsp;10;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;ft.tx&nbsp;=&nbsp;10;&nbsp;ft.ty&nbsp;=&nbsp;10;&nbsp;ft.tz&nbsp;=&nbsp;10;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; int ret&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; //实例API对象demo&nbsp;&nbsp;&nbsp;
JAKAZuRobot&nbsp;demo;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//登陆控制器需要将192.168.2.194替换为自己控制器的IP&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.login_in("192.168.2.194");&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上电&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.power_on();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//机械臂上使能&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;demo.enable_robot();&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//设置速度柔顺控制力条件
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;demo.set_compliance_condition(&amp;ft);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;ret&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;
}&nbsp;&nbsp;
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="hint-container tip"><p class="hint-container-title">注:</p><p>以下接口仅用于控制器1.7.2版本。</p></div><h3 id="传感器校零" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E4%BC%A0%E6%84%9F%E5%99%A8%E6%A0%A1%E9%9B%B6"><span>传感器校零</span></a></h3><p>触发传感器校零并且阻塞0.5秒。</p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t zero_end_sensor();
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="传感器硬件级标定" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E4%BC%A0%E6%84%9F%E5%99%A8%E7%A1%AC%E4%BB%B6%E7%BA%A7%E6%A0%87%E5%AE%9A"><span>传感器硬件级标定</span></a></h3><p>触发传感器硬件级标定,用于提升传感器数值精度。</p><ul><li>参数说明 <ul><li>type: 0无作用。1 进行标定。2查询当前标定数值。</li></ul></li><li>注意此指令不会立即生效而是在重启机器人控制柜后第一次上电时以当前传感器的状态进行标定。标定过程可能需要5-10秒请注意下发此指令后下一次重启上电后等待5-10秒再上使能以保证最好的标定效果。</li><li>注意:此指令仅在需要进行极限的传感器数值精度提升时使用,不正确使用可能造成传感器零点偏离过大导致意外情况,不建议经常或反复进行标定,一般的传感器数值标定建议通过传感器校零接口进行软件调零。</li><li>注意此指令生效后请务必记录开机后在APP上弹出的当前标定结果并确保后续使用过程中的实际受力与此标定结果的和不超过传感器的量程。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t tio_sensor_calib(int type);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器运行状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BF%90%E8%A1%8C%E7%8A%B6%E6%80%81"><span>获取传感器运行状态</span></a></h3><p>获取传感器运行状态</p><ul><li>参数说明 <ul><li>sensor_mode: 传感器处于开启或关闭状态0为关闭1为开启</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_torque_sensor_mode(int* sensor_mode);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器状态和数据" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E7%8A%B6%E6%80%81%E5%92%8C%E6%95%B0%E6%8D%AE"><span>获取传感器状态和数据</span></a></h3><p>获取传感器运行状态</p><ul><li>参数说明 <ul><li>type: 获取数据的类型1与torq_sensor_monitor_data.actTorque相同2与torq_sensor_monitor_data.torque相同传感器原始读数3与torq_sensor_monitor_data.realTorque相同减去负载重力补偿和传感器偏置后的实际受力</li><li>TorqSensorData包含传感器状态、错误码以及读数的结构体</li></ul></li><li>注意type为1为针对1.7.1及以下版本的兼容性接口在1.7.2及以上版本中此参数给定1和3获取的数值相同但建议使用3</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_torque_sensor_data(int type, TorqSensorData* data);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置恒力柔顺控制参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0"><span>设置恒力柔顺控制参数</span></a></h3><p>设置恒力柔顺控制参数</p><ul><li>参数说明 <ul><li>axis0x轴1y轴2z轴3rx4ry5rz。</li><li>opt0关1开。</li><li>ftUser阻尼影响机器人末端对外界环境所表现出的刚度。此参数越大机器人末端表现出的刚度越大。单位为×8N·s/m(对于x/y/z)、×16Nm·s/(π·rad)(对于rx/ry/rz)</li><li>ftReboundFK回弹表示机器人柔顺控制过程中与指令轨迹或初始位置之间的弹性系数单位为N/mm(对于x/y/z)、Nm/rad(对于rx/ry/rz)。</li><li>ftConstant代表目标力单位为N(对于x/y/z)、Nm(对于rx/ry/rz)。</li><li>关于对上述各参数的理解,请进一步参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP编程指令帮助<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a><a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_ctrl_config(AdmitCtrlType admit_ctrl_cfg);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取恒力柔顺控制参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%8F%82%E6%95%B0"><span>获取恒力柔顺控制参数</span></a></h3><p>获取恒力柔顺控制参数</p><ul><li>参数说明 <ul><li>admit_ctrl_cfg 机械臂力控柔顺控制参数存储地址6个AdmitCtrlType组成的数组分别对应x,y,z,rx,ry,rz方向的力柔顺控制参数</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_ctrl_config(RobotAdmitCtrl *admit_ctrl_cfg);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置恒力柔顺控制坐标系" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%9D%90%E6%A0%87%E7%B3%BB"><span>设置恒力柔顺控制坐标系</span></a></h3><p>设置恒力柔顺控制坐标系</p><ul><li>参数说明 <ul><li>ftFrame 0力控坐标系的方向轴将实时保持与当前生效的工具坐标系平行1力控坐标系的方向轴将实时保持与当前生效的用户坐标系平行</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_ctrl_frame(FTFrameType ftFrame);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取恒力柔顺控制坐标系" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%9D%90%E6%A0%87%E7%B3%BB"><span>获取恒力柔顺控制坐标系</span></a></h3><p>获取恒力柔顺控制坐标系,调用控制器内部新接口</p><ul><li>参数说明 <ul><li>ftFrame 0力控坐标系的方向轴将实时保持与当前生效的工具坐标系平行1力控坐标系的方向轴将实时保持与当前生效的用户坐标系平行</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_ctrl_frame(FTFrameType* ftFrame);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置力控拖拽手感参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E6%8B%96%E6%8B%BD%E6%89%8B%E6%84%9F%E5%8F%82%E6%95%B0"><span>设置力控拖拽手感参数</span></a></h3><p>设置力控拖拽手感参数,调用控制器内部对应接口</p><ul><li>参数说明 <ul><li>cfg Configuration for the tool drive</li><li>关于对上述各参数的理解,请进一步参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a><a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172力控产品使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_tool_drive_config(ToolDriveConfig cfg);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取工具拖拽参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%8F%82%E6%95%B0"><span>获取工具拖拽参数</span></a></h3><p>获取工具拖拽参数,调用控制器内部新接口</p><ul><li>参数说明 <ul><li>cfg 机械臂力控柔顺控制参数存储地址6个AdmitCtrlType组成的数组分别对应x,y,z,rx,ry,rz方向的力柔顺控制参数</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_tool_drive_config(RobotAdmitCtrl *cfg);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="开启工具拖拽" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD"><span>开启工具拖拽</span></a></h3><p>开启或关闭工具拖拽,需要开启传感器并设置合理的柔顺控制参数,此外,推荐进行至少一次力控传感器校零后再开启工具拖拽。</p><ul><li>参数说明 <ul><li>enable_flag 0 为关闭工具拖拽1 为开启</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t enable_tool_drive(const int enable_flag);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="开启或关闭恒力柔顺控制" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%BC%80%E5%90%AF%E6%88%96%E5%85%B3%E9%97%AD%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6"><span>开启或关闭恒力柔顺控制</span></a></h3><p>开启或关闭恒力柔顺控制</p><ul><li>参数说明 <ul><li>enable_flag 0 为关闭1 为开启,需要开启传感器并设置合理的柔顺控制参数,此外,推荐进行至少一次力控传感器校零后再开启恒力柔顺控制。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_ctrl_mode(BOOL enable);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置力控终止条件" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E7%BB%88%E6%AD%A2%E6%9D%A1%E4%BB%B6"><span>设置力控终止条件</span></a></h3><p>设置力控终止条件与APP图形化编程同名指令含义相同请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP编程指令帮助<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a><a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</p><ul><li>参数说明 <ul><li>condition: 6维ForceStopCondition数组 <ul><li>axis 方向0-5分别对用x,y,z,rx,ry,rz</li><li>opt 是否开启力控终止条件0 代表没有勾选, 非 0 值代表勾选</li><li>lower_limit_opt 0 代表不设置下限,非 0 值代表设置</li><li>lower_limit 下限数值</li><li>upper_limit_opt 0 代表不设置下限,非 0 值代表设置</li><li>upper_limit 下限数值</li></ul></li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_force_stop_condition(ForceStopConditionList condition);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取恒力柔顺开启状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E5%BC%80%E5%90%AF%E7%8A%B6%E6%80%81"><span>获取恒力柔顺开启状态</span></a></h3><p>获取恒力柔顺开启状态</p><ul><li>参数说明 <ul><li>enable0 代表未开启1代表开启2代表速度模式1.7.2及以上控制器版本中已不再支持速度模式2仅会出现在兼容性代码中</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_ctrl_mode(BOOL* enable);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置进近限速" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F"><span>设置进近限速</span></a></h3><p>设置进近限速</p><ul><li>参数说明 <ul><li>speed_limit 线速度限制mm/s</li><li>angular_speed_limit 角速度限制rad/s</li></ul></li><li>关于此项设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_approach_speed_limit(double vel, double angularVelt);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取进近限速" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F"><span>获取进近限速</span></a></h3><p>获取进近限速</p><ul><li>参数说明 <ul><li>speed_limit 线速度限制mm/s</li></ul></li><li>参数说明 angular_speed_limit 角速度限制rad/s</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_approach_speed_limit(double *vel, double *angularVel);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置恒力控制容差" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE"><span>设置恒力控制容差</span></a></h3><p>设置恒力控制容差</p><ul><li>参数说明 <ul><li>force 力容差N</li><li>torque 力矩容差Nm</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_tolerance(double force, double torque);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取恒力控制容差" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE"><span>获取恒力控制容差</span></a></h3><p>设置恒力控制容差</p><ul><li>参数说明 <ul><li>force 力容差N</li><li>torque 力矩容差Nm</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_tolerance(double *force, double *torque);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取工具拖拽开启状态" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%BC%80%E5%90%AF%E7%8A%B6%E6%80%81"><span>获取工具拖拽开启状态</span></a></h3><p>获取力控工具拖拽开启状态</p><ul><li>参数说明 <ul><li>enable: 0 为关闭1 为开启</li><li>state是拖拽当前状态是否运动限制预警其中0代表无预警其他代表触发预警转换为二进制后有效位数16位从低位到高位代表的预警触发类型依次为1-6号奇异点触发、1-9关节软限位触发、速度限制触发</li></ul></li><li>返回值 ERR_SUCC ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_tool_drive_state(int *enable, int *state);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><div class="hint-container tip"><p class="hint-container-title">注:</p><p>state返回值仅S系列机器人支持其他机型此返回值无意义。 对于S系列构型1-3号奇异点分别为肘部奇异、腕部奇异、肩部奇异4-6号奇异点以及7-9关节的标志位无意义。</p></div><h3 id="获取工具拖拽坐标系" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%9D%90%E6%A0%87%E7%B3%BB"><span>获取工具拖拽坐标系</span></a></h3><p>获取工具拖拽坐标系。</p><ul><li>参数说明 <ul><li>toolDragFrame 0拖拽坐标系的方向轴将实时保持与当前生效的工具坐标系平行1拖拽坐标系的方向轴将实时保持与当前生效的用户坐标系平行</li></ul></li><li>返回值 ERR_SUCC Success Other failures</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_tool_drive_frame(FTFrameType *ftFrame);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置工具拖拽坐标系" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%B7%A5%E5%85%B7%E6%8B%96%E6%8B%BD%E5%9D%90%E6%A0%87%E7%B3%BB"><span>设置工具拖拽坐标系</span></a></h3><p>设置工具拖拽坐标系。</p><ul><li>参数说明 <ul><li>toolDragFrame 0拖拽坐标系的方向轴将实时保持与当前生效的工具坐标系平行1拖拽坐标系的方向轴将实时保持与当前生效的用户坐标系平行</li></ul></li><li>返回值 ERR_SUCC</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_tool_drive_frame(FTFrameType ftFrame);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><div class="hint-container tip"><p class="hint-container-title">注:</p><p>融合拖拽、运动限制奇异点和关节限位预警范围相关接口仅用于S系列机器人。 关于这些设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</p></div><h3 id="获取融合拖拽灵敏度" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%9E%8D%E5%90%88%E6%8B%96%E6%8B%BD%E7%81%B5%E6%95%8F%E5%BA%A6"><span>获取融合拖拽灵敏度</span></a></h3><p>获取融合拖拽灵敏度。</p><ul><li>参数说明 <ul><li>level 灵敏度等级0-50代表关闭越小越不灵敏</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_fusion_drive_sensitivity_level(int *level);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置融合拖拽灵敏度" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%9E%8D%E5%90%88%E6%8B%96%E6%8B%BD%E7%81%B5%E6%95%8F%E5%BA%A6"><span>设置融合拖拽灵敏度</span></a></h3><p>设置融合拖拽灵敏度。</p><ul><li>参数说明 <ul><li>level 灵敏度等级0-50代表关闭越小越不灵敏</li></ul></li><li>关于此项设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_fusion_drive_sensitivity_level(int level);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取运动限制-奇异点和关节限位-预警范围" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BF%90%E5%8A%A8%E9%99%90%E5%88%B6-%E5%A5%87%E5%BC%82%E7%82%B9%E5%92%8C%E5%85%B3%E8%8A%82%E9%99%90%E4%BD%8D-%E9%A2%84%E8%AD%A6%E8%8C%83%E5%9B%B4"><span>获取运动限制(奇异点和关节限位)预警范围</span></a></h3><p>获取运动限制(奇异点和关节限位)预警范围。</p><ul><li>参数说明 <ul><li>warningRange 范围等级1-5越小代表预警范围越大</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_motion_limit_warning_range(int *warningRange);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置运动限制-奇异点和关节限位-预警范围" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BF%90%E5%8A%A8%E9%99%90%E5%88%B6-%E5%A5%87%E5%BC%82%E7%82%B9%E5%92%8C%E5%85%B3%E8%8A%82%E9%99%90%E4%BD%8D-%E9%A2%84%E8%AD%A6%E8%8C%83%E5%9B%B4"><span>设置运动限制(奇异点和关节限位)预警范围</span></a></h3><p>设置运动限制(奇异点和关节限位)预警范围。</p><ul><li>参数说明 <ul><li>warningRange 范围等级1-5越小代表预警范围越大</li></ul></li><li>关于此项设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_motion_limit_warning_range(int warningRange);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取力控限速" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%8E%A7%E9%99%90%E9%80%9F"><span>获取力控限速</span></a></h3><p>获取力控限速。</p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_compliant_speed_limit(double *vel, double *angularVel);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置力控限速" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E9%99%90%E9%80%9F"><span>设置力控限速</span></a></h3><p>设置力控限速。</p><ul><li>参数说明 <ul><li>speed_limit 线速度限制mm/s</li><li>angular_speed_limit 角速度限制rad/s</li></ul></li><li>关于此项设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_compliant_speed_limit(double vel, double angularVel);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取力矩参考中心" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E7%9F%A9%E5%8F%82%E8%80%83%E4%B8%AD%E5%BF%83"><span>获取力矩参考中心</span></a></h3><p>获取力矩参考中心。</p><ul><li>参数说明 <ul><li>ref_point 0代表末端法兰中心或传感器中心1代表当前生效的工具坐标系中心。</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_torque_ref_point(int *ref_point);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置力矩参考中心" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E7%9F%A9%E5%8F%82%E8%80%83%E4%B8%AD%E5%BF%83"><span>设置力矩参考中心</span></a></h3><p>设置力矩参考中心。</p><ul><li>参数说明 <ul><li>ref_point 0代表末端法兰中心或传感器中心1代表当前生效的工具坐标系中心。</li></ul></li><li>关于此项设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_torque_ref_point(int ref_point);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置传感器灵敏度" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E7%81%B5%E6%95%8F%E5%BA%A6"><span>设置传感器灵敏度</span></a></h3><p>设置传感器灵敏度。</p><ul><li>参数说明 <ul><li>threshold 6维数组数值范围0~1越大传感器越不灵敏对于外力干扰进行响应的阈值越高</li></ul></li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_end_sensor_sensitivity_threshold(FTxyz threshold);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器灵敏度" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E7%81%B5%E6%95%8F%E5%BA%A6"><span>获取传感器灵敏度</span></a></h3><p>获取传感器灵敏度。</p><ul><li>参数说明 <ul><li>threshold 6维数组用户设置的百分比灵敏度</li></ul></li><li>关于此项设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_end_sensor_sensitivity_threshold(FTxyz *threshold);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>关于此项设置的具体含义,请参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul><div class="hint-container tip"><p class="hint-container-title">提示</p><p>该示例为上述1.7.2及以上控制器版本的接口示例。</p></div><p><strong>示例代码:</strong></p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code> int main()
{
std::cout &lt;&lt; "Hello World!";
JAKAZuRobot demo;
demo.login_in("10.5.5.100");
cout &lt;&lt; "power on: " &lt;&lt; demo.power_on() &lt;&lt; endl;
cout &lt;&lt; "enable: " &lt;&lt; demo.enable_robot() &lt;&lt; endl;
cout &lt;&lt; "enable tool drive: " &lt;&lt; demo.enable_tool_drive(1) &lt;&lt; endl;
//set tool_drive_frame
FTFrameType tool_drive_frame;
demo.set_tool_drive_frame(FTFrameType::FTFrame_Tool);
demo.get_tool_drive_frame(&amp;tool_drive_frame);
std::cout &lt;&lt; tool_drive_frame &lt;&lt; std::endl;
//set torque_ref_point
int ref_point;
demo.set_torque_ref_point(1); //set to follow the TCP
demo.get_torque_ref_point(&amp;ref_point);
std::cout &lt;&lt; ref_point &lt;&lt; std::endl;
//compliant_speed_limit
double vel, angvel;
demo.set_compliant_speed_limit(500, 60);
demo.get_compliant_speed_limit(&amp;vel, &amp;angvel);
std::cout &lt;&lt; vel &lt;&lt; ", " &lt;&lt; angvel &lt;&lt; std::endl; //should be: 500, 60
//torque_sensor_sensitivity_threshold
FTxyz ft;
ft.fx = 0.3;
ft.fy = 0.3;
ft.fz = 0.3;
ft.tx = 0.3;
ft.ty = 0.3;
ft.tz = 0.3;
demo.set_end_sensor_sensitivity_threshold(ft);
demo.get_end_sensor_sensitivity_threshold(&amp;ft);
std::cout &lt;&lt; ft.fx &lt;&lt; ", " &lt;&lt; ft.fy &lt;&lt; ", " &lt;&lt; ft.fz &lt;&lt; ", " &lt;&lt; ft.tx &lt;&lt; ", " &lt;&lt; ft.ty &lt;&lt; ", " &lt;&lt; ft.tz &lt;&lt; ", " &lt;&lt; std::endl; //should be: 0.3, 0.3, 0.3, 0.3, 0.3, 0.3
//lock all other directions, only open z direction
ToolDriveConfig toolDriveCfg{};
RobotToolDriveCtrl robToolCfg;
for (int i = 0; i &lt; 6; i++)
{
toolDriveCfg.axis = i;
if(i == 2)
toolDriveCfg.opt = 1;
Else
toolDriveCfg.opt = 0;
toolDriveCfg.rigidity = 0.3;
toolDriveCfg.rebound = 0;
demo.set_tool_drive_config(toolDriveCfg);
}
demo.get_tool_drive_config(&amp;robToolCfg);
//zero_end_sensor
cout &lt;&lt; "zero: " &lt;&lt; demo.zero_end_sensor() &lt;&lt; endl;
//open tool drive
demo.enable_tool_drive(1);
int enable, state;
demo.get_tool_drive_state(&amp;enable, &amp;state);
Sleep(2000);
demo.enable_tool_drive(0);
//退出登录
demo.login_out();
cout &lt;&lt; "end" &lt;&lt; endl;
return 0;
}
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取传感器基本信息" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF"><span>获取传感器基本信息</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>infos 指向<code>FTSensorBasicInfoStr</code>的指针,用于存储获取到的数据。</li><li>robot_id 目标机器人的ID如果未指定则默认值为0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_sensor_basic_info(FTSensorBasicInfoStr *infos, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器软限位规则" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D%E8%A7%84%E5%88%99"><span>获取传感器软限位规则</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>rules 指向<code>FTSensorSoftLimitRuleStr</code>的指针,用于存储获取到的数据。</li><li>robot_id 待查询机器人的 ID默认为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_sensor_soft_limit_rules(FTSensorSoftLimitRuleStr *rules, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置传感器软限位规则" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BD%AF%E9%99%90%E4%BD%8D%E8%A7%84%E5%88%99"><span>设置传感器软限位规则</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>rules 指向<code>FTSensorSoftLimitRuleStr</code>的指针,用于定义规则。</li><li>robot_id 机器人的 ID默认为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_sensor_soft_limit_rules(const FTSensorSoftLimitRuleStr *rules, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置传感器过滤参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BF%87%E6%BB%A4%E5%8F%82%E6%95%B0"><span>设置传感器过滤参数</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id 所设置的传感器。</li><li>filter 指向过滤参数的指针。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_sensor_filter(int sensor_id, const double *filter);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器过滤参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%BF%87%E6%BB%A4%E5%8F%82%E6%95%B0"><span>获取传感器过滤参数</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id 传感器id。</li><li>filter 指向一个数组的指针,用于存储参数。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_sensor_filter(int sensor_id, double *filter);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器模式" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%A8%A1%E5%BC%8F"><span>获取传感器模式</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id 待查询的传感器ID</li><li>mode 指向整数的指针用于存储模式1 表示开启0 表示关闭。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_sensor_mode(int sensor_id, int *mode);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="校零传感器" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%A0%A1%E9%9B%B6%E4%BC%A0%E6%84%9F%E5%99%A8"><span>校零传感器</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id 校零的传感器ID。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_sensor_zero(int sensor_id);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置传感器阈值" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E9%98%88%E5%80%BC"><span>设置传感器阈值</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id 目标传感器ID。</li><li>threshold 指向包含阈值的 <code>FTSensorThresholdStr</code> 结构体的指针。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_contact_force_threshold(int sensor_id, const FTSensorThresholdStr *threshold);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器阈值" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E9%98%88%E5%80%BC"><span>获取传感器阈值</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id 目标传感器ID。</li><li>threshold 指向 <code>FTSensorThresholdStr</code> 的指针,用于存储阈值。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_contact_force_threshold(int sensor_id, FTSensorThresholdStr *threshold);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置传感器参考点" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E5%8F%82%E8%80%83%E7%82%B9"><span>设置传感器参考点</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>ref_point指向 <code>CartesianTran</code> 的指针,包含以米为单位的 [x, y, z] 偏移量。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_sensor_ref_point(const CartesianTran *ref_point, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器参考点" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E5%8F%82%E8%80%83%E7%82%B9"><span>获取传感器参考点</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>ref_point指向 CartesianTran 的指针,用于接收以米为单位的 [x, y, z] 偏移量。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_sensor_ref_point(CartesianTran *ref_point, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器数据" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E6%95%B0%E6%8D%AE"><span>获取传感器数据</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id传感器的 ID。</li><li>type要获取的数据类型 <ul><li>1 表示执行力矩(兼容接口),</li><li>2 表示原始数据,</li><li>3 表示去除重力和偏差后的实际数据。</li></ul></li><li>data指向 FTSensorDataStr 的指针,用于接收结果。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_sensor_data(int sensor_id, int type, FTSensorDataStr *data);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取传感器负载" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E4%BC%A0%E6%84%9F%E5%99%A8%E8%B4%9F%E8%BD%BD"><span>获取传感器负载</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id传感器的 ID。</li><li>payload: 指向 <code>PayLoad</code> 结构体的指针,用于存储结果。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ft_sensor_payload(int sensor_id, PayLoad * payload);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置传感器负载" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E4%BC%A0%E6%84%9F%E5%99%A8%E8%B4%9F%E8%BD%BD"><span>设置传感器负载</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id传感器的 ID。</li><li>payload_id要分配的负载配置 ID。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_ft_sensor_payload(int sensor_id, int payload_id);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取当前连接至机器人的传感器id" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E8%BF%9E%E6%8E%A5%E8%87%B3%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E4%BC%A0%E6%84%9F%E5%99%A8id"><span>获取当前连接至机器人的传感器ID</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_ids指向 <code>FTLinkedSensorIDStr</code> 的指针,用于接收结果。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_linked_ft_sensor_id(FTLinkedSensorIDStr *sensor_ids, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="添加传感器" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%B7%BB%E5%8A%A0%E4%BC%A0%E6%84%9F%E5%99%A8"><span>添加传感器</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>config指向 <code>FTSensorConfigStr</code> 的指针,包含传感器配置信息。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t add_ft_sensor(const FTSensorConfigStr *config, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="删除传感器" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%88%A0%E9%99%A4%E4%BC%A0%E6%84%9F%E5%99%A8"><span>删除传感器</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>sensor_id 将要删除的传感器ID。</li><li>robot_id 机器人ID默认值为0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t remove_ft_sensor(int sensor_id, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置力控模式下的速度限制" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E5%8A%9B%E6%8E%A7%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%9A%84%E9%80%9F%E5%BA%A6%E9%99%90%E5%88%B6"><span>设置力控模式下的速度限制</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>limit指向 <code>VelocityLimit</code> 结构体的指针,用于指定线速度和角速度的限制。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_force_ctrl_vel_limit(const VelocityLimit *limit, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取力控模式下的速度限制" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E5%8A%9B%E6%8E%A7%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%9A%84%E9%80%9F%E5%BA%A6%E9%99%90%E5%88%B6"><span>获取力控模式下的速度限制</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>limit指向 <code>VelocityLimit</code> 的指针,用于接收速度限制参数。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_force_ctrl_vel_limit(VelocityLimit *limit, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置进近限速-1" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F-1"><span>设置进近限速</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><div class="hint-container tip"><p class="hint-container-title">进近限速指:设置恒力柔顺控制开启后,机器人末端接触到物体产生力之前那一段运动的速度限制。</p></div><ul><li>参数说明 <ul><li>limit指向 <code>VelocityLimit</code> 结构体的指针,用于指定速度限制参数。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_approaching_vel_limit(const VelocityLimit *limit, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取进近限速-1" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E8%BF%9B%E8%BF%91%E9%99%90%E9%80%9F-1"><span>获取进近限速</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>limit指向 VelocityLimit 结构体的指针,用于接收速度限制参数。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_approaching_vel_limit(VelocityLimit *limit, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置恒力柔顺控制模式参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E6%A8%A1%E5%BC%8F%E5%8F%82%E6%95%B0"><span>设置恒力柔顺控制模式参数</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>axis0x轴1y轴2z轴3rx4ry5rz。</li><li>opt0关1开。</li><li>ftUser阻尼影响机器人末端对外界环境所表现出的刚度。此参数越大机器人末端表现出的刚度越大。单位为×8N·s/m(对于x/y/z)、×16Nm·s/(π·rad)(对于rx/ry/rz)</li><li>ftReboundFK回弹表示机器人柔顺控制过程中与指令轨迹或初始位置之间的弹性系数单位为N/mm(对于x/y/z)、Nm/rad(对于rx/ry/rz)。</li><li>ftConstant代表目标力单位为N(对于x/y/z)、Nm(对于rx/ry/rz)。</li><li>关于对上述各参数的理解,请进一步参考<a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP编程指令帮助<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a><a href="https://www.jaka.com/prod-api/profile/upload/2023/12/25/JAKA%E5%8A%9B%E6%8E%A7%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8CV3.1.0_20231225173547A011.pdf" target="_blank" rel="noopener noreferrer">172APP使用手册<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>中的相关说明。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_cst_force_ctrl_config(const AdmitCtrlType *config, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取恒力柔顺控制模式参数" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E6%A8%A1%E5%BC%8F%E5%8F%82%E6%95%B0"><span>获取恒力柔顺控制模式参数</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>config指向 <code>AdmitCtrlType</code> 的指针,用于接收柔顺控制配置。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_cst_force_ctrl_config(AdmitCtrlType *config, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="设置恒力柔顺控制容差" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%AE%BE%E7%BD%AE%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE"><span>设置恒力柔顺控制容差</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>tol指向 <code>FTxyz</code> 结构体的指针,用于指定容差值。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t set_cst_force_ctrl_tol(const FTxyz *tol, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="获取恒力柔顺控制容差" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E8%8E%B7%E5%8F%96%E6%81%92%E5%8A%9B%E6%9F%94%E9%A1%BA%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%B7%AE"><span>获取恒力柔顺控制容差</span></a></h3><div class="hint-container tip"><p class="hint-container-title">该接口目前仅适配于3.0及以上版本的控制器。</p></div><ul><li>参数说明 <ul><li>tol指向 FTxyz 结构体的指针,用于接收容差值。</li><li>robot_id机器人的 ID默认值为 0。</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_cst_force_ctrl_tol(FTxyz *tol, int robot_id = 0);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="ftp-服务" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp-%E6%9C%8D%E5%8A%A1"><span>FTP 服务</span></a></h2><h3 id="初始化ftp客户端" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%88%9D%E5%A7%8B%E5%8C%96ftp%E5%AE%A2%E6%88%B7%E7%AB%AF"><span>初始化FTP客户端</span></a></h3><p>初始化ftp客户端与控制柜建立连接可导出program、track</p><ul><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t init_ftp_client();
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="ftp上传" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E4%B8%8A%E4%BC%A0"><span>FTP上传</span></a></h3><p>从本地上传指定类型和名称的文件到控制器</p><ul><li>参数说明 <ul><li>remote 上传到控制器内部文件名绝对路径,若为文件夹需要以“或“/”结尾</li><li>local 本地文件名绝对路径,若为文件夹需要以“或“/”结尾</li><li>opt 1单个文件 2文件夹</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li><li>@note Windows C++/ Windows C#传入参数编码为GBKLinux为UTF-8</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t upload_file(char *local, char *remote, int opt);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="ftp下载" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E4%B8%8B%E8%BD%BD"><span>FTP下载</span></a></h3><p>从控制器下载指定类型和名称的文件到本地</p><ul><li>参数说明 <ul><li>remote 控制器内部文件名绝对路径,若为文件夹需要以“或“/”结尾</li><li>local 下载到本地文件名绝对路径,若为文件夹需要以“或“/”结尾</li><li>opt 1单个文件 2文件夹</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li><li>Windows C++/ Windows C#传入参数编码为GBKLinux为UTF-8</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t download_file(char *local, char *remote, int opt);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="ftp目录查询" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E7%9B%AE%E5%BD%95%E6%9F%A5%E8%AF%A2"><span>FTP目录查询</span></a></h3><p>查询FTP目录</p><ul><li>参数说明 <ul><li>remote 控制器内部文件名原名称,查询轨迹“/track/”,查询脚本程序“/program/”</li><li>opt 0文件名和子目录名 1文件名 2子目录名</li><li>ret 返回的查询结果</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li><li>Windows C++/ Windows C#传入参数编码为GBKLinux为UTF-8</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t get_ftp_dir(const char *remotedir, int type, char *ret);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="ftp删除" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E5%88%A0%E9%99%A4"><span>FTP删除</span></a></h3><p>从控制器删除指定类型和名称的文件</p><ul><li>参数说明 <ul><li>remote 控制器内部文件名</li><li>opt 1单个文件 2文件夹</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li><li>Windows C++/ Windows C#传入参数编码为GBKLinux为UTF-8</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t del_ftp_file(char *remote, int opt);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="ftp重命名" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#ftp%E9%87%8D%E5%91%BD%E5%90%8D"><span>FTP重命名</span></a></h3><p>重命名控制器指定类型和名称的文件</p><ul><li>参数说明 <ul><li>remote 控制器内部文件名原名称</li><li>des 重命名的目标名</li><li>opt 1单个文件 2文件夹</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</li><li>Windows C++/ Windows C#传入参数编码为GBKLinux为UTF-8</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t rename_ftp_file(char *remote, char *des, int opt);
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="关闭ftp客户端" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E5%85%B3%E9%97%ADftp%E5%AE%A2%E6%88%B7%E7%AB%AF"><span>关闭FTP客户端</span></a></h3><p>断开与控制器ftp链接</p><ul><li>返回值 ERR_SUCC 成功 其他失败</li></ul><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button type="button" class="vp-copy-code-button" aria-label="复制代码" data-copied="已复制"><div class="vp-copy-icon"></div></button><pre class="language-c++" copy-code-registered=""><code>errno_t close_ftp_client();
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="接口调用返回值列表及问题排查" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8%E8%BF%94%E5%9B%9E%E5%80%BC%E5%88%97%E8%A1%A8%E5%8F%8A%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5"><span>接口调用返回值列表及问题排查</span></a></h2><table><thead><tr><th>错误代码</th><th>描述</th><th>处理建议</th></tr></thead><tbody><tr><td>0</td><td>success</td><td>null</td></tr><tr><td>2</td><td>interface error or controller not support</td><td>核对控制器和SDK版本信息进行升级或换用其他接口</td></tr><tr><td>-1</td><td>invalid handler</td><td>请检查调用接口前是否login</td></tr><tr><td>-2</td><td>invalid parameter</td><td>请检查参数是否正确</td></tr><tr><td>-3</td><td>fail to connect</td><td>请检查网络连接状态或机器人IP是否正确</td></tr><tr><td>-4</td><td>kine_inverse error</td><td>逆解失败,请检查当前的坐标系,或参考关节角是否合理</td></tr><tr><td>-5</td><td>e-stop</td><td>急停状态,保留状态</td></tr><tr><td>-6</td><td>not power on</td><td>未上电</td></tr><tr><td>-7</td><td>not enable</td><td>未使能</td></tr><tr><td>-8</td><td>not in servo mode</td><td>不处于伺服模式在执行servoJP 的时候,必须先进入伺服模式,请检查是否调用对应接口</td></tr><tr><td>-9</td><td>must turn off enable before power off</td><td>下电前必须下使能</td></tr><tr><td>-10</td><td>cannot operate, program is running</td><td>无法操作,程序正在执行中,请先关闭程序</td></tr><tr><td>-11</td><td>cannot open file, or file doesn't exist</td><td>无法打开文件,或者文件不存在</td></tr><tr><td>-12</td><td>motion abnormal</td><td>运动异常,可能处于奇异点附近,或者超出机器人运动限制</td></tr><tr><td>-14</td><td>ftp error</td><td>ftp异常</td></tr><tr><td>-15</td><td>socket msg or value oversize</td><td>超出限制异常</td></tr><tr><td>-16</td><td>kine_forward error</td><td>正解失败</td></tr><tr><td>-17</td><td>not support empty folder</td><td>不支持空文件夹</td></tr><tr><td>-20</td><td>protective stop</td><td>保护性停止</td></tr><tr><td>-21</td><td>emergency stop</td><td>急停</td></tr><tr><td>-22</td><td>on soft limit</td><td>处于软限位此时无法手动拖动机器人需要用APP上的示教功能接触软限位</td></tr><tr><td>-30</td><td>fail to encode cmd string</td><td>命令编码失败,一般是解析控制器返回的消息时出错</td></tr><tr><td>-31</td><td>fail to decode cmd string</td><td>命令解码失败,一般是解析控制器返回的消息时出错</td></tr><tr><td>-32</td><td>fail to uncompress port 10004 string</td><td>解压缩10004端口数据失败可能受网络波动影响或数据量太大的原因</td></tr><tr><td>-40</td><td>move linear error</td><td>直线运动失败,请检查是否路径中是否有奇异区域</td></tr><tr><td>-41</td><td>move joint error</td><td>关节运动失败,请检查设置的关节角度</td></tr><tr><td>-42</td><td>move circular error</td><td>圆弧运动失败,请检查设置的参数</td></tr><tr><td>-50</td><td>block_wait timeout</td><td>阻塞等待超时</td></tr><tr><td>-51</td><td>power on timeout</td><td>上电超时</td></tr><tr><td>-52</td><td>power off timeout</td><td>下电超时</td></tr><tr><td>-53</td><td>enable timeoff</td><td>使能超时</td></tr><tr><td>-54</td><td>disable timeout</td><td>下使能超时</td></tr><tr><td>-55</td><td>set userframe timeout</td><td>设置用户坐标系超时</td></tr><tr><td>-56</td><td>set tool timeout</td><td>设置工具坐标系超时</td></tr><tr><td>-57</td><td>edg init failed</td><td>edg功能初始化失败</td></tr><tr><td>-58</td><td>edg is running, cannot use servo_j or servo_p</td><td>edg功能正在执行中无法使用servo_j或者servo_p接口</td></tr><tr><td>-60</td><td>set io timeout</td><td>设置IO超时</td></tr></tbody></table><h2 id="问题反馈" tabindex="-1"><a class="header-anchor" href="https://www.jaka.com/docs/guide/SDK/Cpp.html#%E9%97%AE%E9%A2%98%E5%8F%8D%E9%A6%88"><span>问题反馈</span></a></h2><p>文档中若出现不准确的描述或者错误,恳请读者见谅指正。如果您在阅读过程中发现任何问题或者有想提出的意见,可以发送邮件到 support@jaka.com ,我们将尽快给您回复。</p></div><!----><footer class="page-meta"><!----><div class="meta-item git-info"><div class="update-time"><span class="label">上次编辑于: </span><span class="info">2025/8/7 17:15:13</span></div><!----></div></footer><nav class="vp-page-nav"><a class="route-link nav-link prev" href="https://www.jaka.com/docs/guide/SDK/%E8%8A%82%E5%8D%A1%20SDK%20%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B%20-%20CN.html" aria-label="快速开始"><div class="hint"><span class="arrow start"></span>上一页</div><div class="link"><!---->快速开始</div></a><a class="route-link nav-link next" href="https://www.jaka.com/docs/guide/SDK/Csharp.html" aria-label="C#"><div class="hint">下一页<span class="arrow end"></span></div><div class="link">C#<!----></div></a></nav><!----><!----></main><!--]--><footer class="vp-footer-wrapper"><!----><div class="vp-copyright">Copyright © 2025 JAKA </div></footer></div><!--]--><!--[--><!----><!----><!--]--><!--]--></div>
<script type="module" src="./C++_files/app-Bs7U449H.js.下载" defer=""></script>
</body></html>