“悉灵杯”课题研究-MV-EB435i立体相机集成Apriltags发布相机位姿
本文介绍MV-EB435i集成Apriltags,并发布相机位姿,在rviz中实时查看。

       深度相机在工程中,经常应用在机械臂,无人驾驶或定位建图等方向,获取自身在环境中的位姿是至关重要的,可用于相机标定、手眼标定、定位导航等。常见的方法有视觉解算、里程计或机载IMU预积分。本文介绍视觉中常用的Apriltags解算来获取相机位姿,并发布tf坐标变换到rviz上进行可视化。

Apriltags简介

       AprilTags是一种视觉基准系统,适用于各种任务,包括AR、机器人和摄像机校准,程序可以精确地获得Apriltags标签相对于摄像机的位置,方向以及标签独有的ID。形象地来讲,Apriltags标签就相当于SLAM系统中的landmark。AprilTags在概念上与QR码类似,因为它们是一种二维条形码。但是,它们被设计为对更小的数据有效载荷(4到12位之间)进行编码,可在较远距离、较差光线和更扭曲的图像环境下被检测到。并且具有很高的定位精度。


Apriltags各种标签类型

Apriltags集成

       本例采用Apriltags的C++接口。先定义基础参数。Apriltags的tag_family设为默认值tag25h9,tag25即为标签的边长是5乘5,识别时就要选用对应的标签。同理,tag36就应选用边长6乘6的,否则将无法识别。接下来是被识别标签的大小,设为0.06米,相关参数写在launch文件里:

<!-- tag size 单位米 -->
<arg name = "tag_size" default = "0.06"/>
<!-- tag family -->
<arg name = "tag_family" default = "Tag25h9"/>
<arg name = "image_width" default = "640"/>
<arg name = "image_height" default = "360"/>

       在主程序中设置detector和detections,将用于图像处理和存储位姿信息。

TagDetector detector(family, params);
TagDetectionArray detections;

       通过cv_bridge订阅深度相机发布的彩色图,使用相机sdk中的MV3D_RGBD_GetCalibInfo()函数获取相机内参。得到的相机内参将用于计算相机的旋转矩阵和平移矩阵。

ASSERT_OK(MV3D_RGBD_GetCalibInfo(handle, CoordinateType_RGB, pstRgbCalibInfo));
tf2::Matrix3x3 tf_rot(rot.at<double>(0, 0), rot.at<double>(0, 1), rot.at<double>(0, 2), rot.at<double>(1, 0),
                                          rot.at<double>(1, 1), rot.at<double>(1, 2), rot.at<double>(2, 0), rot.at<double>(2, 1),
                                          rot.at<double>(2, 2));

tf2::Vector3 tf_orig(tran64.at<double>(0, 0), tran64.at<double>(1, 0), tran64.at<double>(2, 0));

       将旋转矩阵和平移矩阵转为ros的tf坐标变换并发布。

tf2::Transform ts(tf_rot, tf_orig);geometry_msgs::TransformStamped tfs;
tfs.header.frame_id = "camera";
tfs.header.stamp = ros::Time::now();
tfs.child_frame_id = "marker";
tfs.transform.rotation.x = ts.getRotation().x();
tfs.transform.rotation.y = ts.getRotation().y();
tfs.transform.rotation.z = ts.getRotation().z();
tfs.transform.rotation.w = ts.getRotation().w();
tfs.transform.translation.x = ts.getOrigin().x();
tfs.transform.translation.y = ts.getOrigin().y();
tfs.transform.translation.z = ts.getOrigin().z();
broadcaster.sendTransform(tfs);

       在rviz中设置fixed_frame为camera(也可以设置为marker,两者的区别在于将谁设置为世界坐标系的原点),添加TF。


       Apriltags标签可以用A4纸打印,这也是它非常方便的地方,这里演示使用手机图片(实际中不应这样做,可能会导致不同角度下识别不稳)。在相机识别到标签后,可以直观地看到相机相对于标签的位姿变化。



       代码链接:https://github.com/Nick-the-remaker/Hikrobot_ros.git

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

