ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

aruco_ros 在相机图像中显示的坐标轴姿态与TF发布的姿态不一致 解决方法

2021-12-19 10:03:32  阅读:302  来源: 互联网

标签:Marker 坐标轴 TF aruco 位姿 ros 姿态


aruco_ros 在相机图像中显示的坐标轴姿态与TF发布的姿态不一致 解决方法

运行环境

系统版本: Ubuntu 16.04
ROS版本: Kinetic

问题描述

在进行手眼标定过程中,为了快速便捷的获取标定板的位姿,考虑采用aruco_ros

使用下面的指令可以快速安装ROS版本的aruco

sudo apt install ros-kinetic-aruco*

运行aruco_ros,结果如图所示

原始代码运行效果
左边为aruco显示的Marker实时位姿,右侧为在rviz中显示TF发布的Marker位姿。

从图中可以看出,两者都可以显示准确的position,但是左侧相机图像显示的坐标轴 orientation 与ROS TF反馈的数据不一致。

理想情况下,Marker的Z轴应当是指向纸面外部, 按图中Marker放置的位置,Marker的Z轴应当与相机坐标系的Z轴平行且反向,但是,在rviz显示的结果为,Marker指向纸面外部的是Y轴,与左侧相机图像显示的不一致。

虽然直接使用这个位姿进行手眼标定 并不会影响标定结果。但是考虑到后面需要使用Marker进行位姿验证,希望可以让arcuo_ros 显示的坐标轴 与TF发布的姿态能够一致。

解决方案

根据官方大佬给出的解释,给出下面的解决方案

首先,卸载掉之前安装的 aruco_ros

sudo apt remove ros-kinetic-aruco*

然后,在Github下载arcuo_ros 源代码

https://github.com/pal-robotics/aruco_ros/tree/kinetic-devel

将源代码包放到一个ROS的工作空间下,定位到下面的路径

…/aruco_ros/src/

打开文件aruco_ros_utils.cpp,按照下图修改代码
代码修改示意

即,将源代码中的旋转矩阵修改为单位矩阵,然后使用 catkin_make 重新编译

再次运行,可以看到aruco在相机图像中显示的坐标轴位姿已经与TF发布的位姿一致
最终结果

标签:Marker,坐标轴,TF,aruco,位姿,ros,姿态
来源: https://blog.csdn.net/m0_65521841/article/details/122020647

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有