2130 lines
509 KiB
HTML
2130 lines
509 KiB
HTML
<!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&C#"><!---->C++封装为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/%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">机械臂EDG(External 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 SDK(C++)中定义的数据类型和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();
|
||
</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 控制器ip地址</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 login_in(const char *ip);
|
||
</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 成功 其他失败</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 login_out();
|
||
</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>返回值 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 power_on();
|
||
</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>返回值 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 power_off();
|
||
</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>返回值 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 shut_down();
|
||
</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>返回值 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_robot();
|
||
</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>返回值 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 disable_robot();
|
||
</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 TRUE为进入拖拽模式,FALSE为退出拖拽模式</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 drag_mode_enable(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#%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 查询结果</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 is_in_drag_mode(BOOL *in_drag);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
int example_drag()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
BOOL in_drag;
|
||
demo.is_in_drag_mode(&in_drag);
|
||
demo.drag_mode_enable(TRUE);
|
||
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></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 摩擦力补偿系数,系数值范围0-150,,150就是补偿150%的摩擦力</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_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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
int example_drag()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
BOOL in_drag;
|
||
|
||
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 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></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>返回值 ERR_SUCC 成功 其他失败 各个机型每个关节默认值:(Zu7=Zu5,Zu与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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
int example_drag()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
DragFrictionCompensationGainList list;
|
||
demo.get_drag_friction_compensation_gain(&list);
|
||
for(int i=0; i<6; i++){
|
||
std::cout << list.gain[i] << std::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></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 SDK版本号</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_sdk_version(char *version);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取sdk版本号
|
||
int example_getsdk_version()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
char ver[100];
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//查询当前SDK版本
|
||
demo.get_sdk_version(ver);
|
||
std::cout << " SDK version is :" << ver << std::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></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 SDK日志路径</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 static_get_SDK_filepath(char *filepath);
|
||
</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 SDK日志路径</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_SDK_filepath(char *filepath);
|
||
</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 SDK日志路径</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 static_set_SDK_filepath(char *filepath);
|
||
</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 SDK日志路径</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_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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置SDK日志路径
|
||
int example_set_SDK_filepath()
|
||
{
|
||
//设置SDK日志路径
|
||
char path[20] = "D://test.log";
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
ret = demo.set_SDK_filepath(path);//设置SDK文件路径
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
std::cout << ret << std::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></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>返回值 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_debug_mode(BOOL mode);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置SDK是否开启调试模式
|
||
int example_set_debug_mode()
|
||
{
|
||
BOOL mode;
|
||
JAKAZuRobot demo;
|
||
//设置调试模式,将在终端上打印调试信息
|
||
demo.set_debug_mode(TRUE);
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
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></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 控制器名字</li><li>ip_list 控制器ip列表,控制器名字为具体值时返回该名字所对应的控制器IP地址,控制器名字为空时,返回网段类内的所有控制器IP地址</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</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 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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取控制器ip
|
||
int example_get_controller_ip()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
char ip_list[2000] = { 0 };
|
||
char controller_name1[50] = "";
|
||
|
||
//获取控制器ip
|
||
ret = demo.get_controller_ip( controller_name1, ip_list);
|
||
std::cout << ret << std::endl;
|
||
std::cout << " ip_list is :" << ip_list << std::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></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>返回值 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_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 关节空间下代表关节号[0-5],笛卡尔下依次为轴x,y,z,rx,ry,rz</li><li>move_mode 机械臂运动模式,增量运动、者绝对运动(即持续jog运动)和连续运动,参考2.13选择合适类型 ,可选类型有INCR ABS</li><li>coord_type 机械臂运动坐标系,工具坐标系,基坐标系(当前的世界/用户坐标系)或关节空间,参考2.12选择合适类型</li><li>vel_cmd 指令速度,旋转轴或关节运动单位为rad/s,移动轴单位为mm/s</li><li>pos_cmd 指令位置,旋转轴或关节运动单位为rad,移动轴单位为mm 当move_mode是连续时,参数可忽略</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 jog(int aj_num, MoveMode move_mode, CoordType coord_type, double vel_cmd, double pos_cmd);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//机械臂手动运动
|
||
int main()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.152");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//手动运动,其中INCR代表增量运动,0.5代表速度为0.5rad/s
|
||
demo.jog(1, INCR, COORD_JOINT , 0.5, 30);
|
||
Sleep(5000);
|
||
//手动运动停止
|
||
demo.jog_stop(0);
|
||
//机械臂去使能
|
||
demo.disable_robot();
|
||
//机械臂下电
|
||
demo.power_off();
|
||
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></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 机械臂轴号0-5,num为-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 jog_stop();
|
||
</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 机械臂关节运动目标位置</li><li>move_mode 指定运动模式:增量运动、绝对运动</li><li>is_block 设置接口是否为阻塞接口,TRUE为阻塞接口 FALSE为非阻塞接口,阻塞时默认30s超时</li><li>speed 机械臂关节运动速度,单位:rad/s</li><li>acc 机械臂关节运动角加速度</li><li>tol 机械臂关节运动终点误差,该参数使得两段运动之间更平滑,使用该参数时需要连续多段运动,且为非阻塞状态。</li><li>option_cond 机械臂关节可选参数,如果不需要,该值可不赋值,填入空指针就可</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 joint_move(const JointValue *joint_pos, MoveMode move_mode, BOOL is_block, double speed, double acc, double tol, const OptionalCond *option_cond);
|
||
</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 机械臂末端运动目标位置</li><li>move_mode 指定运动模式:增量运动、绝对运动</li><li>is_block 设置接口是否为阻塞接口,TRUE 为阻塞接口 FALSE 为非阻塞接口,阻塞时默认30s超时</li><li>speed 机械臂直线运动速度,单位:mm/s</li><li>acc 机械臂直线运动线加速度</li><li>tol 机械臂直线运动终点误差.该参数使得两段运动之间更平滑,使用该参数时需要连续多段运动,且为非阻塞状态。</li><li>option_cond 机械臂直线运动可选参数,如果不需要,该值可不赋值,填入空指针就可</li><li>ori_vel 姿态速度,单位rad/s</li><li>ori_acc 姿态加速度,单位rad/s^2</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</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 linear_move(const CartesianPose *end_pos, MoveMode move_mode, BOOL is_block, double speed, double accel = 50, double tol = 0, const OptionalCond *option_cond = nullptr, double ori_vel = 3.14, double ori_acc = 12.56);
|
||
</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 example_linear_move()
|
||
{
|
||
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
RobotStatus status;
|
||
//登录控制器,需要将192.168.2.229替换为自己控制器的IP
|
||
demo.login_in("192.168.2.160");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//定义并初始化CartesianPose变量,旋转角为弧度。
|
||
CartesianPose cart;
|
||
cart.tran.x = 300; cart.tran.y = 300; cart.tran.z = 100;
|
||
cart.rpy.rx = 3.14; cart.rpy.ry = 0 ; cart.rpy.rz = 0;
|
||
//笛卡尔空间运动,其中ABS代表绝对运动,FALSE代表指令是非阻塞的,10代表速度为10mm/s
|
||
printf("rx=%f , ry=%f, rz=%f", cart.rpy.rx, cart.rpy.ry, cart.rpy.rz);
|
||
demo.linear_move(&cart, ABS, FALSE, 200, 10 ,1,NULL);
|
||
for (int i = 10; i > 0;i--) {
|
||
cart.tran.x = 150; cart.tran.y = 300;
|
||
//笛卡尔空间扩展运动,其中ABS代表绝对运动,FALSE代表指令是非阻塞的,20代表最大速度为20mm/s ,10代表加速度为10mm/s2,5代表圆弧过度半径为5mm
|
||
demo.linear_move(&cart, ABS, FALSE, 20, 10, 5, NULL);
|
||
cart.tran.x = 150; cart.tran.y = 250;
|
||
demo.linear_move(&cart, ABS, FALSE, 20, 10, 5, NULL);
|
||
cart.tran.x = 225; cart.tran.y = 250;
|
||
demo.linear_move(&cart, ABS, FALSE, 20, 10, 5, NULL);
|
||
cart.tran.x = 300; cart.tran.y = 250;
|
||
demo.linear_move(&cart, ABS, FALSE, 20, 10, 5, NULL);
|
||
cart.tran.x = 300; cart.tran.y = 300;
|
||
demo.linear_move(&cart, ABS, FALSE, 20, 10, 5, NULL);
|
||
Sleep(3000);
|
||
}
|
||
demo.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></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 机械臂末端运动目标位置</li><li>mid_pos 机械臂末端运中间点</li><li>move_mode 指定运动模式:增量运动、绝对运动</li><li>is_block 设置接口是否为阻塞接口,TRUE 为阻塞接口 FALSE 为非阻塞接口</li><li>speed 机械臂直线运动速度,单位:mm/s</li><li>acc 机械臂笛卡尔空间加速度, 单位:mm/s^2</li><li>tol 机械臂笛卡尔空间运动终点误差</li><li>option_cond 机械臂关节可选参数,如果不需要,该值可不赋值,填入空指针就可</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>返回值 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 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);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
define PI = 3.14
|
||
//机械臂圆弧运动 ,关节速度上限3.14rad/s
|
||
int example_circle_move()
|
||
{
|
||
OptionalCond opt;
|
||
CartesianPose end_p,mid_p;
|
||
end_p.tran.x = -200; end_p.tran.y = 400; end_p.tran.z = 400;
|
||
end_p.rpy.rx = -PI/2 ; end_p.rpy.ry = 0 ; end_p.rpy.rz =0 ;
|
||
mid_p.tran.x = -300; mid_p.tran.y = 400; mid_p.tran.z = 500;
|
||
mid_p.rpy.rx = -PI/2 ; mid_p.rpy.ry = 0 ; mid_p.rpy.rz =0 ;
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//定义并初始化关JointValue变量
|
||
JointValue joint_pos = { 85.76 , -6.207 , 111.269 , 74.938 , 94.24 , 0 };
|
||
//关节空间运动,其中ABS代表绝对运动,TRUE代表指令是阻塞的,1代表速度为1rad/s
|
||
demo.joint_move(&joint_pos, ABS, TRUE, 1);
|
||
//圆弧运动,其中ABS代表绝对运动,TRUE代表指令是阻塞的,20代表直线速度为20mm/s,1代表加速度,0.1代表机械臂终点误差,opt为可选参数, 3代表圈数为3。
|
||
demo.circular_move(&end_p, &mid_p, ABS, TRUE, 20, 1, 0.1,&opt);
|
||
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></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 "jktypes.h"
|
||
#include "JAKAZuRobot.h"
|
||
|
||
#define PI (3.1415926)
|
||
#define PI_2 (1.5707963)
|
||
int example_circular_move()
|
||
{
|
||
JAKAZuRobot robot;
|
||
robot.login_in("192.168.20.138");
|
||
robot.power_on();
|
||
robot.enable_robot();
|
||
|
||
CartesianPose start_pos {-251.054, -48.360, 374.000, 3.14, 0, 1.57}; // 开始点
|
||
CartesianPose mid_pos = {-555.050, 116.250, 374.000, 3.14, 0, 1.57}; // 中间点
|
||
CartesianPose end_pos = {-295.050, 267.450, 374.000, 3.14, 0, 1.57}; // 结束点
|
||
|
||
robot.jog_stop(-1); // 停止当前关节运动
|
||
|
||
JointValue ref_jv {0, 90, 90, 90, -90, 0}; // 先移动到到开始点附近
|
||
robot.joint_move(&ref_jv, MoveMode::ABS, true, 20);
|
||
|
||
JointValue start_jv;
|
||
robot.get_joint_position(&ref_jv); // 获取当前关节角
|
||
robot.kine_inverse(&ref_jv, &start_pos, &start_jv); // 以当前关节角为参考,计算开始关节角
|
||
robot.joint_move(&start_jv, MoveMode::ABS, true, 80); // 移动到开始关节角位置
|
||
|
||
// 指定旋转3圈
|
||
robot.circular_move(&end_pos, &mid_pos, MoveMode::ABS, true, 120, 100, 0.1, &opt, 3);
|
||
|
||
robot.disable_robot();
|
||
robot.power_off();
|
||
robot.login_out();
|
||
}
|
||
</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>返回值 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 motion_abort();
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//机械臂运动终止
|
||
int example_motion_abort()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//定义并初始化关JointValue变量
|
||
printf("start_move");
|
||
JointValue joint_pos = { 0 , 0 , 50 , 0 , 0 , 0 };
|
||
//关节空间运动,其中ABS代表绝对运动,TRUE代表指令是阻塞的,1代表速度为1rad/s
|
||
demo.joint_move(&joint_pos, ABS, FALSE, 1);
|
||
Sleep(500);
|
||
//运动0.5s后终止
|
||
demo.motion_abort();
|
||
printf("stop_move");
|
||
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></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 查询结果</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 is_in_pos(BOOL *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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
#define PI 3.1415926
|
||
//查询机械臂运动是否停止
|
||
int example_is_in_pos()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
BOOL in_pos;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.152");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
while (1)
|
||
{
|
||
//查询是否运动停止
|
||
demo.is_in_pos(&in_pos);
|
||
std::cout << " in_pos is :" << in_pos << std::endl;
|
||
Sleep(200);
|
||
}
|
||
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></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 时间参数,单位秒 大于0.5</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_block_wait_timeout(float 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 机械臂状态</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_robot_status(RobotStatus *status);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取机械臂状态监测数据
|
||
int example_get_robot_status()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
RobotStatus robstatus;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//获取机械臂状态监测数据
|
||
demo.get_robot_status(&robstatus);
|
||
demo.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></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>返回值 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_joint_position(JointValue *joint_position);
|
||
</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>返回值 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_joint_position(JointValue *joint_position);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取当前机械臂关节角
|
||
int example_get_joint_position()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
JointValue jot_pos;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//获取当前关节角
|
||
demo.get_joint_position(&jot_pos);
|
||
for (int i = 0; i < 6; i++)
|
||
{
|
||
std::cout << "joint [" << i+1 <<"] is :"<< jot_pos.jVal[i] << std::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></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 时间参数,单位:ms</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_status_data_update_time_interval(float millisecond);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置状态自动更新时间
|
||
int example_set_status_data_updata_interval()
|
||
{
|
||
float milisec = 100;
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//设置状态自动更新时间
|
||
ret = demo.set_status_data_update_time_interval(milisec);
|
||
std::cout << ret << std::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></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 工具末端位置查询结果</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_tcp_position(CartesianPose *tcp_position);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取工具末端位姿
|
||
int example_get_tcp_position()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
CartesianPose tcp_pos;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//获取工具末端位姿
|
||
demo.get_tcp_position(&tcp_pos);
|
||
std::cout << "tcp_pos is :n x: " << tcp_pos.tran.x << " y: " << tcp_pos.tran.y << " z: " << tcp_pos.tran.z << std::endl;
|
||
std::cout << "rx: " << tcp_pos.rpy.rx << " ry: " << tcp_pos.rpy.ry << " rz: " << tcp_pos.rpy.rz << std::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></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>参数说明 id 用户坐标系编号 ,取值范围为[1,15],0为默认世界坐标系,不可更改。</li><li>参数说明 user_frame 用户坐标系偏置值</li><li>参数说明 name 用户坐标系别名</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_user_frame_data(int id, const CartesianPose *user_frame, const 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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//用户坐标系查看及调整
|
||
int example_user_frame()
|
||
{
|
||
int id_ret, id_set;
|
||
id_set = 2;
|
||
CartesianPose tcp_ret, tcp_set;
|
||
char name[50] = "test";
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
//查询当前使用的用户坐标系ID
|
||
demo.get_user_frame_id(&id_ret);
|
||
//获取当前使用的用户坐标系信息
|
||
demo.get_user_frame_data(id_ret, &tcp_ret);
|
||
printf("id_using=%d nx=%f, y=%f, z=%f", id_ret, tcp_ret.tran.x, tcp_ret.tran.y, tcp_ret.tran.y);
|
||
printf("rx=%f, ry=%f, rz=%f", tcp_ret.rpy.rx, tcp_ret.rpy.ry, tcp_ret.rpy.rz);
|
||
//初始化用户坐标系坐标
|
||
tcp_set.tran.x = 0; tcp_set.tran.y = 0; tcp_set.tran.z = 10;
|
||
tcp_set.rpy.rx = 120 ; tcp_set.rpy.ry = 90 ; tcp_set.rpy.rz = -90 ;
|
||
//设置用户坐标系信息
|
||
demo.set_user_frame_data(id_set, &tcp_set, name);
|
||
//切换当前使用的用户坐标系坐标
|
||
demo.set_user_frame_id(id_set);
|
||
//查询当前使用的用户坐标系ID
|
||
demo.get_user_frame_id(&id_ret);
|
||
//获取设置的用户坐标系信息
|
||
demo.get_user_frame_data(id_ret, &tcp_ret);
|
||
printf("id_using=%d nx=%f, y=%f, z=%f", id_ret, tcp_ret.tran.x, tcp_ret.tran.y, tcp_ret.tran.y);
|
||
printf("rx=%f, ry=%f, rz=%f", tcp_ret.rpy.rx, tcp_ret.rpy.ry, tcp_ret.rpy.rz);
|
||
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></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 用户坐标系ID</li><li>tcp 用户坐标系偏置值</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_user_frame_data(int id, CartesianPose *tcp);
|
||
|
||
</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>参数说明 id 用户坐标系ID ,取值范围为[0,15],其中0为世界坐标系</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_user_frame_id(const int 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#%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 获取的结果</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_user_frame_id(int *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%E5%B7%A5%E5%85%B7%E4%BF%A1%E6%81%AF"><span>设置工具信息</span></a></h3><p>配置指定编号的工具信息</p><ul><li>参数说明 id 工具编号,取值范围为[1,15]</li><li>参数说明 tcp 工具坐标系相对法兰坐标系偏置</li><li>参数说明 name 指定工具的别名</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_data(int id, const CartesianPose *tcp,const 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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//工具坐标系查看及调整
|
||
int example_tool()
|
||
{
|
||
int id_ret,id_set;
|
||
id_set = 2;
|
||
CartesianPose tcp_ret,tcp_set;
|
||
char name[50] = "test";
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
//查询当前使用的工具ID
|
||
demo.get_tool_id(&id_ret);
|
||
//获取当前使用的工具信息
|
||
demo.get_tool_data(id_ret,&tcp_ret);
|
||
printf("id_using=%d nx=%f, y=%f, z=%f", id_ret, tcp_ret.tran.x, tcp_ret.tran.y, tcp_ret.tran.y);
|
||
printf("rx=%f, ry=%f, rz=%f", tcp_ret.rpy.rx, tcp_ret.rpy.ry, tcp_ret.rpy.rz);
|
||
//初始化工具坐标
|
||
tcp_set.tran.x = 0; tcp_set.tran.y = 0; tcp_set.tran.z = 10;
|
||
tcp_set.rpy.rx = 120 ; tcp_set.rpy.ry = 90 ; tcp_set.rpy.rz = -90 ;
|
||
//设置工具信息
|
||
demo.set_tool_data(id_set, &tcp_set, name);
|
||
//切换当前使用的工具坐标
|
||
demo.set_tool_id(id_set);
|
||
//查询当前使用的工具ID
|
||
demo.get_tool_id(&id_ret);
|
||
//获取设置的工具信息
|
||
demo.get_tool_data(id_ret, &tcp_ret);
|
||
printf("id_using=%d nx=%f, y=%f, z=%f", id_ret, tcp_ret.tran.x, tcp_ret.tran.y, tcp_ret.tran.y);
|
||
printf("rx=%f, ry=%f, rz=%f", tcp_ret.rpy.rx, tcp_ret.rpy.ry, tcp_ret.rpy.rz);
|
||
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></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 工具ID查询结果</li><li>tcp 工具坐标系相对法兰坐标系偏置</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_data(int *id, CartesianPose *tcp);
|
||
</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 工具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 get_tool_id(int *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%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>参数说明 id 工具坐标系ID ,取值范围为[0,15],0为使用默认末端法兰中心坐标系</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_id(const int 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%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 DO类型</li><li>index DO索引(从0开始)</li><li>value DO设置值</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_digital_output(IOType type, int index, BOOL value);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
//设置与查询数字输出
|
||
int main()
|
||
{
|
||
BOOL DO3;
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登录控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.152");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//查询do3的状态
|
||
demo.get_digital_output(IO_CABINET, 2, &DO3);
|
||
printf("D03 = %d", DO3);
|
||
//io_cabinet是控制柜面板IO,2代表DO3,1对应要设置的DO值。
|
||
demo.set_digital_output(IO_CABINET, 2, 1);
|
||
Sleep(1000);//需要window.h延时1s
|
||
//查询do3的状态
|
||
demo.get_digital_output(IO_CABINET, 2, &DO3);
|
||
printf("D03 = %d", DO3);
|
||
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></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 AO类型 ; 做modbus从站IO时,索引为4</li><li>index AO索引 (从0开始)</li><li>value AO设置值</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_analog_output(IOType type, int index, float value);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
//设置与查询模拟输出
|
||
int main()
|
||
{
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.152");
|
||
demo.power_on();
|
||
float AO35;
|
||
//查询Ao的状态
|
||
demo.get_analog_output(IO_CABINET, 0, &AO35);
|
||
printf("A035 = %f", AO35);
|
||
//io_cabinet是控制柜面板IO,2代表DO3,1.5对应要设置的DO值。
|
||
demo.set_analog_output(IO_CABINET, 0, 1.5);
|
||
Sleep(1000);//需要window.h延时1s
|
||
//查询Ao的状态
|
||
demo.get_analog_output(IO_CABINET, 0, &AO35);
|
||
printf("A035 = %f", AO35);
|
||
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></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 DO类型</li><li>index DO索引(从0开始)</li><li>value DO设置值</li><li>rel 0: 相对于运动起点, 1:相对于运动终点</li><li>distance 距离,指相对于起点或终点(依据rel参数)距离多少触发DO</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_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 AO类型</li><li>index AO索引(从0开始)</li><li>value AO设置值</li><li>rel 0: 相对于运动起点, 1:相对于运动终点</li><li>distance 距离,指相对于起点或终点(依据rel参数)距离多少触发AO</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_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 DI类型</li><li>index DI索引(从0开始)</li><li>result DI状态查询结果</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_digital_input(IOType type, int index, 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 DO类型</li><li>index DO索引(从0开始)</li><li>result DO状态查询结果</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_digital_output(IOType type, int index, 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#%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 AI的类型</li><li>index AI索引(从0开始)</li><li>result 指定AI状态查询结果</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_analog_input(IOType type, int index, float *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#%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 AO的类型</li><li>index AO索引(从0开始)</li><li>result 指定AO状态查询结果</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_analog_output(IOType type, int index, float *result);
|
||
</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 扩展IO模块运行状态查询结果</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 is_extio_running(BOOL *is_running);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
//查询扩展IO状态
|
||
int main()
|
||
{
|
||
BOOL is_running;
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
//查询TIO的状态
|
||
demo.is_extio_running(&is_running);
|
||
printf("tio = %d", is_running);
|
||
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></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 负载质心、质量数据</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_payload(const 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%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 负载查询结果</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_payload(PayLoad *payload);
|
||
</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 example_payload()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
PayLoad payloadret;
|
||
PayLoad payload_set;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//查询当前负载数据
|
||
demo.get_payload(&payloadret);
|
||
std::cout << " payload mass is :" << payloadret.mass << " kg" << std::endl;
|
||
std::cout << " payload center of mass is nx: " << payloadret.centroid.x<< "y: " << payloadret.centroid.y << "z: " << payloadret.centroid.z << std::endl;
|
||
payload_set.mass = 1.0;
|
||
//单位mm
|
||
payload_set.centroid.x = 0; payload_set.centroid.y = 0; payload_set.centroid.z = 10;
|
||
//设置当前负载数据
|
||
demo.set_payload(&payload_set);
|
||
//查询当前负载数据
|
||
demo.get_payload(&payloadret);
|
||
std::cout << " payload mass is :" << payloadret.mass << " kg" << std::endl;
|
||
std::cout << " payload center of mass is nx: " << payloadret.centroid.x << "y: " << payloadret.centroid.y << "z: " << payloadret.centroid.z << std::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></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 电压使能,0:关,1开</li><li>vout_vol 电压大小 0:24v 1:12v</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_tio_vout_param(int vout_enable, int vout_vol);
|
||
</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 电压使能,0:关,1开</li><li>vout_vol 电压大小 0:24v 1:12v</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_tio_vout_param(int *vout_enable, int *vout_vol);
|
||
</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 信号量参数</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_tio_rs_signal(SignInfo sign_info);
|
||
</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 example_add_tio_rs_signal()
|
||
{
|
||
JAKAZuRobot robot;
|
||
robot.login_in("192.168.20.138");
|
||
robot.power_on();
|
||
robot.enable_robot();
|
||
|
||
SignInfo sign_info {0};
|
||
memcpy(sign_info.sig_name, "sign_tmp", sizeof("sign_tmp"));
|
||
sign_info.chn_id = 0,
|
||
sign_info.sig_type = 0,
|
||
sign_info.value = 10,
|
||
sign_info.frequency = 5;
|
||
sign_info.sig_addr = 0x1;
|
||
|
||
robot.add_tio_rs_signal(sign_info);
|
||
|
||
robot.disable_robot();
|
||
robot.power_off();
|
||
robot.login_out();
|
||
}
|
||
</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 信号量名称</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 del_tio_rs_signal(const char *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 example_del_tio_rs_signal()
|
||
{
|
||
JAKAZuRobot robot;
|
||
robot.login_in("192.168.20.138");
|
||
robot.power_on();
|
||
robot.enable_robot();
|
||
|
||
const char* name = "sign_tmp";
|
||
robot.del_tio_rs_signal(name);
|
||
robot.disable_robot();
|
||
robot.power_off();
|
||
robot.login_out();
|
||
}
|
||
</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 通道号</li><li>data 数据字段</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 send_tio_rs_command(int chn_id, uint8_t* data,int buffsize);
|
||
</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 example_send_tio_rs_command()
|
||
{
|
||
JAKAZuRobot robot;
|
||
robot.login_in("192.168.20.138");
|
||
robot.power_on();
|
||
robot.enable_robot();
|
||
|
||
uint8_t cmd[] = {'t', 'e', 's', 't', 'c', 'm', 'd'};
|
||
robot.send_tio_rs_command(0, cmd, sizeof(cmd));
|
||
|
||
robot.disable_robot();
|
||
robot.power_off();
|
||
robot.login_out();
|
||
}
|
||
</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 信号量信息数组</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 update_tio_rs_signal(SignInfo_simple sign_info);
|
||
</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* 信号量信息数组</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_rs485_signal_info(SignInfo *sign_info);
|
||
</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 example_get_rs485_signal_info()
|
||
{
|
||
JAKAZuRobot robot;
|
||
robot.login_in("192.168.20.138");
|
||
robot.power_on();
|
||
robot.enable_robot();
|
||
|
||
SignInfo sign_info[256];
|
||
robot.get_rs485_signal_info(sign_info);
|
||
|
||
robot.disable_robot();
|
||
robot.power_off();
|
||
robot.login_out();
|
||
}
|
||
</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 tio类型 0 for DI Pins,1 for DO Pins,2 for AI Pins <ul><li>DI Pins: 0:0x00 DI2为NPN,DI1为NPN。1:0x01 DI2为NPN,DI1为PNP。2:0x10 DI2为PNP,DI1为NPN。3:0x11 DI2为PNP,DI1为PNP。</li><li>DO Pins: 低8位数据高4位为DO2配置,低四位为DO1配置。0x0 DO为NPN输出;0x1 DO为PNP输出;0x2 DO为推挽输出;0xF RS485H接口。</li><li>AI Pins: 0:模拟输入功能使能,RS485L禁止。1:RS485L接口使能,模拟输入功能禁止。</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_tio_pin_mode(int pin_type, int 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 tio类型 0 for DI Pins, 1 for DO Pins, 2 for AI Pins <ul><li>DI Pins: 0:0x00 DI2为NPN,DI1为NPN,1:0x01 DI2为NPN,DI1为PNP, 2:0x10 DI2为PNP,DI1为NPN,3:0x11 DI2为PNP,DI1为PNP</li><li>DO Pins: 低8位数据高4位为DO2配置,低四位为DO1配置。0x0 DO为NPN输出,0x1 DO为PNP输出, 0x2 DO为推挽输出, 0xF RS485H接口</li><li>AI Pins: 0:模拟输入功能使能,RS485L禁止, 1:RS485L接口使能,模拟输入功能禁止</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 get_tio_pin_mode(int pin_type, int *pin_mode);
|
||
</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 当通道模式设置为Modbus RTU时,需额外指定Modbus从站节点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_rs485_chn_comm(ModRtuComm mod_rtu_com);
|
||
</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 查询时chn_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 get_rs485_chn_comm(ModRtuComm *mod_rtu_com);
|
||
</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 0: RS485H, channel 1; 1: RS485L, channel 2</li><li>chn_mode 0: Modbus RTU, 1: Raw RS485, 2, torque sensor</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_rs485_chn_mode(int chn_id, int chn_mode);
|
||
</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 输入参数 0: RS485H, channel 1。1: RS485L, channel 2</li><li>chn_mode 输出参数 0: Modbus RTU。1: Raw RS485。2:torque sensor</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_rs485_chn_mode(int chn_id, int *chn_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%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 安装角度四元数</li><li>appang 安装角度RPY角</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_installation_angle(Quaternion *quat, Rpy *appang);
|
||
</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 <iostream>
|
||
|
||
int main()
|
||
{
|
||
JAKAZuRobot robot;
|
||
errno_t ret = robot.login_in("192.168.137.152");
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "login failed.";
|
||
return -1;
|
||
}
|
||
|
||
ret = robot.set_installation_angle(3.14, 0);
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "set installation angle failed.";
|
||
return -1;
|
||
}
|
||
|
||
Quaternion quat;
|
||
Rpy rpy;
|
||
ret = robot.get_installation_angle(&quat, &rpy);
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "get installation angle failed.";
|
||
return -1;
|
||
}
|
||
|
||
std::cout << "quat: [" << quat.x << ", " << quat.y << ", " << quat.z << ", " << quat.s << "]";
|
||
std::cout << "anglex: " << rpy.rx << ", anglez: " << rpy.rz << "";
|
||
|
||
ret = robot.login_out();
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "login out failed.";
|
||
return -1;
|
||
}
|
||
|
||
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></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 绕X轴旋转角度</li><li>angleZ 绕Z轴旋转角度</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_installation_angle(double angleX, double angleZ);
|
||
</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 <iostream>
|
||
|
||
int main()
|
||
{
|
||
JAKAZuRobot robot;
|
||
errno_t ret = robot.login_in("192.168.137.152");
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "login failed.";
|
||
return -1;
|
||
}
|
||
|
||
ret = robot.set_installation_angle(3.14, 0);
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "set installation angle failed.";
|
||
return -1;
|
||
}
|
||
|
||
Quaternion quat;
|
||
Rpy rpy;
|
||
ret = robot.get_installation_angle(&quat, &rpy);
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "get installation angle failed.";
|
||
return -1;
|
||
}
|
||
|
||
std::cout << "quat: [" << quat.x << ", " << quat.y << ", " << quat.z << ", " << quat.s << "]";
|
||
std::cout << "anglex: " << rpy.rx << ", anglez: " << rpy.rz << "";
|
||
|
||
ret = robot.login_out();
|
||
if (ret != ERR_SUCC)
|
||
{
|
||
std::cerr << "login out failed.";
|
||
return -1;
|
||
}
|
||
|
||
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></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 机械臂状态查询结果</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_robot_state(RobotState *state);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取机械臂状态(急停 上电 伺服使能)
|
||
int example_get_robstate()
|
||
{
|
||
JAKAZuRobot demo;
|
||
//声明机械臂状态结构体
|
||
RobotState state;
|
||
demo.login_in("192.168.2.152");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//查询机械臂状态
|
||
demo.get_robot_state(&state);
|
||
std::cout << "is e_stoped : " << state.estoped << std::endl;
|
||
std::cout << "is powered : " << state.poweredOn << std::endl;
|
||
std::cout << "is servoEnabled : " << state.servoEnabled << std::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></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 查询结果</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 is_on_limit(BOOL *on_limit);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//查询是否超出限位
|
||
int example_is_on_limit()
|
||
{
|
||
JAKAZuRobot demo;
|
||
BOOL on_limit;
|
||
demo.login_in("192.168.2.152");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
while (1)
|
||
{
|
||
//查询是否超限
|
||
demo.is_on_limit(&on_limit);
|
||
std::cout << " on_limit is :" << on_limit << std::endl;
|
||
Sleep(200);
|
||
}
|
||
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></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 查询结果</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 is_in_collision(BOOL *in_collision);
|
||
</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>返回值 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 collision_recover();
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//碰撞保护状态查询,恢复
|
||
int example_collision_recover()
|
||
{
|
||
JAKAZuRobot demo;
|
||
BOOL in_collision;
|
||
demo.login_in("192.168.2.152");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//查询是否处于碰撞保护状态
|
||
demo.is_in_collision(&in_collision);
|
||
std::cout << " in_collision is :" << in_collision << std::endl;
|
||
if (in_collision)
|
||
//如果处于碰撞保护模式,则从碰撞保护中恢复
|
||
{demo.collision_recover();}
|
||
else
|
||
{std::cout << "robot is not collisio" << std::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></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 碰撞等级,取值范围[0,5] ,其中0为关闭碰撞,1为碰撞阈值25N,2为碰撞阈值50N,3为碰撞阈值75N,4为碰撞阈值100N,5为碰撞阈值125N</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_collision_level(const int level);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//碰撞等级查看,设置
|
||
int example_collision_level()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
int level;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.152");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//查询当前碰撞等级
|
||
demo.get_collision_level(&level);
|
||
std::cout << " collision level is :" << level << std::endl;
|
||
//设置碰撞等级,[0,5],0为关闭碰撞,1为碰撞阈值25N,2为碰撞阈值50N,3为碰撞阈值75N,4为碰撞阈值100N,5为碰撞阈值125N,
|
||
demo.set_collision_level(2);
|
||
//查询当前碰撞等级
|
||
demo.get_collision_level(&level);
|
||
std::cout << " collision level is :" << level << std::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></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>返回值 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_collision_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%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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置网络异常时机械臂自动终止运动类型
|
||
int example_set_network_exception_handle()
|
||
{
|
||
float milisec = 100;
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//设置柔顺力矩条件
|
||
ret = demo.set_network_exception_handle(milisec, MOT_KEEP);
|
||
std::cout << ret << std::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></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>返回值 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_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>返回值 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 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 指向用户定义的函数的函数指针</li><li>error_code 机械臂的错误码</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_error_handler(CallBackFuncType func);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//注册机械臂出错函数 错误处理,类中断
|
||
void user_error_handle(int error_code)
|
||
{
|
||
std::cout << error_code << std::endl;
|
||
}
|
||
int example_set_err_handle()
|
||
{
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.229");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//设置用户异常回调函数
|
||
demo.set_error_handler(user_error_handle);
|
||
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></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>返回值 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_errorcode_file_path(char *path);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//错误码查看
|
||
int example_get_last_errcode()
|
||
{
|
||
int ret
|
||
//初始化错误码文件存放路径
|
||
char path[100] = "E:JAKA_ERROR_CODE.csv";
|
||
JAKAZuRobot demo;
|
||
ErrorCode Eret;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
ret = demo.program_load("not_exist999875");//故意加载一个不存在的程序,引发报错。
|
||
std::cout << ret << std::endl;
|
||
demo.get_last_error(&Eret);//查询最后一个报错信息
|
||
std::cout << " error code is :" << Eret.code << " message: "<< Eret.message<< std::endl;
|
||
demo.set_errorcode_file_path(path);//设置错误码说明文件
|
||
demo.get_last_error(&Eret);//查询最后一个报错信息
|
||
std::cout << " error code is :" << Eret.code << " message: " << Eret.message << std::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></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>返回值 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 program_run();
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//脚本加载,脚本运行控制,脚本过程查看
|
||
int example_program()
|
||
{
|
||
char name[128];
|
||
int cur_line;
|
||
JAKAZuRobot demo;
|
||
ProgramState pstatus;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//加载预先通过app编辑完成的example脚本
|
||
demo.program_load("example");
|
||
//获取已加载的程序名
|
||
demo.get_loaded_program(name);
|
||
std::cout <<"Pro_name is :"<< name << std::endl;
|
||
//运行当前加载的程序
|
||
demo.program_run();
|
||
Sleep(1000);//让程序先运行1s
|
||
//暂停当前运行的程序
|
||
demo.program_pause();
|
||
//获取当前执行程序的行号
|
||
demo.get_current_line(&cur_line);
|
||
std::cout << "cur_line is :" << cur_line << std::endl;
|
||
//获取当前程序状态
|
||
demo.get_program_state(&pstatus);
|
||
std::cout << "pro_status is : " << pstatus << std::endl;
|
||
//继续运行当前程序
|
||
demo.program_resume();
|
||
Sleep(10000);//需要window.h延时10s
|
||
//终止当前程序
|
||
demo.program_abort();
|
||
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></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>返回值 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 program_pause();
|
||
</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>返回值 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 program_resume();
|
||
</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>返回值 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 program_abort();
|
||
</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 程序文件路径</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 program_load(const char *file);
|
||
</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 程序文件路径</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_loaded_program(char *file);
|
||
</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 当前行号查询结果</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_current_line(int *curr_line);
|
||
</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 作业程序执行状态查询结果</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_program_state(ProgramState *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#%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 是程序运行倍率,设置范围为[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_rapidrate(double rapid_rate);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//机械臂速度查看及调整
|
||
int example_rapidrate()
|
||
{
|
||
double rapid_rate;
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.152");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//获取机械臂运动速率
|
||
demo.get_rapidrate(&rapid_rate);
|
||
std::cout << "rapid_rate is : " << rapid_rate << std::endl;
|
||
//设置机械臂运动速率
|
||
demo.set_rapidrate(0.4);
|
||
Sleep(100);
|
||
demo.get_rapidrate(&rapid_rate);
|
||
std::cout << "rapid_rate is : " << rapid_rate << std::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></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>返回值 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_rapidrate(double *rapid_rate);
|
||
</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 轨迹复现配置参数</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_traj_config(const TrajTrackPara *para);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//轨迹复现参数查看及设置
|
||
int example_traj_config()
|
||
{
|
||
JAKAZuRobot demo;
|
||
TrajTrackPara trajpar_read;
|
||
TrajTrackPara trajpar_set;
|
||
demo.login_in("192.168.2.194");
|
||
//查询当前轨迹复现参数
|
||
demo.get_traj_config(&trajpar_read);
|
||
std::cout << " trajTrackPara is :n xyz interval:" << trajpar_read.xyz_interval << " rpy interval is :" << trajpar_read.rpy_interval << std::endl;
|
||
std::cout << " vel: " << trajpar_read.vel << " acc: " << trajpar_read.acc << std::endl;
|
||
//设置当前轨迹复现参数
|
||
trajpar_set.xyz_interval = 0.01; trajpar_set.rpy_interval = 0.01; trajpar_set.vel = 10; trajpar_set.acc = 2;
|
||
demo.set_traj_config(&trajpar_set);
|
||
//查询当前轨迹复现参数
|
||
demo.get_traj_config(&trajpar_read);
|
||
std::cout << " trajTrackPara is :n xyz interval:" << trajpar_read.xyz_interval << " rpy interval is :" << trajpar_read.rpy_interval << std::endl;
|
||
std::cout << " vel: " << trajpar_read.vel << " acc: " << trajpar_read.acc << std::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></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 轨迹复现配置参数</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_traj_config(TrajTrackPara *para);
|
||
</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 选择TRUE时,开始数据采集,选择FALSE时,结束数据采集</li><li>filename 采集数据的存储文件名,当filename为空指针时,存储文件以当前日期命名</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_traj_sample_mode(const BOOL mode,char *filename);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//轨迹采集开关与状态查询
|
||
int example_traj_sample()
|
||
{
|
||
BOOL samp_stu;
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
char name[20] = "testxx";
|
||
//开启轨迹复现数据采集开关
|
||
demo.set_traj_sample_mode(TRUE, name);
|
||
//查询轨迹复现采集状态
|
||
demo.get_traj_sample_status(&samp_stu);
|
||
Sleep(10000);
|
||
demo.set_traj_sample_mode(FALSE, name);
|
||
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></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 为TRUE时,数据正在采集,为FALSE时,数据采集结束,在数据采集状态时不允许再次开启数据采集开关</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_traj_sample_status(BOOL* sample_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%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 控制器中已经存在的轨迹复现数据的文件名</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_exist_traj_file_name(MultStrStorType *filename);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//查询控制器中已经存在的轨迹复现数据的文件名
|
||
int example_get_traj_existed_filename()
|
||
{
|
||
JAKAZuRobot demo;
|
||
MultStrStorType traj_file;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//查询当前轨迹文件名。
|
||
demo.get_exist_traj_file_name(&traj_file);
|
||
std::cout << "file nums :" << traj_file.len << std::endl;
|
||
for(int i=0; i<traj_file.len;i++)
|
||
std::cout << traj_file.name[i] << std::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></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 原文件名</li><li>dest 目标文件名,文件名长度不能超过100个字符,文件名不能为空,目标文件名不支持中文</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 rename_traj_file_name(const char *src,const char *dest);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//重命名轨迹复现的数据文件名
|
||
int example_rename_traj_file_name()
|
||
{
|
||
JAKAZuRobot demo;
|
||
MultStrStorType traj_file;
|
||
char name_new[20] = "555";
|
||
demo.login_in("192.168.2.194");
|
||
//查询当前轨迹文件名。
|
||
demo.get_exist_traj_file_name(&traj_file);
|
||
std::cout << "file nums :" << traj_file.len << std::endl;
|
||
for (int i = 0; i < traj_file.len; i++)
|
||
{
|
||
std::cout << traj_file.name[i] << std::endl;
|
||
}
|
||
//重命名轨迹复现的数据文件名
|
||
demo.rename_traj_file_name(traj_file.name[0], name_new);
|
||
//查询当前轨迹文件名。
|
||
demo.get_exist_traj_file_name(&traj_file);
|
||
std::cout << "file nums :" << traj_file.len << std::endl;
|
||
for (int i = 0; i < traj_file.len; i++)
|
||
{
|
||
std::cout << traj_file.name[i] << std::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></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 要删除的文件的文件名,文件名为数据文件名字</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_traj_file(const char *filename);
|
||
</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 数据文件的文件名,文件名为数据文件名字,不带后缀</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 generate_traj_exe_file(const char *filename);
|
||
</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 TRUE为进入伺服位置控制模式,FALSE表示退出该模式</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</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 servo_move_enable(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#%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 机械臂关节运动目标位置</li><li>move_mode 指定运动模式:增量运动、绝对运动和连续运动</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 servo_j(const JointValue *joint_pos, MoveMode move_mode);
|
||
</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> //机械臂伺服关节运动
|
||
//使用该接口时需要先调用servo_move_enable(TRUE)开启伺服控制
|
||
//控制器的发送周期为8ms,建议用户发送周期也为8ms,网络环境较差的情况可以适当减小周期
|
||
//关节速度上限180rad/s
|
||
//本指令与joint_move有较大差别,joint_move的插补由控制器进行,servo_j需要预先进行轨迹规划。
|
||
#include <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
int main()
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.152");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//TRUE为进入伺服模式
|
||
demo.servo_move_enable(TRUE);
|
||
//定义并初始化关JointValue变量
|
||
JointValue joint_pos = {-0.001, 0, 0, 0, 0, -0.001};
|
||
for (int i = 0; i < 100; i++)
|
||
{
|
||
//关节空间伺服运动,其中INCR代表增量运动
|
||
demo.servo_j(&joint_pos, INCR);
|
||
}
|
||
//FALSE为退出伺服模式
|
||
demo.servo_move_enable(FALSE);
|
||
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></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 机械臂关节运动目标位置</li><li>move_mode 指定运动模式:增量运动、绝对运动</li></ul></li><li><ul><li>step_num 倍分周期,servo_j运动周期为step_num*8ms,其中step_num>=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 servo_j(const JointValue *joint_pos, MoveMode move_mode, unsigned int step_num);
|
||
```
|
||
### 机械臂笛卡尔空间伺服模式运动
|
||
机械臂笛卡尔空间位置控制模式
|
||
* 参数说明
|
||
* cartesian_pose 机械臂笛卡尔空间运动目标位置
|
||
* move_mode 指定运动模式:增量运动、绝对运动和连续运动
|
||
* 返回值 ERR_SUCC 成功 其他失败
|
||
```c++
|
||
errno_t servo_p(const CartesianPose *cartesian_pose, 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> //机械臂伺服笛卡尔空间运动
|
||
//使用该接口时需要先调用servo_move_enable(TRUE)开启伺服控制
|
||
//控制器的发送周期为8ms,建议用户发送周期也为8ms,网络环境较差的情况可以适当减小周期
|
||
//关节速度上限180 rad/s,笛卡尔空间没有相对直观的限制,但应满足该关节速度限制
|
||
//本指令与linear_move有较大差别,linear_move的插补由控制器进行,servo_p需要预先进行轨迹规划。
|
||
#include <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
|
||
int main()//机械臂伺服笛卡尔空间运动
|
||
{
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.152");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//TRUE为进入伺服模式
|
||
demo.servo_move_enable(TRUE);
|
||
//定义并初始化关CartesianPose变量
|
||
CartesianPose cart;
|
||
cart.tran.x = 0; cart.tran.y = 1; cart.tran.z = 0;
|
||
cart.rpy.rx = 0; cart.rpy.ry = 0; cart.rpy.rz = 0;
|
||
for (int i = 0; i < 100; i++)
|
||
{
|
||
//笛卡尔空间伺服运动,其中INCR代表增量运动
|
||
demo.servo_p(&cart, INCR);
|
||
}
|
||
//FALSE为退出伺服模式
|
||
demo.servo_move_enable(FALSE);
|
||
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></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 机械臂笛卡尔空间运动目标位置</li><li>move_mode 指定运动模式:增量运动、绝对运动</li><li>step_num 倍分周期,servo_p运动周期为step_num*8ms,其中step_num>=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 servo_p(const CartesianPose *cartesian_pose, MoveMode move_mode, unsigned int step_num);
|
||
</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>返回值 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 servo_move_use_none_filter();
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
//servo模式禁用滤波器
|
||
int example_servo_use_none_filter()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
ret = demo.servo_move_use_none_filter();
|
||
std::cout << ret << std::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></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 servo_move_use_joint_LPF(double cutoffFreq);
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>参数说明 <ul><li>cutoffFreq 一阶低通滤波器截止频率</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//servo模式下关节空间一阶低通滤波
|
||
int example_servo_use_joint_LPF()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//servo模式下关节空间一阶低通滤波,截止频率0.5Hz
|
||
ret = demo.servo_move_use_joint_LPF(0.5);
|
||
std::cout << ret << std::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></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 笛卡尔空间姿态变化速度的速度上限值(绝对值)°/s</li><li>max_ar 笛卡尔空间姿态变化速度的加速度上限值(绝对值)°/s^2</li><li>max_jr 笛卡尔空间姿态变化速度的加加速度上限值(绝对值)°/s^3</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 servo_move_use_joint_NLF(double max_vr, double max_ar, double max_jr);
|
||
```
|
||
**代码示例:**
|
||
|
||
```c++
|
||
#include <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//servo模式下关节空间非线性滤波
|
||
int example_servo_use_joint_NLF()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//servo模式下关节空间非线性滤波
|
||
ret = demo.servo_move_use_joint_NLF(2,2,4);
|
||
std::cout << ret << std::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></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 笛卡尔空间下移动指令速度的上限值(绝对值)。单位:mm/s</li><li>max_ap 笛卡尔空间下移动指令加速度的上限值(绝对值)。单位:mm/s^2</li><li>max_jp 笛卡尔空间下移动指令加加速度的上限值(绝对值)单位:mm/s^3</li><li>max_vr 笛卡尔空间姿态变化速度的速度上限值(绝对值)°/s</li><li>max_ar 笛卡尔空间姿态变化速度的加速度上限值(绝对值)°/s^2</li><li>max_jr 笛卡尔空间姿态变化速度的加加速度上限值(绝对值)°/s^3</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 servo_move_use_carte_NLF(double max_vp, double max_ap, double max_jp, double max_vr, double max_ar, double max_jr);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//servo模式下笛卡尔空间非线性滤波
|
||
int example_servo_use_carte_NLF()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//servo模式下笛卡尔空间非线性滤波
|
||
ret = demo.servo_move_use_carte_NLF(2, 2, 4, 2, 2, 4);
|
||
std::cout << ret << std::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></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 均值滤波器缓冲区的大小</li><li>kp 加速度滤波系数</li><li>kv 速度滤波系数</li><li>ka 位置滤波系数</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 servo_move_use_joint_MMF(int max_buf, double kp, double kv, double ka);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
#define PI 3.1415926
|
||
//servo模式下关节空间多阶均值滤波
|
||
int example_servo_use_joint_MMF()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//servo模式下关节空间多阶均值滤波
|
||
ret = demo.servo_move_use_joint_MMF(20, 0.2, 0.4, 0.2);
|
||
std::cout << ret << std::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></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 均值滤波器缓冲区的大小</li><li>kp 加速度滤波系数</li><li>kv 速度滤波系数</li><li>ka 位置滤波系数</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 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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//servo模式下速度前瞻参数设置
|
||
int example_speed_foresight()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//servo模式下关节空间多阶均值滤波
|
||
ret = demo.servo_speed_foresight(200, 2);
|
||
std::cout << ret << std::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></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>机械臂EDG(External Data Guider)功能</span></a></h2><p>目前只能通过C++语言和Python语言使用该功能,该功能使用UDP(User 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 使能开关,true为开启EDG功能,false表示退出该功能</li><li>edg_stat_ip sdk客户端IP地址</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败 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 EDG反馈数据(包括关节位置、速度、力矩、笛卡尔位置、传感器数据)</li><li>robot_index 使用默认值,无须传参</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 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>返回值 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 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 机械臂关节运动目标位置</li><li>move_mode 指定运动模式:增量运动、绝对运动</li><li>step_num 倍分周期,edg_servo_j运动周期为step_num*8ms,其中step_num>=1</li><li>robot_index 使用默认值,无须传参</li></ul></li><li>返回值 ERR_SUCC成功 其他失败 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);
|
||
```
|
||
**代码示例:**
|
||
|
||
```c++
|
||
#include "JAKAZuRobot.h"
|
||
#include <iostream>
|
||
#include <stdio.h>
|
||
#include <math.h>
|
||
#include <string.h>
|
||
#include <pthread.h>
|
||
#include "timespec.h"
|
||
#include <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <time.h>
|
||
#include <thread>
|
||
#include <chrono>
|
||
|
||
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& func_name) {
|
||
if (ret != 0) {
|
||
std::cout << func_name << " failed, return value: " << ret << std::endl;
|
||
}
|
||
}
|
||
|
||
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(&jpos, ABS, TRUE, 10);
|
||
check_return(ret, "joint_move");
|
||
JointValue jpos_cmd;
|
||
memset(&jpos_cmd,0,sizeof(jpos_cmd));
|
||
sched_param sch;
|
||
sch.sched_priority = 90;
|
||
pthread_setschedparam(pthread_self(), SCHED_FIFO, &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, &next);
|
||
for(int i = 0;i<2000;i++)
|
||
{
|
||
timespec cc;
|
||
timespec max_wkup_time;
|
||
clock_gettime(CLOCK_REALTIME, &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(&jpos_cmd,MoveMode::ABS);
|
||
check_return(ret, "edg_servo_j");
|
||
ret = robot.edg_get_stat(&edgdata);
|
||
check_return(ret, "edg_get_stat");
|
||
cout << "jointVal:" << edgdata.jointVal.jVal[0] << "," << edgdata.jointVal.jVal[1] << "," << edgdata.jointVal.jVal[2]
|
||
<< "," << edgdata.jointVal.jVal[3] << "," << edgdata.jointVal.jVal[4] << "," << edgdata.jointVal.jVal[5] << endl;
|
||
cout << "jvel:" << edgdata.jointVel.jVel[0] << "," << edgdata.jointVel.jVel[1] << "," << edgdata.jointVel.jVel[2]
|
||
<< "," << edgdata.jointVel.jVel[3] << "," << edgdata.jointVel.jVel[4] << "," << edgdata.jointVel.jVel[5] << endl;
|
||
cout << "jtorque:" << edgdata.jointTorq.jtorq[0] << "," << edgdata.jointTorq.jtorq[1] << "," << edgdata.jointTorq.jtorq[2]
|
||
<< "," << edgdata.jointTorq.jtorq[3] << "," << edgdata.jointTorq.jtorq[4] << "," << edgdata.jointTorq.jtorq[5] << endl;
|
||
cout << "cpos:" << edgdata.cartpose.tran.x << "," << edgdata.cartpose.tran.y << "," << edgdata.cartpose.tran.z
|
||
<< "," << edgdata.cartpose.rpy.rx << "," << edgdata.cartpose.rpy.ry << "," << edgdata.cartpose.rpy.rz << endl;
|
||
cout << "sensor:" << edgdata.torqSensor.fx << "," << edgdata.torqSensor.fy << "," << edgdata.torqSensor.fz
|
||
<< "," << edgdata.torqSensor.tx << "," << edgdata.torqSensor.ty << "," << edgdata.torqSensor.tz << endl;
|
||
unsigned long int detail[3];
|
||
ret = robot.edg_stat_details(detail);
|
||
check_return(ret, "edg_stat_details");
|
||
cout << "detail:" << detail[0] << "," << detail[1] << "," << detail[2] << endl;
|
||
//等待下一个周期
|
||
timespec dt;
|
||
dt.tv_nsec = 8000000;
|
||
dt.tv_sec = 0;
|
||
next = timespec_add(next, dt);
|
||
clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &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 机械臂笛卡尔空间运动目标位置</li><li>move_mode 指定运动模式:增量运动、绝对运动和连续运动</li><li>step_num 倍分周期,edg_servo_p运动周期为step_num*8ms,其中step_num>=1</li><li>robot_index 使用默认值,无须传参</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败 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 <iostream>
|
||
#include <stdio.h>
|
||
#include <math.h>
|
||
#include <string.h>
|
||
#include <pthread.h>
|
||
#include "timespec.h"
|
||
#include <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <time.h>
|
||
#include <thread>
|
||
#include <chrono>
|
||
|
||
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& func_name) {
|
||
if (ret != 0) {
|
||
std::cout << func_name << " failed, return value: " << ret << std::endl;
|
||
}
|
||
}
|
||
|
||
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(&jpos, ABS, TRUE, 10);
|
||
check_return(ret, "joint_move");
|
||
CartesianPose cpos_init, cpos_cmd;
|
||
robot.kine_forward(&jpos,&cpos_init);
|
||
sched_param sch;
|
||
sch.sched_priority = 90;
|
||
pthread_setschedparam(pthread_self(), SCHED_FIFO, &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, &next);
|
||
|
||
for(int i=0;i<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(&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, &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 逆解计算用的参考关节空间位置</li><li>cartesian_pose 笛卡尔空间位姿值</li><li>joint_pos 计算成功时关节空间位置计算结果</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 kine_inverse(const JointValue *ref_pos, const CartesianPose *cartesian_pose, JointValue *joint_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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
// 机械臂逆解 已知tcp_pos,求joint_pos
|
||
int example_kine_inverse()
|
||
{
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
//初始化参考点
|
||
JointValue ref_jpos = { 0.558, 0.872, 0.872 , 0.349, 0.191, 0.191 };
|
||
//初始化笛卡尔空间点坐标
|
||
CartesianPose tcp_pos;
|
||
tcp_pos.tran.x = 243.568; tcp_pos.tran.y = 164.064; tcp_pos.tran.z = 742.002;
|
||
tcp_pos.rpy.rx = -1.81826; tcp_pos.rpy.ry = -0.834253; tcp_pos.rpy.rz = -2.30243;
|
||
//初始化返回值
|
||
JointValue joint_pos = { 0,0,0,0,0,0 }; ;
|
||
demo.login_in("192.168.2.194");
|
||
//求逆解
|
||
ret = demo.kine_inverse(&ref_jpos, &tcp_pos, &joint_pos);
|
||
std::cout << ret << std::endl;
|
||
for (int i = 0; i < 6; i++)
|
||
{
|
||
std::cout << "joint [" << i + 1 << "] is :" << joint_pos.jVal[i] << std::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></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 逆解计算用的参考关节空间位置</li><li>cartesian_pose 笛卡尔空间位姿值</li><li>joint_pos 计算成功时关节空间位置计算结果</li><li>tool 指定的工具坐标系,未指定则使用当前默认工具坐标系</li><li>userFrame 指定的用户坐标系,未指定则使用当前默认的用户坐标系</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 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 关节空间位置</li><li>cartesian_pose 笛卡尔空间位姿计算结果</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 kine_forward(const JointValue *joint_pos, CartesianPose *cartesian_pose);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
// 4.55机械臂正解 已知joint_pos,求tcp_pos
|
||
int example_kine_forward()
|
||
{
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
//初始化返回值
|
||
CartesianPose tcp_pos;
|
||
demo.login_in("192.168.2.194");
|
||
//初始化关节矩阵
|
||
JointValue joint_pos = { 0.558, 0.872, 0.872 , 0.349, 0.191, 0.191 };
|
||
//求正解
|
||
ret = demo.kine_forward(&joint_pos, &tcp_pos);
|
||
std::cout << ret << std::endl;
|
||
std::cout << "tcp_pos is :\n x: " << tcp_pos.tran.x << " y: " << tcp_pos.tran.y << " z: " << tcp_pos.tran.z << std::endl;
|
||
std::cout << "rx: " << tcp_pos.rpy.rx << " ry: " << tcp_pos.rpy.ry << " rz: " << tcp_pos.rpy.rz << std::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></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 关节空间位置</li><li>cartesian_pose 笛卡尔空间位姿计算结果</li><li>tool 指定的工具坐标系,未指定则使用当前默认工具坐标系</li><li>userFrame 指定的用户坐标系,未指定则使用当前默认的用户坐标系</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 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 待转换的欧拉角数据</li><li>rot_matrix 转换后的旋转矩阵</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 rpy_to_rot_matrix(const Rpy *rpy, RotMatrix *rot_matrix);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
// 4.56欧拉角到旋转矩阵
|
||
int example_rpy_to_rot_matrix()
|
||
{
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
//初始化旋转矩阵
|
||
Rpy rpy;
|
||
rpy.rx = -1.81826; rpy.ry = -0.834253; rpy.rz = -2.30243;
|
||
//初始化返回值
|
||
RotMatrix rot_matrix;
|
||
demo.login_in("192.168.2.194");
|
||
//欧拉角变换成旋转矩阵
|
||
ret = demo.rpy_to_rot_matrix(&rpy, &rot_matrix);
|
||
std::cout << ret << "eul2rotm" << std::endl;
|
||
printf("%f %f %f", rot_matrix.x.x, rot_matrix.y.x, rot_matrix.z.x);
|
||
printf("%f %f %f", rot_matrix.x.y, rot_matrix.y.y, rot_matrix.z.y);
|
||
printf("%f %f %f", rot_matrix.x.z, rot_matrix.y.z, rot_matrix.z.z);
|
||
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></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 待转换的旋转矩阵数据</li><li>rpy 转换后的RPY欧拉角结果</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 rot_matrix_to_rpy(const RotMatrix *rot_matrix, Rpy *rpy);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
// 4.57旋转矩阵--->欧拉角
|
||
int example_rot_matrix_to_rpy()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//初始化欧拉角
|
||
Rpy rpy;
|
||
//初始化旋转矩阵
|
||
RotMatrix rot_matrix;
|
||
rot_matrix.x.x = -0.4488, rot_matrix.y.x = -0.4998, rot_matrix.z.x = 0.7408;
|
||
rot_matrix.x.y = -0.6621, rot_matrix.y.y = -0.3708, rot_matrix.z.y = -0.6513;
|
||
rot_matrix.x.z = 0.6002, rot_matrix.y.z = -0.7828, rot_matrix.z.z = -0.1645;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
ret = demo.rot_matrix_to_rpy(&rot_matrix, &rpy);
|
||
std::cout << ret << "rotm2eul:" << std::endl;
|
||
printf("%f %f %f ", rpy.rx, rpy.ry, rpy.rz);
|
||
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></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 quaternion_to_rot_matrix(const Quaternion *quaternion, RotMatrix *rot_matrix);
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>参数说明 <ul><li>quaternion 待转换的四元数数据</li><li>rot_matrix 转换后的旋转矩阵结果</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
// 4.58四元数-->旋转矩阵
|
||
int example_quaternion_to_rot_matrix()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//初始化四元数
|
||
Quaternion quat;
|
||
quat.s = 0.0629; quat.x = 0.522886; quat.y = -0.5592; quat.z = 0.6453;
|
||
//初始化旋转矩阵
|
||
RotMatrix rot_matrix;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
ret = demo.quaternion_to_rot_matrix(&quat, &rot_matrix);
|
||
std::cout << ret << "quatl2rotm:" << std::endl;
|
||
printf("%f %f %f\n", rot_matrix.x.x, rot_matrix.y.x, rot_matrix.z.x);
|
||
printf("%f %f %f\n", rot_matrix.x.y, rot_matrix.y.y, rot_matrix.z.y);
|
||
printf("%f %f %f\n", rot_matrix.x.z, rot_matrix.y.z, rot_matrix.z.z);
|
||
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></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 DH参数</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_dh_param(const JKHD *handle, DHParam *dhParam);
|
||
</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 待转换的旋转矩阵</li><li>quaternion 转换后的四元数结果</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 rot_matrix_to_quaternion(const RotMatrix *rot_matrix, Quaternion *quaternion);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
// 4.59旋转矩阵--->四元数
|
||
int example_rot_matrix_to_quaternion()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//初始化四元数
|
||
Quaternion quat;
|
||
//初始化旋转矩阵
|
||
RotMatrix rot_matrix;
|
||
rot_matrix.x.x = -0.4488774, rot_matrix.y.x = -0.499824, rot_matrix.z.x = 0.740795;
|
||
rot_matrix.x.y = -0.662098, rot_matrix.y.y = -0.370777, rot_matrix.z.y = -0.651268;
|
||
rot_matrix.x.z = 0.600190, rot_matrix.y.z = -0.782751, rot_matrix.z.z = -0.164538;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
ret = demo.rot_matrix_to_quaternion(&rot_matrix, &quat);
|
||
std::cout << ret << "rotm2quat:" << std::endl;
|
||
printf("%lf %lf %lf %lf \n", quat.s, quat.x, quat.y, quat.z);
|
||
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></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 传感器型号,取值范围为1-6或10,需要与传感器硬件外壳铭刻的型号数字相匹配。其中10特指已经内置与机器人法兰内部的传感器,此型传感器由系统自动管理,无需调用此接口进行配置</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_torsenosr_brand(int sensor_brand);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置末端力传感器型号
|
||
int example_set_torsensor_brand()
|
||
{
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//设置末端力传感器型号
|
||
ret = demo.set_torsenosr_brand(2);
|
||
std::cout << ret << std::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></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 传感器型号,</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_torsenosr_brand(int* sensor_brand);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取末端力传感器型号
|
||
int example_get_torsensor_brand()
|
||
{
|
||
int ret,cur_sensor;
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//获取末端力传感器型号
|
||
ret = demo.get_torsenosr_brand(&cur_sensor);
|
||
std::cout << ret << std::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></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 0代表关闭传感器,1代表开启传感器</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</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 set_torque_sensor_mode(int sensor_mode);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//开启或关闭末端力传感器
|
||
int example_set_torque_sensor_mode()
|
||
{
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
demo.servo_move_enable(TRUE);
|
||
Sleep(200);
|
||
//开启或关闭末端力传感器,1打开,0关闭
|
||
ret = demo.set_torque_sensor_mode(1);
|
||
std::cout << ret << std::endl;
|
||
return 0;
|
||
}
|
||
::: 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 末端负载,单位为kg、mm</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_torq_sensor_tool_payload(const 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%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 末端负载,单位为kg、mm</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_torq_sensor_tool_payload(PayLoad *payload);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//辨识传感器负载和获取负载辨识状态,设置与获取传感器末端负载
|
||
int example_sensor_payload()
|
||
{
|
||
JointValue joint_pos;
|
||
PayLoad pl,pl_ret;
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//结束位置需要根据实际设置,此处仅为示例,请勿直接使用
|
||
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;
|
||
//开始辨识传感器负载
|
||
ret = demo.start_torq_sensor_payload_identify(&joint_pos);
|
||
do
|
||
{
|
||
Sleep(1000);
|
||
//查询传感器负载状态
|
||
demo.get_torq_sensor_identify_staus(&ret);
|
||
std::cout << ret << std::endl;
|
||
} while (1 == ret);
|
||
//获取辨识结果
|
||
if(ret == 0) ret = demo.get_torq_sensor_payload_identify_result(&pl);
|
||
std::cout << ret << std::endl;
|
||
//设置传感器末端负载
|
||
ret = demo.set_torq_sensor_tool_payload(&pl);
|
||
//获取当前设置的传感器末端负载
|
||
ret = demo.get_torq_sensor_tool_payload(&pl_ret);
|
||
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></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 0代表辨识完成结果已可以读取,1代表暂无可以读取的辨识结果,2代表辨识失败。</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_torq_sensor_identify_staus(int *identify_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#%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 负载辨识终点,关于终点点位设置的注意事项,请参考<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>返回值 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 start_torq_sensor_payload_identify(const JointValue *joint_pos);
|
||
</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 末端负载,单位为kg、mm</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_torq_sensor_payload_identify_result(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%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>type:0为使用网口或USB,1为使用TIO。</li><li>ip_addr为使用网口时传感器ip地址。</li><li>port为使用网口时力控传感器端口号。</li><li>设置为1或使用USB时ip_addr和port不起作用,给定如示例所示的默认参数即可</li></ul></li><li>返回值 ERR_SUCC 成功 其他失败</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 set_torque_sensor_comm(const int type, const char *ip_addr, const int port);
|
||
</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>type:0为使用网口或USB,1为使用TIO。</li><li>ip_addr为使用网口时传感器ip地址。</li><li>port为使用网口时力控传感器端口号。</li><li>使用TIO或USB时ip_addr和port为无效参数,返回值无实际意义</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_torque_sensor_comm(int *type, char *ip_addr,int *port);
|
||
</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 example_torque_sensor_comm()
|
||
{
|
||
char ip_set[30]="192.168.2.108";
|
||
int ret=2;
|
||
int type_set = 0,port_set = 4008;
|
||
char ip_ret[30]="1";
|
||
int type_ret = 0, port_ret = 0;
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.105替换为自己控制器的IP
|
||
printf("logining!");
|
||
demo.login_in("192.168.2.106");
|
||
//机械臂上电
|
||
printf("powering");
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//设置传感器型号
|
||
ret = demo.set_torsenosr_brand(4);
|
||
//获取传感器通讯参数
|
||
ret = demo.get_torque_sensor_comm(&type_ret, ip_ret, &port_ret);
|
||
std::cout << ret << std::endl;
|
||
std::cout << ip_ret << std::endl;
|
||
std::cout << port_ret << std::endl;
|
||
std::cin >> type_ret;
|
||
//设置传感器通信参数
|
||
ret = demo.set_torque_sensor_comm(type_set, ip_set, port_set);
|
||
std::cout << ret << std::endl;
|
||
std::cout << ip_set << std::endl;
|
||
std::cout << port_set << std::endl;
|
||
std::cin >> type_set;
|
||
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></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>返回值 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 disable_force_control();
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//关闭力柔顺控制
|
||
int example_disable_force_control()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//关闭力矩控制
|
||
ret = demo.disable_force_control();
|
||
std::cout << ret << std::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></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 低通滤波器截止频率,单位: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 set_torque_sensor_filter(const float torque_sensor_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%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 低通滤波器截止频率,单位: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 get_torque_sensor_filter(float *torque_sensor_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%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 各方向上允许的最大力或力矩数值,超过此数值将触发碰撞保护。 <ul><li>力限位 fx, fy, fz 单位: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 set_torque_sensor_soft_limit( const FTxyz 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 各方向上允许的最大力或力矩数值,超过此数值将触发碰撞保护。 <ul><li>力限位 fx, fy, fz 单位: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 get_torque_sensor_soft_limit(FTxyz *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 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_admittance_ctrl(const int enable_flag);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//开启或关闭工具拖拽
|
||
int example_enable_admittance_ctrl()
|
||
{
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要替换为自己控制器的IP
|
||
demo.login_in("10.5.5.100");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//开启力传感器
|
||
demo.set_torque_sensor_mode(1);
|
||
//校零传感器
|
||
demo.set_compliant_type(1, 0);
|
||
printf("inint sensor comple");
|
||
//设置柔顺控制参数,此处仅开启z方向
|
||
ret = demo.set_admit_ctrl_config(0, 0, 30, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(1, 0, 30, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(2, 1, 30, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(3, 0, 3, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(4, 0, 3, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(5, 0, 3, 0, 0, 0);
|
||
//开启工具拖拽
|
||
ret = demo.enable_admittance_ctrl(1);
|
||
printf("enable_admittance_ctrl open!");
|
||
std::cout << ret << std::endl;
|
||
printf("input any word to quit:");
|
||
std::cin >> ret;
|
||
//关闭工具拖拽
|
||
ret = demo.enable_admittance_ctrl(0);
|
||
printf("close");
|
||
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></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_compensation:1代表立即进行一次传感器校零,并将APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque切换为实际外力;0代表不做校零操作,并将不处于力控状态下时APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque切换为传感器原始读数(若处于力控状态下则仍为实际外力)。</li><li>compliance_type:0代表不使用任何一种柔顺控制方法,1代表开启恒力柔顺控制,2代表开启速度柔顺控制。</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_compliant_type(int sensor_compensation, int compliance_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%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 是否开启传感器补偿,1代表APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque为实际外力;0代表不处于力控状态下时APP的实时力曲线显示以及torq_sensor_monitor_data.actTorque为传感器原始读数(若处于力控状态下则仍为实际外力)。</li><li>compliance_type 0 代表不使用任何一种柔顺控制方法 1 代表恒力柔顺控制,2 代表速度柔顺控制</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_compliant_type(int *sensor_compensation, int *compliance_type);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置与获取力控类型和传感器初始化状态
|
||
int example_set_compliant_type()
|
||
{
|
||
int ret,sensor_compensation,compliance_type;
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
demo.servo_move_enable(TRUE);
|
||
//设置力控类型和校零(初始化)选项
|
||
ret = demo.set_compliant_type(1,0);
|
||
std::cout << ret << std::endl;
|
||
//获取力控类型和读数显示(初始化)状态
|
||
ret = demo.get_compliant_type(&sensor_compensation, &compliance_type);
|
||
std::cout << ret << std::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></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>axis:0,x轴;1,y轴;2,z轴;3,rx;4,ry;5,rz。</li><li>opt:0关,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>返回值 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_admit_ctrl_config(int axis, int opt, double ftUser, double ftConstant, int ftNnormalTrack, double ftReboundFK);
|
||
</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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置力柔顺控制参数
|
||
int example_set_admit_ctrl_config()
|
||
{
|
||
int ret
|
||
JAKAZuRobot demo;
|
||
demo.login_in("192.168.2.194");
|
||
demo.power_on();
|
||
demo.enable_robot();
|
||
//设置力柔顺控制参数
|
||
ret = demo.set_admit_ctrl_config(0, 0, 30, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(1, 0, 30, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(2, 1, 30, 5, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(3, 0, 3, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(4, 0, 3, 0, 0, 0);
|
||
ret = demo.set_admit_ctrl_config(5, 0, 3, 0, 0, 0);
|
||
std::cout << ret << std::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></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 机械臂力柔顺控制参数存储地址,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_admit_ctrl_config(RobotAdmitCtrl *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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//获取力柔顺控制参数
|
||
int example_get_admit_ctrl_config()
|
||
{
|
||
RobotAdmitCtrl adm_ctr_cfg;
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//获取力控柔顺控制参数
|
||
ret = demo.get_admit_ctrl_config(&adm_ctr_cfg);
|
||
std::cout << ret << std::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></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 <iostream>
|
||
#include "JAKAZuRobot.h"
|
||
#include <windows.h>
|
||
|
||
//设置速度柔顺控制力条件
|
||
int example_set_compliance_condition()
|
||
{
|
||
FTxyz ft;
|
||
ft.fx = 10; ft.fy = 10; ft.fz = 10;
|
||
ft.tx = 10; ft.ty = 10; ft.tz = 10;
|
||
int ret
|
||
//实例API对象demo
|
||
JAKAZuRobot demo;
|
||
//登陆控制器,需要将192.168.2.194替换为自己控制器的IP
|
||
demo.login_in("192.168.2.194");
|
||
//机械臂上电
|
||
demo.power_on();
|
||
//机械臂上使能
|
||
demo.enable_robot();
|
||
//设置速度柔顺控制力条件
|
||
ret = demo.set_compliance_condition(&ft);
|
||
std::cout << ret << std::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></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>axis:0,x轴;1,y轴;2,z轴;3,rx;4,ry;5,rz。</li><li>opt:0关,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>enable,0 代表未开启,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-5,0代表关闭,越小越不灵敏</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-5,0代表关闭,越小越不灵敏</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 << "Hello World!";
|
||
|
||
JAKAZuRobot demo;
|
||
demo.login_in("10.5.5.100");
|
||
|
||
cout << "power on: " << demo.power_on() << endl;
|
||
cout << "enable: " << demo.enable_robot() << endl;
|
||
|
||
cout << "enable tool drive: " << demo.enable_tool_drive(1) << endl;
|
||
|
||
//set tool_drive_frame
|
||
FTFrameType tool_drive_frame;
|
||
demo.set_tool_drive_frame(FTFrameType::FTFrame_Tool);
|
||
demo.get_tool_drive_frame(&tool_drive_frame);
|
||
std::cout << tool_drive_frame << 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(&ref_point);
|
||
std::cout << ref_point << std::endl;
|
||
|
||
//compliant_speed_limit
|
||
double vel, angvel;
|
||
demo.set_compliant_speed_limit(500, 60);
|
||
demo.get_compliant_speed_limit(&vel, &angvel);
|
||
std::cout << vel << ", " << angvel << 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(&ft);
|
||
std::cout << ft.fx << ", " << ft.fy << ", " << ft.fz << ", " << ft.tx << ", " << ft.ty << ", " << ft.tz << ", " << 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 < 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(&robToolCfg);
|
||
|
||
//zero_end_sensor
|
||
cout << "zero: " << demo.zero_end_sensor() << endl;
|
||
|
||
//open tool drive
|
||
demo.enable_tool_drive(1);
|
||
int enable, state;
|
||
demo.get_tool_drive_state(&enable, &state);
|
||
Sleep(2000);
|
||
demo.enable_tool_drive(0);
|
||
|
||
//退出登录
|
||
demo.login_out();
|
||
|
||
cout << "end" << 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>axis:0,x轴;1,y轴;2,z轴;3,rx;4,ry;5,rz。</li><li>opt:0关,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#,传入参数编码为GBK;Linux为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#,传入参数编码为GBK;Linux为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#,传入参数编码为GBK;Linux为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#,传入参数编码为GBK;Linux为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#,传入参数编码为GBK;Linux为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> |