grasp_control
Getting started
抓取控制包,包括任务管理、目标识别、机械臂规划控制等功能
1. 启动
$ roslaunch grasp_control grasp_control.launch
2. 参数
grasp_direct: 抓取方向.当前支持 forward(前向)/down(向下)
# 误差补偿参数
x_offset: 机器人 x 方向误差
y_offset: 机器人 y 方向误差
z_offset: 机器人 z 方向误差
eef_offset: 夹爪高度. 建议保持默认值不变
realtime_monitoring; 实时监测.若设置为 True,抓取过程中实时监测目标是否丢失
# arm_planner param
max_plan_retries: 机械臂规划最大尝试次数
# detector param
transpose_orientation: 对目标方向进行翻转. 当前主要针对 二维码 识别
substitute_orientation: 使用 EEF 方向替代目标方向.
<!-- detector param -->
convert_orientation: 是否转换目标点方向,对于二维码抓取,需开启该参数,对 z 方向进行翻转
base_frame: 相机坐标系. 如 camera_color_optical_frame
object_frame: 目标物体坐标系. 如 aruco_marker_frame
3. 接口
1) 夹爪控制
# 1. 简单控制
$ rosservice call /grasp_service "command: 'gripper_close'" # 夹爪关闭
$ rosservice call /grasp_service "command: 'gripper_open'" # 夹爪张开
# 2. 夹爪张开/合并控制. 例如: 张开 85%
$ rostopic pub /command_robotiq_action/goal robotiq_2f_gripper_msgs/CommandRobotiqGripperActionGoal "header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
goal_id:
stamp:
secs: 0
nsecs: 0
id: ''
goal: {emergency_release: false, emergency_release_dir: 0, stop: false, position: 0.085,
speed: 0.0, force: 0.0}"
2) 机械臂控制
- /grasp_server:控制抓取服务。支持:
- pick:执行抓取操作
- place:执行放置动作
- follow:执行目标跟随动作(预留)
- stop:停止动作
- loop:循环抓放(预留)
- reset:机械臂复位
- gripper_open:夹爪张开
- gripper_close:夹爪闭合
3) 异常清除
有时控制器会因为掉电、位置或速度超限、规划失败等原因汇报错误,遇到这一状态需要手动解除。
3.1). xarm 机械臂
错误代码可以在 xarm/xarm_states
主题的 err
字段查看。
$ rosservice call /xarm/moveit_clear_err
参考:xarm_ros 包说明
#水平抓取状态下 《苹果》 定位 误差分析示例程序 (基于采样)
/launch/grasp_pos_error_calibration.launch
原理:1)控制机械臂实际移动到“零点”,然后将识别物体放置到这个零点位置。
2)机械臂归位,然后按固定位移移动,统计物体坐标测量值和真实值的差值,建立误差校正模型。
结果说明:误差校正模型分为2个线性函数,一个是不同相机距离的初始位置误差,另一个是视角差和内参共同造成的横移误差。
先应用横移误差,若不够再应用初始位置误差。
使用方法:1)启动抓取主程序:$ roslaunch grasp_bringup grasp_bringup.launch
2)开启苹果识别demo,$ ssh nvidia@192.168.1.110
$ rosrun yolo5_detector yolo5rt_dector.py
3)开启标定程序:$ roslaunch grasp_control grasp_pos_error_calibration.launch
4) 得到结果后将结果写入到/grasp_node.py