“悉灵杯”课题研究-MV-EB435i立体相机图像处理UI界面开发

下一篇

工业镜头主要参数

评论请先登录 登录
全部评论 0
Lv.0
0
关注
5
粉丝
2
创作
10
获赞
所属专题
  • 使用3D相机MV-EB435i基于OpenCV的客流检测与异常识别的实现
  • 悉灵杯”课题研究进展(一)通过海康RGB-D相机获取带RGB信息的点云
  • “悉灵杯”课题研究-基于RGB_D相机的物品位置计算
  • “悉灵杯”课题研究-对RGB_D相机采集的三维点云处理
  • “悉灵杯”课题研究-RGB_D相机SDK集成及Open3d点云基本处理
  • “悉灵杯”课题研究-集成RGB_D相机SDK的Open3d点云可视化
  • “悉灵杯”课题研究-集成RGB_D相机SDK的Open3d点云功能UI项目开发(项目demo)
  • “悉灵杯”课题研究-RGB_D相机SDK三维点云存储
  • “悉灵杯”课题研究-OpenNI集成及示例代码开发
  • 悉灵杯”课题研究-MV-EB435i立体相机基于opencv图像处理使用yolov5的物体识别
  • “悉灵杯”课题研究-基于opecv的集成RGB_D相机SDK的基础小样物品颜色检测及人脸识别
  • OpenCV中利用knn进行数字(0-9)识别--RGB-D相机采集
  • “悉灵杯”课题研究-基于MV-EB435i的落差边缘检测算法开发记录
  • 悉灵杯”课题研究-LabVIEW集成及示例代码开发
  • “悉灵杯”课题研究-MV-EB435i立体相机集成Apriltags发布相机位姿
  • “悉灵杯”课题研究-MV-EB435i立体相机图像处理UI界面开发
  • “悉灵杯”课题研究-基于ROS1的RGB-D相机SDK集成及示例代码开发
  • 第二届“悉灵杯”课题移动机器人感知研究进展
  • “悉灵杯”课题研究—手眼标定方案
  • 第二届“悉灵杯”课题研究-基于RGB_D相机的室内环境建模
  • 悉灵杯”课题研究进展(二)-基于三维模型/场景点云的虚拟仿真数据生成
  • 悉灵杯”课题研究进展(一)-实例分割网络模型搭建与实验场景介绍
  • “悉灵杯”课题研究报告-基于RGB-D相机的2D和3D抓取定位方案研究
  • “悉灵杯”课题研究-基于点云配准算法GICP的3D抓取方案研究
  • “悉灵杯”课题研究-基于YOLO和GGCNN的物品平面抓取方案研究
  • 动态手势控制音频播放器-成果物
  • 第二届“悉灵杯”课题研究报告-动态手势控制音频播放器设计
  • 动态手势控制音频播放器(五)动态手势控制音频播放器exe
  • 动态手势控制音频播放器(四)动态手势识别系统的设计
  • 动态手势控制音频播放器(三)音频播放器设计
  • 动态手势控制音频播放器(二)动态手势识别系统的设计
  • 动态手势控制音频播放器(一)总体方案设计
  • 悉灵杯”课题研究进展(四)RGB-D相机引导机械臂分拣物料
  • 悉灵杯”课题研究进展(三)RGB-D相机引导机械臂分拣物料
  • 悉灵杯”课题研究进展(二)RGB-D相机引导机械臂分拣物料
  • ”悉灵杯”课题研究报告-基于RGB-D相机的机械臂物料分拣系统研究
  • 悉灵杯”课题研究报告-基于深度学习方法和虚拟仿真数据的机械臂引导方案
  • 第二届“悉灵杯”课题研究机械臂引导研究报告
  • 第二届“悉灵杯”课题研究机械臂引导研究进展(二)
  • 第二届“悉灵杯”课题研究机械臂引导研究进展(一)
相关阅读
  • [共享学习]VM之角度纠正问题
    2024-03-07 浏览 0
  • 机器视觉菜鸟指南
    2024-02-29 浏览 0
  • 基于C++OpenCV实现VisionMaster中的“直线边缘缺陷检测”
    2024-03-04 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器