-
Notifications
You must be signed in to change notification settings - Fork 421
D435i T265建图
RGBD真实环境下建图使用了英特尔的realsense的d435i和t265进行建图,其中d435i为建图提供深度图,而t265则提供实时的位姿给RTAB-Map,以这二者作为输入,RTAB-Map会生成相应的地图。
两个相机的技术参数可查阅英特尔的官方文档,其中D435i的相关介绍在D400-Series以及stereo depth product page;t265的相关介绍在tracking camera datasheet和tracking product page 。
首先,按照教程安装realsense的SDK,或者源码编译。然后从源码安装realsense_ros:
可以参看:https://github.com/IntelRealSense/realsense-ros
首先建立工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
Clone源码:
git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^\d+\.\d+\.\d+" | tail -1`
cd ..
然后进行编译:
catkin_init_workspace
cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
为了将深度相机坐标系下的点云正确的转换到世界坐标系下,需要知道深度相机和机体坐标系(位姿坐标系)之间的转换关系,以及机体坐标系在世界坐标系下的位姿。两个相机之间的连接,采用了英特尔官方的demo实现,使用3D打印制作了两个相机的安装基座,并给定了二者之间的坐标转换关系,具体的教程详见Tracking and Depth. 深度相机在机体位姿坐标系下的转换由H_pose_depth表示,而位恣坐标系在世界坐标系下的转换由H_world_pose表示,转换关系如下图所示:
其中,T265的坐标系是pose坐标系,而D435的是depth坐标系,depth的坐标系下一个点在pose坐标系下的坐标为:
其中的转换矩阵参数详见config文件。
在realsense_ros下,使用的是camera_link的坐标系,根据realsense官方的说明:
对于D400系列相机,camera_link的坐标系是其depth坐标系,而T265的坐标系是其pose坐标系,通过rviz中坐标系的显示效果可以得知,两个相机的camera_link位置上分别与depth和pose的坐标系重合,但并不存在旋转关系:
D435i相机和T265相机的安装底座可以从mount处下载,需要两个M3×10mm的螺栓安装D435i,还需要两个M3×18的螺栓安装T265。二者之间的转换关系配置文件详见config。
首先按照官方教程对librealsense和realsense-ros进行安装:Installation Instructions. 安装完成后运行如下命令,分别启动D435i和T265
roslaunch realsense2_camera rs_d400_and_t265.launch
其中,launch中的tf节点:
<node pkg="tf" type="static_transform_publisher" name="t265_to_d400" args="-0.009375589 0.01590727 0.028273059 0 0 0 /$(arg tf_prefix_camera1)_link /$(arg tf_prefix_camera2)_link 100"/>
的作用就是发布D435i和T265相机坐标系之间的转换关系,其位置关系可以根据上面描述获得。
然后再运行rtab-map的节点,便可以建图了:
roslaunch realsense2_camera rs_rtabmap.launch
运行完效果如下(待补充):
感谢使用Prometheus自主无人机软件平台!