Skip to content

机械臂API开发常见问题

使用API(C、C++、Python)常见问题

1.若要周期查询机械臂状态,周期应当怎么设置?

若要周期查询机械臂状态,第二代版机械臂普通网口与WiFi连接时查询周期不能小于20ms,高速网口、USB口、485接口连接时查询周期可支持到10ms。建议设置在50ms以上。第三代版机械臂可以使用UDP回传,最快可以达到5ms。

2.通过API发送移动指令控制机械臂时,两点之间有明显的停顿时间,如何减少停顿?

  1. 可将移动指令设置为非阻塞模式,连续下发多个点位,机械臂会顺序执行,减少点位之间的停顿,但是依然没有设置连接下一条轨迹参数效果好。
  2. 使用设置连接下一条轨迹参数,使用此参数可以连续规划。
  3. 可以使用moveit进行规划,将A-B,B-C两段轨迹合成为一条轨迹,有效避免加减速过程,提高运行效率。

注:在第二代控制器中,机械臂移动指令最多缓存10个点位;在第三代控制器中,机械臂移动指令最多缓存300个点位。发送时需保持平衡,以免超出缓存限制。

3.python调用透传接口异常退出、Linux下报段错误如何排查?

从以下三个方面进行排查:

  1. 透传接口需要用到回调函数,排查是否设置回调函数。
  2. 查看环境配置是否有问题。
  3. 内存不对应,也可能与用户编写的程序有关,分批次下发排查程序是否有错误。

4.get_current_arm_state查询到的当前位姿pose中的姿态是xyz相对欧拉角还是zyx相对欧拉角?

我们用的是roll-pitch-yaw表示法,对应的是ZYX欧拉角内旋。

5.调用API控制机械臂沿工具端运动,可以使用什么接口?

调用切换示教运动坐标系的接口,切换示教坐标系为工具坐标系后,使用示教或者步进指令,即可控制机械臂沿工具端运动。

6.python运行报32位或64位的错误

示例库的问题,python调用C的库示例的库默认是64位,需要先排查是否和当前设备对应32、64位。

7.机械臂都支持哪些形式的二次开发?

目前支持的二次开发形式有四种

  1. 通过API形式:目前C\C++\C#\python\JSON\matlab六种开发环境。
  2. 通过ROS进行控制,目前支持ROS1的melodic与noetic两个版本和ROS2的humble和foxy两个版本。
  3. 通过JSON协议进行控制,此种方式不限制开发语言与开发系统。同时在Json协议中,支持TCP协议与485串行通讯协议
  4. 通过MODBUS-RTU/TCP控制机械臂。

8.ROS与API可以同时使用吗?

可以在ROS中调用API中的算法接口,ROS1参考调用机械臂JSON协议;ROS2参考ROS2调用API接口功能包说明

9.如何在API中引用在线编程文件?

第二代机械臂:

  1. 保存在线编程文件,如果在线编程文件中包含拖动示教轨迹,需要连接机械臂运行一遍,在示教器文件夹下寻找GJTMP.txt文件保存。

alt text

  1. 在程序中写入引用的在线编程文件路径(包括文件名),如果为第三代,则该接口支持设置默认在线编程文件以及设置单步模式。如下所示:

alt text

第三代机械臂: 在线编程文件可直接保存到控制器中,使用JSON协议、API、ROS、MODBUS-RTU/TCP、IO均可触发。

使用ROS开发常见问题

1.ROS控制机械臂时,提示连接失败如何解决?

  1. 检查机械臂是否开机且通讯线缆连接正常。
  2. ping机械臂IP地址,查看是否返回ping值。
  3. 检查是否更改过机械臂默认IP地址(默认为192.168.1.18),如更改过机械臂IP,需在ROS资料包中,rm_driver>>src>>rm_robot.h文件中重新定义新的IP地址。

alt text

2.如何在ROS里引用正逆解函数库?

  1. 创建一个功能包或者进入现有ROS功能包,新建"include"以及"lib"文件夹(如果不存在)。
  2. 将API中提供的头文件复制到"include"文件夹,将"Linux"文件夹中的so库文件复制 到"lib"文件夹。
  3. 在ROS功能包中的CMakeLists.txt文件中,添加对引用库的依赖;
  4. 编译功能包;
  5. 引用头文件,在ROS代码中使用API库中的算法接口。