大家好,我是小鱼,今天来介绍一下Aruco并是结合ROS来进行识别。
aruco其实是opencv中的一个库,可以将特定的标记物转换成三维的坐标,所以它是可以脱离ROS进行使用的。
aruco介绍: 姿态估计(Pose estimation)在计算机视觉领域扮演着十分重要的角色:机器人导航、增强现实以及其它。这一过程的基础是找到现实世界和图像投影之间的对应点。这通常是很困难的一步,因此我们常常用自己制作的或基本的Marker来让这一切变得更容易。 最为流行的一个途径是基于二进制平方的标记。这种Marker的主要便利之处在于,一个Marker提供了足够多的对应(四个角)来获取相机的信息。同样的,内部的二进制编码使得算法非常健壮,允许应用错误检测和校正技术的可能性。 aruco模块基于ArUco库,这是一个检测二进制marker的非常流行的库,是由Rafael Muñoz和Sergio Garrido完成的。
1. 安装Kinetic:
sudo apt-get install ros-kinetic-aruco*
Melodic:
sudo apt-get install ros-melodic-aruco*
其他版本
sudo apt-get install ros-版本名称-aruco*
noetic版本上好像没有,需要你编译安装,源码地址:https://github.com/pal-robotics/aruco_ros
2. 修改参数 2.1 launch文件因为使用aruco要结合相机来,所以你要先启动一个相机驱动节点,拿到图像数据,小鱼这里把相机驱动和aruco写在同一个launch文件里,文件内容如下:
2.2 主要参数
需要修改的参数如下:
- camera_info_url 相机标定文件所在位置
- video_device: 设备位置
- image_width: 图片宽度
- image_height: 图片高度
- markerId: 标定板编号,就是你所用的标定板的id,可以通过
在线生成标定板:https://chev.me/arucogen/
进行生成并打印,注意选择origin类型。 - markerSize:标定板的宽度 单位m
直接运行对应launch文件即可
roslaunch aruco_start_usb_cam.launch
识别结果的位姿数据可以通过话题获取
rostopic echo /aruco_signle/pose