ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

保姆级教程:用Realsense相机和ArUco码搞定AUBO i5机械臂的Eye-in-Hand标定

保姆级教程:用Realsense相机和ArUco码搞定AUBO i5机械臂的Eye-in-Hand标定 从零实现AUBO i5机械臂与Realsense相机的Eye-in-Hand标定全流程在工业自动化和机器人研究领域精确的手眼标定是实现视觉引导操作的关键基础。本文将详细介绍如何使用Intel Realsense D435i深度相机和ArUco标记完成AUBO i5协作机械臂的Eye-in-Hand标定涵盖从环境配置到结果验证的完整闭环流程。1. 环境准备与工具安装1.1 硬件设备清单AUBO i5协作机械臂确保机械臂控制器已通电并通过网线连接至工控机Realsense D435i相机建议使用官方推荐的USB 3.0接口连接标定板打印的标准ArUco标记推荐使用6x6_250字典尺寸100mm×100mm1.2 软件依赖安装在Ubuntu 20.04ROS Noetic环境下需要安装以下关键软件包sudo apt-get install ros-noetic-aruco-ros \ ros-noetic-realsense2-camera \ ros-noetic-easy-handeye \ ros-noetic-moveit验证相机驱动安装成功roslaunch realsense2_camera rs_camera.launch在RViz中确认能够正常接收彩色图像和深度信息。2. 标定系统架构设计2.1 坐标系关系梳理Eye-in-Hand标定需要明确以下关键坐标系机械臂基坐标系base_link机械臂的固定参考系末端工具坐标系wrist3_Link相机安装位置相机光学坐标系camera_color_optical_frame图像采集的基准标记坐标系aruco_marker_frameArUco码的位姿表达2.2 Launch文件配置创建eye_on_hand_calibration.launch文件关键参数配置如下arg namemarker_size value0.1 / !-- 与实际打印尺寸一致 -- arg namemarker_id value25 / !-- 与使用的ArUco ID匹配 -- arg namerobot_base_frame valuebase_link / arg namerobot_effector_frame valuewrist3_Link / arg nametracking_base_frame valuecamera_link / arg nametracking_marker_frame valuecamera_marker /注意确保camera_frame参数设置为camera_color_optical_frame这是Realsense相机输出图像的基准坐标系。3. 标定流程实操详解3.1 标定数据采集启动标定系统roslaunch easy_handeye eye_on_hand_calibration.launch按照RVIZ界面指引完成17个位姿采样点击Check Starting Pose验证初始位置通过Next Pose→Plan→Execute序列控制机械臂移动每个位姿稳定后点击Take Sample采集数据常见问题处理标记检测失败调整环境光照确保标记完整可见机械臂运动超限在MoveIt!中重新规划路径采样误差过大删除当前采样点重新采集3.2 标定结果计算与保存完成全部采样后点击Compute计算变换矩阵检查结果中的重投影误差理想值应0.005m点击Save将标定结果保存为YAML文件典型标定结果示例transformation: qw: 0.5044090478676875 qx: -0.5437136044950396 qy: -0.4612761515238514 qz: -0.48700240322976784 x: -0.0024504907487361725 y: 0.03589105151444005 z: 0.0247997514881105574. 标定结果验证与应用4.1 TF树发布配置修改moveit_planning_execution.launch添加标定发布节点include file$(find easy_handeye)/launch/publish.launch arg namenamespace_prefix valueaubo_i5_calibration / arg nameeye_on_hand valuetrue / /include验证TF变换rosrun tf tf_echo base_link camera_link4.2 视觉伺服控制实现基于标定结果开发视觉跟踪程序关键代码逻辑def marker_pose_callback(msg): # 坐标变换处理 transform tf_buffer.lookup_transform(base_link, aruco_marker_frame, rospy.Time(0)) # 末端姿态计算 target_pose PoseStamped() target_pose.header.frame_id base_link target_pose.pose.position transform.transform.translation target_pose.pose.orientation transform.transform.rotation # 发送运动指令 arm.set_pose_target(target_pose) arm.go(waitTrue)4.3 精度验证方法静态精度测试固定标记位置重复定位测量方差动态跟踪测试移动标记轨迹记录末端跟随误差抓取验证实际执行视觉引导抓取任务典型性能指标参考测试项目允许误差实测结果静态定位1mm0.8mm动态跟踪3mm2.5mm角度偏差0.5°0.3°5. 高级调试技巧与优化5.1 标定精度提升方法多位置采样增加标定点位至25-30个空间分布优化确保采样点覆盖机械臂工作空间各象限运动停顿每个位姿稳定2-3秒再采集数据温度补偿相机预热10分钟后再开始标定5.2 常见故障排查TF树断裂rosrun rqt_tf_tree rqt_tf_tree检查各坐标系连接关系是否完整标记检测不稳定尝试不同尺寸的ArUco标记推荐80mm-150mm调整相机曝光参数rosrun dynamic_reconfigure dynparam set /camera/stereo_module exposure 100机械臂运动抖动降低运动速度参数arg namerobot_velocity_scaling value0.3 / arg namerobot_acceleration_scaling value0.1 /5.3 自动化脚本开发创建一键式标定脚本auto_calibration.sh#!/bin/bash # 启动相机节点 roslaunch realsense2_camera rs_camera.launch sleep 5 # 启动机械臂控制 roslaunch aubo_i5_moveit_config moveit_planning_execution.launch sleep 10 # 执行标定流程 roslaunch easy_handeye eye_on_hand_calibration.launch6. 工程实践中的经验分享在实际部署中发现机械臂末端负载变化会导致标定参数微偏移。建议标定时安装与实际作业相同的末端工具定期每3个月进行标定验证在振动环境中考虑使用应变补偿算法对于高精度应用场景可采用以下增强方案使用棋盘格ArUco复合标定板引入激光跟踪仪进行结果验证实现在线标定参数自适应调整在最近的一个装配项目中通过优化标定流程将视觉引导定位精度从±2mm提升到±0.5mm使一次装配成功率从85%提高到98%。关键改进点是增加了高温环境下的标定补偿参数。
返回列表