【手眼标定】ROS + usb_cam + aruco_ros + easy_handeye_demo
【手眼标定】ROS + usb_cam + aruco_ros + easy_handeye_demo
注意:在手眼前先进行相机内参标定以及ArUco markers检测测试,测试成功后再进行手眼标定
ArUco markers检测参考链接
1. 下载运行easy_handeye_demo
这个库是easy_handeye的一个demo,不需要真实的机械臂就可以实现easy_handeye,并且easy_handeye_demo可以作为将easy_handeye与自己的机械臂整合的一个例子
- 下载easy_handeye_demo及附属包
easy_handeye_demo仓库地址
easy_handeye仓库地址
机械臂仿真iiwa_stack仓库地址
(1)创建工作空间,克隆仓库
mkdir -p easy_handeye_ws/src
cd easy_handeye_ws/src
git clone https://github.com/IFL-CAMP/iiwa_stack
git clone https://github.com/IFL-CAMP/easy_handeye
git clone https://github.com/marcoesposito1988/easy_handeye_demo
(2)安装依赖
cd .. #回到工作空间easy_handeye_ws
rosdep install -yir --ignore-src --from-paths src
(3)编译
catkin build
(4)启动仿真
source devel/setup.bash
# first perform the calibration,默认眼在手外
roslaunch easy_handeye_demo calibrate.launch
可以看到如下界面
拖动小球可以使机械臂移动,点击plan&Execute可以使机械臂运动到拖动到的位置
再开一个命令窗口,可以通过下面命令验证机械臂运动
# then, check the result
roslaunch easy_handeye_demo check_calibration.launch
可以看到第一个窗口执行plan&Execute,第二个窗口机械臂同步移动
到此easy_handeye_demo运行成功
2. 在仿真中手眼标定准备工作
- 启动相机
roslaunch usb_cam usb_cam-test.launch #根据实际的相机启动文件名进行修改
- 启动aruco_ros检测Marker,这里有问题看这篇文章
cd ~/aruco_ws
source devel/setup.bash
roslaunch aruco_ros single.launch
- 修改easy_handeye_demo的laucnh文件
复制 easy_handeye_demo/launch/calibrate.launch文件作修改,并命名为calibrate2.launch,修改以下参数
<arg name="robot_base_frame" value="iiwa_link_0" /><arg name="robot_effector_frame" value="iiwa_link_ee" /><arg name="tracking_base_frame" value="usb_cam" /><arg name="tracking_marker_frame" value="aruco_marker_frame" />
tracking_base_frame
: marker的坐标系的参考坐标系,这里写相机坐标系的参考坐标系,也就是相机坐标系。
tracking_marker_frame
: marker 坐标系,即 aruco 设置的 marker_frame
- 启动标定文件进行标定
cd easy_handeye_ws
source devel/setup.bash
roslaunch easy_handeye_demo calibrate2.launch
正常情况下会出现四个界面,一个是相机画面,一个是同上文的rviz仿真界面,下面的两个标定界面
但是我的一开始没有出现这两个标定界面,查看运行终端的报错信息,发现缺少相应的安装包
安装pyqt5
,由于我的ros版本为melodic,运行环境为python2.7,参考该篇博客直接安装PySide2
即可
pip install PySide2
然后还缺少transforms3d
包,直接安装
pip install transforms3d
然后重新运行calibrate2.launch
就可以看到上面的标定界面了
但是rqt_easy_handeye没有菜单栏无法打开aruco码位姿检测图像
解决方法:新开一个命令窗口,打开rqt
界面,菜单栏-plugins-topics-topics monitor
,查看话题,打开菜单栏-plugins-visualization-image view
,订阅/aruco_single/result
话题,放入ArUco markers便可以检测到marker的id和坐标轴
2. 开始标定
(1) 手动调节机械臂,使 aruco 二维码移动至相机视野中心处附近。点击 check starting pose,若检查成功,界面会出现: 0/17,ready to start
(2) 依次点击 Next Pose,Plan,Execute,机械臂会移动至新的位置,若二维码在相机视野范围内,且能检测成功,则进行下一步
(3) 界面 2 中点击 Take Sample,若 Samples 对话框中出现有效信息,说明第一个点标定成功
(4) 重复执行步骤 2 和步骤 3,直至 17 个点全部标定完毕
(5) 界面 2 中点击 Compute,则 Result 对话框中会出现结果
(6) 界面 2 中 Save,会将结果保存为一个 YAML 文件,路径为 ~/.ros/easy_handeye
出现的问题:
第一步点击 check starting pose时,提示Can't calibrate from this position!
,解决办法:拖动小球找到能够进行标定的位姿(有点麻烦,我也找了很久)
然后继续进行第二步,得到如下图
标定完成界面
3. 发布TF(待研究)
easy_handeye 功能包提供了 publish.launch 文件,可以将标定好的 TF 发布出。注意修改 namespace_prefix 参数与标定的 launch 文件中的保持一致,这样才能找到标定好的 YAML 文件。
roslaunch easy_handeye publish.launch eye_on_hand:=false namespace_prefix:=demo_handeyecalibration# 查看 TF(基坐标系到相机坐标系)
rosrun tf tf_echo /iiwa_link_0 /usb_cam
【手眼标定】ROS + usb_cam + aruco_ros + easy_handeye_demo相关推荐
- Realsense D455/435内参标定以及手眼标定
相机的内外参 内参数 与相机自身特性有关的参数,焦距,像素大小 外参数, 相机的位置,旋转方向 为什么要内参标定 理想情况下,镜头会将一个三维空间中的直线也映射成直线(即射影变换),但实际上,镜头无法 ...
- 机器人抓取平台搭建记录(六):手眼标定--眼在手上--Kinova Gen2 JACO2 七自由度机械臂--Realsense D435
吐槽一,手眼标定两个多月前就做好了,这篇文章也是两个多月前就写了,但当时不知出了什么差错,在我还没有写完想暂时保存一下草稿的时候,写的内容竟然没了小半.于是就拖到现在,拖到忘记了当时写作的思路,操作细 ...
- 通过ROS控制真实机械臂(15) --- 视觉抓取之手眼标定
通过视觉传感器赋予机械臂"眼睛"的功能,配合ATI力和力矩传感器,就可以完成机械臂"手眼"结合的能力,完成视觉抓取过程.目前测试的视觉传感器为 ZED mini ...
- ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下
** 1参考链接 ** (1)UR5.realsense手眼标定 (2)优遨机器人UR5与RealSense深度摄像头D435的手眼标定 (3)UR5.realsense手眼标定**** (4)标定所 ...
- UR3机械臂+Realsense D435+ROS手眼标定记录
UR3机械臂+Realsense D435+ROS手眼标定记录 前面一段时间,由于实验室工作安排,上手了UR3机械臂和Realsense D435深度相机,在手眼标定这一段真的是让人心累,断断续续折腾 ...
- 遨博协作机器人ROS开发 - 机器人手眼标定原理
目录 一.简介 二.环境版本 三.学习目标 四.知识储备 五.课堂小结 六.课后练习 一.简介 大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),在前面课程中我们讲解了Intel ...
- 基于ROS的手眼标定程序解决方案|支持眼在手外/上
大家好,我是小鱼.今天分享一个自己写的开源程序,欢迎大家围观~ 1.概览 如果教程对你有帮助,可以start一下~ 若需手眼标定小鱼付费-指导请添加微信:AiIotRobot 本程序支持眼在手上和眼在 ...
- ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)上
Universal Robots(优傲机器人)公司是一家引领协作机器人全新细分市场的先驱企业,该公司成立于2005年,关注机器人的用户可操作性和灵活度,总部位于丹麦的欧登塞市,主要的机器人产品有:UR ...
- 基于ROS的机械臂手眼标定-基础使用
机械臂手眼标定-基础使用 你好,我是小智,前一段时间折腾了一段时间的机械臂的手眼标定,相关资料挺多的,但使用起来都比较复杂,新手一般比较难搞懂.于是想做一个比较简单易懂易用的手眼标定程序. 程序都是C ...
最新文章
- 街篮最新服务器,《街篮》全新两组服务器开启 与你一起迎新年!
- 深入Ajax架构和最佳实践读书笔记
- 使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...
- 【机器学习】为什么GBDT可以超越深度学习
- Markdown 图标 快捷键
- 晚上去宾馆有什么是一定要带的?
- USACO-Section1.5 Mother's Milk (深度优先搜索)
- 【5分钟 Paper】Reinforcement Learning with Deep Energy-Based Policies
- 最新即时通讯聊天安卓APP源码+全开源/Uniapp内核
- 不限时长的电脑录屏软件的软件有哪些?良心安利这3款!
- KMO检验和Bartlett球形检验
- 【Excel】定位条件快速将空值替换为指定值
- win10服务器系统要设置要密码是什么,云服务器win10系统初始密码
- 条码打印软件如何批量打印快递单
- 使用Python分析统计《大秦帝国》人物及七国的出场次数 的顺序(前20)
- RabbitMQ, Kafka和Pulsar (一)
- [转载]你们要的GIF动图制作全攻略!看完就会做!(实操教程)
- 精神分裂型患者大脑结构和功能连接的改变
- 库的基本操作与表格创建及查询删除表
- css画钟表_如何使用css3绘制出圆形动态时钟
热门文章
- Redis-5.0.5集群配置
- Tuxera Disk Manager是什么软件,Tuxera Disk Manager怎么用
- 我的世界服务器npc怎么修改,我的世界NPCmod教程如何设置任务NPC
- Java方法创建及调用--------06
- Linux 多线程(附带线程池代码加注释)
- XTU OJ 1375 Fibonacci
- 使用JavaScript进行销毁:操作指南
- 你想要的宏基因组-微生物组知识全在这(1907)
- TIA博途中如何通过PLC变量控制开始和停止记录数据?
- Unity Error while downloading Asset Bundle: Failed to decompress data for the AssetBundle