最近在研究UMI,买了一款带IMU的相机,可以对外输出相机的位姿pose,因为模仿的是UMI设备,在开始采集pose时,将起点置为原点即pose为0。后续的轨迹点都是基于起点为原点的,即
Δpose。
现在需要将采集到的轨迹点在机械臂上进行replay。
目录
- 1.背景说明
- 2.相关基建代码
- 将姿态的四元数转为欧拉角
- 3.将轨迹映射到机器人base坐标系下
- 核心代码
1.背景说明
- 相机型号:
诠视 DS80
相机安装:https://www.xvisiotech.com/Ubuntusdk/255
测试时我的系统是Ubuntu22.04,安装官方的说明安装xvsdk_3.x.x-xxxxxx_focal_amd64.deb之后无法打开demo-api,提示是缺少opencv4.2的库,后通过本地源码编译opencv4.2的库解决。
- 机器人型号:
UR5e - 整体流程:
1.相机发布ROS2的话题,话题中包含IMU的pose、左右相机的rgb图像等信息;
2.开始采集轨迹时,重置相机将当前点位作为起点;
3.以固定频率如30Hz保存相机的pose数据(注意姿态信息中四元数xyzw的顺序);
4.将pose数据(四元数)转为欧拉角的形式;
5.将轨迹映射到机器人坐标系中。