机械臂操作手册
安全须知
- 如遇任何紧急情况,请立即按下紧急停止开关断电,以防操作人员受伤或机械臂损坏。
- 当机械臂断电时,执行器会立即进入松闸状态,可能无法保持当前姿态。需要人为提供外力保证机械臂不会因为重力倾倒并手动将机械臂摆放至安全姿态。
- 为防止机械臂关节过热,机械臂连续运行时间建议不超过30分钟。
- 机械臂初始位置(零位)如下图所示,保证每个关节横平竖直,不要出现倾斜角度。
简易运行步骤
- 将各个电源接好,并打开灯光
- 先将机械臂摆放至零位,将木块摆放在合适位置
- 给机械臂上电并登录系统,密码 ginger
- 开启一个终端 执行命令 sudo ./start
- 执行命令 rosservice call /cv/visualize_switch
- 执行命令 cd ~/catkin_ws
- 执行命令 sudo su 并输入密码 ginger
- 执行命令 source install/setup.bash
- 执行命令 roslaunch gluon_demo gluon_demo.launch
- 在弹出的 rviz 界面中点击 continue 控制机械臂进行运动
- 当执行完一整套动作后,在刚才的终端中 ctrl + c 关闭程序
- 将木块重新摆放在合适位置后,重复步骤 8-10 重新执行整套动作
运行步骤详解
启动步骤:
- 将各个电源正确连接,木块摆放至抓取区域,并打开灯光。
- 将机械臂摆放至起始姿态(零位),然后旋起安全按钮通电,并保持起始姿态 [ 注 1 ] ^{[注1]} [注1]直到第5步controller启动后机械臂执行器进入抱闸状态。
- 登录CCU(密码为ginger),并开启一个终端运行脚本start.sh以启动相机和机械臂controller。
$ sudo ./start.sh
- 观察执行器上指示灯,通电以后,执行器LED状态灯为黄色闪烁。若LED变成绿色闪烁,则机械臂执行器controller启动完毕,机械臂进入抱闸状态,此时姿态被自动设为机械臂零位。
注1:机械臂默认零位起始姿态如上图所示。若controller启动时机械臂未保持在起始姿态(零位),则大概率丢零。机械臂丢零会导致运动异常,需断电后返回上述第2步重新开始。在下方“rviz相关”部分可验证机械臂是否丢零。
仿真,控制与可视化
相机相关
新建终端,输入命令查看rostopic,若出现以下topic(/cv/xxx),则相机启动完毕。否则需检查硬件连接或断电重启。
$ rostopic list
/cv/camera
/cv/visualize
/cv/json
校准相机(非必要步骤,可跳过)。每次相机位置移动,或识别位置不准或识别图像中出现斜杠均需先执行校准命令。
$ rosservice call /cv/tag_calibrate
打开可视化开关
$ rosservice call /cv/visualize_switch
此时应显示信息
success: True
message: "Switch vis_flag to True"
注:若相机相关命令无效果,可尝试重新插拔相机或断电重启。
机械臂相关
新建终端,进入工作空间并启动rviz和控制程序,在弹出的rviz界面中点击continue按钮完成整套抓木块动作。
$ cd ~/catkin_ws
$ sudo su
$ source install/setup.bash
$ roslaunch gluon_demo gluon_demo.launch
当执行完整套动作后,在刚才的终端中 ctrl + c 结束程序,将木块重新摆放在合适位置后,输入命令重新执行整套动作
ctrl+c 结束程序
$ roslaunch gluon_demo gluon_demo.launch
rviz 相关
rviz是ROS自带的图形化工具,可以很方便的让用户通过图形界面开发调试ROS。同时根据真实机械臂运动状态反馈提供相应的仿真模拟和控制界面。
- 在左上角Panels菜单中选中MotionPlanning模块并添加
- 在Goal State下拉菜单中选择home_pose,点击Plan & Execute可控制机械臂回到零位。
- 此时机械臂应处于默认零位。若机械臂真实姿态与rviz中显示不符,则机械臂丢零。请断电后返回之前“连接步骤”重新开始。
- 若机械臂零位正确,在rviz中点击next可分步调试,点击continue可连续进行抓取,点击stop可停止连续抓取改回为分步调试。
校准,调试与debug
机械臂校准
通过修改配置文件参数校准机械臂,打开gluon.yaml配置文件
$ vi ~/catkin_ws/install/share/gluon_demo/configs/gluon.yaml
配置文件说明:
设置机械臂offset步骤:
-
抓取木块参数校准 (zone_or_not 设置为 true):
- 将机械臂抓取范围等分为4块区域,分别为左上,左下,右上,右下。
- 将木块放在左上区域的中心处,在rviz里点击next控制机械臂运动到木块上方。
- 观察夹爪抓取的位置在已有offset的基础上增大或者减小offset的值。
- 重复步骤 1~3 直到4块区域均可以抓准。
-
放置木块参数校准:
- 如果放置木块时未达到理想位置,可调整target_offset。
- 此步骤可分别用木块”机“和”院“测试,看看第一个字和最后一个字都是否能放在槽里。
-
夹爪力度参数校准:
- 抓取木块时的夹爪力度可以调整 close_gripper_angle 的值 。
- 完全张开为 -4,完全闭合为 0。
注:以上调整均以机械臂base_link坐标系(详见 rviz相关 图中红色为x轴,绿色为y轴,z轴为蓝色垂直向上)为参考坐标系,单位均为米。例如设置target_x_offset=0.01(默认值为0),则机械臂放置木块位置会沿base_link x轴正方向偏移1厘米。
注2:校准参数和机械臂零位绑定,如果每次断电重启后可以保证机械臂零位与之前一致,则无需校准。否则理论上每次断电重启后都需要进行一次参数校准以保证抓取效果。
gluon_demo:
zone_or_not: true #布尔变量,true为分区域设置机械臂的offset,false为不分区域设置机械臂的offset
#不分区域offset,单位:米
object_x_offset: 0.013 #机械臂x轴方向的offset
object_y_offset: 0.485 #机械臂y轴方向的offset
object_z_offet: 0.004 #机械臂z轴方向的offset
#抓取木块参数,单位:米
object_x_offset_left_upper : -0.012 #左上区域机械臂x轴方向的offset
object_y_offset_left_upper : 0.51 #左上区域机械臂y轴方向的offset
object_x_offset_right_upper : -0.009 #右上区域机械臂x轴方向的offset
object_y_offset_right_upper : 0.51 #右上区域机械臂y轴方向的offset
object_x_offset_left_lower : -0.012 #右上区域机械臂x轴方向的offset
object_y_offset_left_lower : 0.51 #右上区域机械臂y轴方向的offset
object_x_offset_right_lower : 0.003 #右下区域机械臂x轴方向的offset
object_y_offset_right_lower : 0.51 #右下区域机械臂y轴方向的offset
#放置木块参数,单位:米
target_x_offset: 0.005 #放置木块时机械臂x轴方向的offset
target_y_offset: 0 #放置木块时机械臂y轴方向的offset
target_z_offset: 0 #放置木块时机械臂z轴方向的offset
#夹爪力度参数
close_gripper_angle: -0.5 #抓取木块时的夹爪力度。完全张开为 -4,完全闭合为 0
log信息详解与debug
在机械臂抓取过程中,终端会打印log以提示用户下一步操作或当问题出现时供用户定位并解决问题。如需调整木块位置重新规划路径时,请遮住木块,防止调整过程中误识别木块位置。
Waiting to continue: Press ‘next’ to continue…
在rviz中点击next或continue进行下一步动作。点击next可分步调试,点击continue可连续进行抓取,点击stop可停止连续抓取改回为分步调试。
[WARN] [1627437379.265572696]: No available block, please re-arrange
无可抓取的木块,请重新调整木块位置,重新规划路径。
[WARN] [1627437379.265572696]: Identify error or block is out of range, please re-arrange
出现识别错误或木块超出可抓取范围,请重新调整木块位置,重新规划路径。
[WARN] [1627437379.265572696]: Planning failed, please re-arrange the [gong] block
当前"gong"字木块路径规划失败,请重新调整该木块位置,重新规划路径。(“源”是yuan,“院”是yuan2,其余木块均为对应拼音)
[ERROR] [1627437371.125197330]: Failed to call service openGrasp
控制夹爪服务调用失败,请ctrl+c退出进程后输入以下命令重启程序。
$ roslaunch gluon_demo gluon_demo.launch
[WARN] [1627437379.265572696]: Parse Error, Json Null
出现解析错误,相机未识别到物体或相机传的数据为空。调整木块位置或输入以下命令查看相机数据是否上传成功。
$ rostopic echo /cv/json
若上述解析错误[WARN]不断循环打印,且调整木块位置无效,需ctrl+c或ctrl+z退出进程,输入以下命令杀掉僵尸进程后重启程序。
$ sudo killall -9 grasp_vision_7
$ roslaunch gluon_demo gluon_demo.launch