一、配置环境

操作系统:Ubuntu 18.04
机械臂型号:UR5 ;polyscope 3.14
夹爪型号:Robotiq 2F-85
深度相机:Intel RealSense - D435i

二、标定前环境配置

2.1实现ROS实时控制UR5机械臂

参考笔者之前整理的博客:ROS-Melodic-Moveit 实时控制UR5机械臂

2.2安装Intel RealSense - D435i

参考笔者之前整理的博客:Ubuntu18.04+ROS Melodic+D435i环境配置
(注:2.1-2.2均在同一工作空间的src文件夹内安装)

2.3安装aruco_ros

cd ~/catkin_UR5/src
git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git
cd ..
catkin_make

2.3安装vision_visp / visp_hand2eye_calibration

cd ~/catkin_UR5/src
git clone -b melodic-devel https://github.com/lagadic/vision_visp.git
cd ..
catkin_make --pkg visp_hand2eye_calibration

2.4安装easy_handeye

cd ~/catkin_UR5/src
git clone https://github.com/IFL-CAMP/easy_handeye
cd ..
catkin_make

(若因新版easy_handeye在标定过程中报错,可留言邮箱联系笔者获取旧版easy_handeye功能包)

2.5下载并打印 ArUco marker

进入网站下载打印ArUco marker。注意:
Dictionary 要选 Original ArUco;
Marker IDMarker size 自选,在launch文件中做相应修改;
(笔者选了ID=100;Size=300mm=0.3m)
打印时要选择原始大小,否则要测量一下打印出来的真实大小。
(笔者的UR5机械臂安装有Robotiq夹爪,将打印好的ArUco marker纸用手爪夹紧进行标定。)

三、眼在手外标定

3.1修改标定 launch 文件

标定过程需启动 ur5 机械臂的相关节点,realsense 节点,aruco 节点,easy_handeye 节点,可写一个 launch 文件同时启动上述节点。easy_handeye 包中给出了用一个 launch 文件实现的示例,在如下的目录中:xxx/easy_handeye/docs/example_launch/ur5_kinect_calibration.launch文件。我们在此基础上修改。在文件里面为了避免出现一些报错,把D435i相机的启动程序、UR5机器人的启动程序屏蔽掉,实验时单独启动运行。

# 将 launch 文件拷贝到 easy_handeye 功能包的 launch 目录中,并改名为:eye_to_hand_calibration.launch
cd ~/catkin_UR5/src/easy_handeye/docs/example_launch
cp ur5_kinect_calibration.launch ~/catkin_UR5/src/easy_handeye/easy_handeye/launch/eye_to_hand_calibration.launch

修改后文件内容如下:

<launch><arg name="namespace_prefix" default="ur5_realsense_handeyecalibration" /><arg name="robot_ip" doc="The IP address of the UR5 robot" /><arg name="marker_size" doc="Size of the ArUco marker used, in meters" default="0.3" /><arg name="marker_id" doc="The ID of the ArUco marker used" default="100" /><!-- start the realsense --><!--include file="$(find realsense2_camera)/launch/rs_camera.launch" /> --><!--arg name="depth_registration" value="true" /> --><!-- </include> --><!-- start ArUco --><node name="aruco_tracker" pkg="aruco_ros" type="single"><remap from="/camera_info" to="/camera/color/camera_info" /><remap from="/image" to="/camera/color/image_raw" /><param name="image_is_rectified" value="true"/><param name="marker_size"        value="0.3"/><param name="marker_id"          value="100"/><param name="reference_frame"    value="camera_color_frame"/><param name="camera_frame"       value="camera_color_frame"/><param name="marker_frame"       value="camera_marker" /></node><!-- start the robot --><!-- <include file="$(find ur_modern_driver)/launch/ur5_bringup.launch"><arg name="limited" value="true" /><arg name="robot_ip" value="192.168.1.10" /></include> --><!-- <include file="$(find ur3_moveit_config)/launch/ur5_moveit_planning_execution.launch"><arg name="limited" value="true" /></include> --><!-- start easy_handeye --><include file="$(find easy_handeye)/launch/calibrate.launch" ><arg name="namespace_prefix" value="$(arg namespace_prefix)" /><arg name="eye_on_hand" value="false" /><arg name="tracking_base_frame" value="camera_color_frame" /><arg name="tracking_marker_frame" value="camera_marker" /><arg name="robot_base_frame" value="base" /><arg name="robot_effector_frame" value=" tool0_controller" /><arg name="freehand_robot_movement" value="false" /><arg name="robot_velocity_scaling" value="0.2" /><arg name="robot_acceleration_scaling" value="0.1" /></include></launch>

