小强ROS机器人教程(22)_操作6自由度机械臂

小强主页

6自由度机械臂的资料在这个百度云盘链接里http://pan.baidu.com/s/1nuBpDaD 请仔细阅读二次开发部分的串口通信协议、虽然下文使用的是usb hid通信方式,但命令格式是一样

下文将操作6自由度机械臂完成主控板上存储的3组动作。

控制原理: 小车主机使用usb连接机械臂主控板,用户发送名为robot_arm/cmdstring的topic,这个topic内容为控制命令,最后由robot_arm节点负责将这个topic内容经由usb hid协议发送给机械臂主控板。

1.运行robot_arm节点

rosrun robot_arm move.py
#robot_arm包代码在这里 http://git.bwbot.org/publish/robot_arm

启动正常,机械臂会执行动作0(默认状态),同时命令窗口会显示如下内容

xiaoqiang@xiaoqiang-desktop:~/Documents/ros$ rosrun robot_arm move.py 
Opening robot arm device
Manufacturer: MyUSB_HID
Product: LOBOT
Serial No: 8D9823654852
Run the zero group action

2.构造robot_arm/cmdstring topic

robot_arm/cmdstring 这个topic 类型是std_msgs.msg中的String 即字符串。根据上文提供的机械臂二次开发资料,我们可以知道6自由度的控制协议是由一个无符号byte数组表示,因此我们在这里稍加改造,直接将这个数组的hex值变成字符串打包成topic命令。变换方式是采用python的byte array表示方式,将数组中每个元素的hex编码串在一起,然后将其中的0x换成\x。

例如: [0x55,0x55,0x05,0x06,0x00,0x01,0x00] 这个控制命令数组,转换成robot_arm/cmdstring 内容是,'\x55\x55\x05\x06\x00\x01\x00'
小技巧:看不懂的话,还可以用python的map函数帮忙转换,找规律。map(ord,'\x55\x55\x05\x06\x00\x01\x00')

我们要控制机械臂完成3个动作,这三个字符串内容如下

'\x55\x55\x05\x06\x00\x01\x00'

'\x55\x55\x05\x06\x01\x01\x00'

'\x55\x55\x05\x06\x02\x01\x00'

找到规律没...

3.发布运动命令

新开一个命令行终端,因为是演示,所以直接使用rostopic 的pub功能,将上面的字符串命令打包成topic发给robot_arm节点
动作1: rostopic pub robot_arm/cmdstring std_msgs/String '\x55\x55\x05\x06\x00\x01\x00' 
动作2: rostopic pub robot_arm/cmdstring std_msgs/String '\x55\x55\x05\x06\x01\x01\x00' 
动作3: rostopic pub robot_arm/cmdstring std_msgs/String '\x55\x55\x05\x06\x02\x01\x00'

4.运动结果暂时没有视频,需要自己实际操作,觉得运动不满意的话请参考我们这个舵机运动控制帖子:电机控制与缓动函数

小强主页 返回目录

results matching ""

    No results matching ""