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

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发布的位姿一致
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值