注意:
1)tracking_base_frame 为相机坐标系 camera_color_frame;
2)robot_base_frame 为机器人基座坐标系,示例里写的是 base_link,在 rviz 中查看 base 才是真实的基座坐标系;
3)robot_effector_frame 为工具坐标系,因为我安装了 Robotiq 夹具,value=" tool0_controller" 。

3.2启动 launch 文件,开始标定

确保标定前已连通控制UR5机械臂;
(1)启动机器人驱动程序:

roslaunch ur_modern_driver ur5_bringup.launch limited:=true robot_ip:=192.168.1.10 use_lowbandwidth_trajectory_follower:=true

(2)启动 moveit :

roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch limited:=true

(3)启动相机:

roslaunch realsense2_camera rs_camera.launch

(4)启动修改后的标定文件eye_to_hand_calibration.launch:

roslaunch easy_handeye eye_to_hand_calibration.launch

成功运行后,会同时打开三个界面!!
a.rviz界面

b.标定界面

c.机器人自主移动rqt控制界面

在界面 b 中,点击菜单栏的 Plugins -> Visulization -> Image View,选择 /aruco_tracker/result 话题,界面会如界面b右侧image_view所示。

(5)标定步骤

5.1 手动调节机械臂,使 aruco 二维码移动至相机视野中心处附近,作为 home config。在界面 c中,点击 check starting pose,若检查成功,界面会出现: 0/17,ready to start

5.2界面 c 中依次点击 Next Pose,Plan,Execute,机械臂会移动至新的位置,若二维码在相机视野范围内,且能检测成功,则进行下一步

5.3界面 b 中点击 Take Sample,若 Samples 对话框中出现有效信息,说明第一个点标定成功
重复执行步骤5.2和步骤5.3,直至 17 个点全部标定完毕

5.4界面 b中点击 Compute,则 Result 对话框中会出现结果

5.5界面 b 中 Save,会将结果保存为一个 YAML 文件,路径为 ~/.ros/easy_handeye

避坑:
界面c若出现Cannot calibrate from current position;
且终端:[ WARN] [1637206443.627157283]: Fail: ABORTED: No motion plan found. No execution attempted.
解决方法:将机械臂末端执行器夹标定板,由回零位置通过示教器移动至较矮位置,标定板出现在相机视野中央!!
(原因:17个位置中某些位点无法求解便出现报错)

标定结果:

3.3标定结果的查看

方式1:查看home隐藏文件夹.ros/easy_handeye下标定结果文件yaml。

方式2:# 查看 TF(改成自己的工具坐标系与相机坐标系;未验证:改成机器人基座与相机坐标系)
rosrun tf tf_echo /tool0_controller /camera_color_frame

