常见问题:
机械臂二次开发常见问题
使用API(C、C++、Python)常见问题
1.若要周期查询机械臂状态,周期应当怎么设置?
若要周期查询机械臂状态,第二代版机械臂普通网口与WiFi连接时查询周期不能小于20ms,高速网口、USB口、485接口连接时查询周期可支持到10ms。建议设置在50ms以上。第三代版机械臂可以使用UDP回传,最快可以达到5ms。
2.通过API发送移动指令控制机械臂时,两点之间有明显的停顿时间,如何减少停顿?
- 可将移动指令设置为非阻塞模式,连续下发多个点位,机械臂会顺序执行,减少点位之间的停顿,但是依然没有设置连接下一条轨迹参数效果好。
- 使用设置连接下一条轨迹参数,使用此参数可以连续规划。
- 可以使用moveit进行规划,将A-B,B-C两段轨迹合成为一条轨迹,有效避免加减速过程,提高运行效率。
注:在第二代控制器中,机械臂移动指令最多缓存10个点位;在第三代控制器中,机械臂移动指令最多缓存300个点位。发送时需保持平衡,以免超出缓存限制。
3.python调用透传接口异常退出、Linux下报段错误如何排查?
从以下三个方面进行排查:
- 透传接口需要用到回调函数,排查是否设置回调函数。
- 查看环境配置是否有问题。
- 内存不对应,也可能与用户编写的程序有关,分批次下发排查程序是否有错误。
4.get_current_arm_state查询到的当前位姿pose中的姿态是xyz相对欧拉角还是zyx相对欧拉角?
我们用的是roll-pitch-yaw表示法,对应的是ZYX欧拉角内旋。
5.调用API控制机械臂沿工具端运动,可以使用什么接口?
调用切换示教运动坐标系的接口,切换示教坐标系为工具坐标系后,使用示教或者步进指令,即可控制机械臂沿工具端运动。
6.python运行报32位或64位的错误
示例库的问题,python调用C的库示例的库默认是64位,需要先排查是否和当前设备对应32、64位。
7.机械臂都支持哪些形式的二次开发?
目前支持的二次开发形式有四种
- 通过API形式:目前C\C++\C#\python\JSON\matlab六种开发环境。
- 通过ROS进行控制,目前支持ROS1的melodic与noetic两个版本和ROS2的humble和foxy两个版本。
- 通过JSON协议进行控制,此种方式不限制开发语言与开发系统。同时在Json协议中,支持TCP协议与485串行通讯协议
- 通过MODBUS-RTU/TCP控制机械臂。
8.ROS与API可以同时使用吗?
可以在ROS中调用API中的算法接口,ROS1参考调用机械臂JSON协议;ROS2参考ROS2调用API接口功能包说明。
9.如何在API中引用在线编程文件?
第二代机械臂:
- 保存在线编程文件,如果在线编程文件中包含拖动示教轨迹,需要连接机械臂运行一遍,在示教器文件夹下寻找GJTMP.txt文件保存。
- 在程序中写入引用的在线编程文件路径(包括文件名),如果为第三代,则该接口支持设置默认在线编程文件以及设置单步模式。如下所示:
第三代机械臂: 在线编程文件可直接保存到控制器中,使用JSON协议、API、ROS、MODBUS-RTU/TCP、IO均可触发。
使用ROS开发常见问题
1.ROS控制机械臂时,提示连接失败如何解决?
- 检查机械臂是否开机且通讯线缆连接正常。
- ping机械臂IP地址,查看是否返回ping值。
- 检查是否更改过机械臂默认IP地址(默认为192.168.1.18),如更改过机械臂IP,需在ROS资料包中,rm_driver>>src>>rm_robot.h文件中重新定义新的IP地址。
2.如何在ROS里引用正逆解函数库?
- 创建一个功能包或者进入现有ROS功能包,新建"include"以及"lib"文件夹(如果不存在)。
- 将API中提供的头文件复制到"include"文件夹,将"Linux"文件夹中的so库文件复制 到"lib"文件夹。
- 在ROS功能包中的CMakeLists.txt文件中,添加对引用库的依赖;
- 编译功能包;
- 引用头文件,在ROS代码中使用API库中的算法接口。