Ubuntu18.04+ROS Melodic+RealsenseD435i+Robotiq-2F-85+UR5真实机械臂手眼标定(眼在手外)相关推荐

  1. Ubuntu18.04+Ros Melodic安装Moveit

    Ubuntu18.04+Ros Melodic安装Moveit框架 感谢Robot_Tiger_原文https://blog.csdn.net/CH_monsy/article/details/108 ...

  2. 3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)

    Ubuntu18.04使用速腾16线激光雷达RS-16测试3D建图算法 LeGO-LOAM 的使用 1. 安装gtsam因子图库 2. 新建ROS工程目录文件夹,下载源码进行编译 3. 下载相关数据集 ...

  3. ubuntu18.04+ros melodic环境下手柄驱动环境安装

    前言: 该博客仅作个人笔记使用,因为我已经有了手柄命令与机器人电机控制的底层协议,只是缺少手柄驱动,如需更全面的配置教程,请移步其他博客 环境:ubuntu 18.04 + Ros melodic 依 ...

  4. Ubuntu18.04+ROS melodic 控制UR5机器人(持续更新)

    目录 0 前言 1 前置准备工作 1.1 环境配置 1.1.1 使用虚拟机安装Ubuntu系统 1.1.2 ROS melodic安装 1.2 工作空间配置 1.2.1 创建工作空间 1.2.2 导入 ...

  5. Ubuntu18.04+Ros melodic安装cartographer

    Ros melodic安装参考Ubuntu18.04 安装ros全过程及各种问题骨灰级解决方法_gjwjw的博客-CSDN博客 本文cartographer安装主要参考cartographer环境建立 ...

  6. 双目立体视觉(2)- ZED2 SDK配置 Ubuntu18.04 + ROS melodic

    ZED2 SDK 官方网站: https://www.stereolabs.com/developers/release/3.1/ 目录 1. 安装Ubuntu18.04+ROSmelodic 2. ...

  7. Ubuntu18.04 ROS melodic 版本的rivz教程

    我们学习rivz时需要一个大神写好的第三方包,这样我们才可以学习具体的命令以及方法.博主在从网上找rivz的教程时发现大部分都比较老了,不支持ROS的最新版本,所以提供的rivz第三方包安装会出现许多 ...

  8. Ubuntu18.04+ROS melodic 安装调用 RealSense L515

    参考: https://blog.csdn.net/Lynn_mg/article/details/103149489 https://blog.csdn.net/weixin_40650126/ar ...

  9. ubuntu18.04 ros melodic Autoware1.14源码编译安装(完整版,全过程)

    一.安装NVIDIA驱动 查看推荐显卡 ubuntu-drivers devices 找到recommended推荐的版本 本机是470版本 sudo apt-get install nvidia-d ...

最新文章

  1. 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...
  2. 数据结构C语言实现课后第1-2章答案
  3. 微信运动:抓住用户的小九九,一个都别跑!
  4. 洛谷 P3381 【模板】最小费用最大流
  5. DeepMind:所谓SACX学习范式
  6. 高效率Oracle SQL语句
  7. windows远程桌面mstsc使用 代理
  8. Linux下获取文件编译的时间
  9. event-config.h指明所在系统的环境
  10. 信息学奥赛一本通 1265:【例9.9】最长公共子序列
  11. 东莞计算机应用能力报名,2017广东职称计算机考试报名:东莞职称计算机报名入口...
  12. vivo S10系列官方渲染图公布 外壳太好看了!
  13. linux sleeping进程多_Linux下找出吃内存的方法总结
  14. 计算机刻录光盘不显示,为什么我的CD刻录光盘的容量在
  15. python cls方法
  16. (转)如何看待IT对于证券行业的价值
  17. 设计测试用例需要注意的点
  18. 防火墙的目标地址转换和源地址转换
  19. 关于LNK2000 _main 已经在 某某某.obj 中定义的问题
  20. 女程序员未来的职场出路在哪里?

热门文章

  1. 多布局怎么搭建_【第五课】更丰富的布局方式
  2. 计算机网络教室课程安排表,计算机网络教室工作计划
  3. WinDbg命令dt的使用
  4. HTML实现友好提示框(带尖角的框)
  5. leetcode-561-Array Partition I
  6. 关于校园通使用过程中的相关脚本
  7. Android中清单文件引入配置参数,Android 使用gradle打包的各种配置
  8. win10关闭防火墙脚本
  9. java word 乱码_JAVA 使用POI替换word中的某些字符串,在本地调试一切ok,在服务器上出现乱码...
  10. perf-网络协议栈性能分析