使用Realsense D435i運行VINS-Fusion


1、修改Realsense文件 復制~/catkin_ws/src/realsense/realsense2_camera/launch/目錄下的rs_camera.launch,重新新建重命名為rs_camera_vins.launch,將它保存在同目錄下。修改內容主要有:

//打開imu

<arg name="enable_gyro"         default="true"/>
<arg name="enable_accel"        default="true"/>
//聯合方式copy或linear_interpolation
<arg name="unite_imu_method"          default="linear_interpolation"/>
//時間戳同步
<arg name="enable_sync"               default="true"/>

11再編寫一個launch文件,命名為my_vins_d435.launch,也保存在~/catkin_ws/src/realsense-ros/realsense2_camera/launch/目錄下,內容如下:

<launch>
	<include file="$(find realsense2_camera)/launch/rs_camera_vins.launch"/>	
	<include file="$(find vins)/launch/vins_rviz.launch"/>
	<!--node pkg="vins" type="vins_node" name="vins_node">
		<param name="config_file" value="~/catkin_ws/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml""/>
	</node-->	
</launch>

11

命令行輸入roslaunch realsense2_camera my_vins_d435.launch即可。

2、修改VINS文件 在~/catkin_ws/src/VINS-Fusion/config/realsense_d435i/...目錄下

修改外參(可以不改,使用默認值,但漂移嚴重)
在realsense_stereo_imu_config.yaml、left.yaml、right.yaml三個文件中,分別對應body_T_cam0、body_T_cam1兩個外參和兩個projection_parameters內參,D435i的參數可以從SDK查看:外參查看方法https://blog.csdn.net/mystyle_/article/details/109353870
其中外參:

body_T_cam0: !!opencv-matrix
   rows: 4
   cols: 4
   dt: d
   data: [ 1, 0, 0, -0.00552,
           0, 1, 0, 0.0051,
           0, 0, 1, 0.01174,
           0, 0, 0, 1 ]
           
body_T_cam1: !!opencv-matrix
   rows: 4
   cols: 4
   dt: d
   data: [ 1, 0, 0, 0.0446571,
           0, 1, 0, 0.0051,
           0, 0, 1, 0.01174,
           0, 0, 0, 1 ]

兩個內參(一樣):

projection_parameters:
   fx: 383.692
   fy: 383.692
   cx: 316.978
   cy: 239.796

修改顯示image-track(默認 0 ,沒有發布image-track)

show_track = 1

運行

source ~/catkin_ws/devel/setup.bash
roslaunch realsense2_camera rs_camera_vins.launch 
roslaunch vins vins_rviz.launch 
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml

4、開回環
在src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml中修改:

save_image: 1 

在終端啟動:

rosrun loop_fusion loop_fusion_node ~/vins_ws/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml

5 surfe稠密建圖
下載港科開源代碼DenseSurfelMapping,放到src下進行編譯,啟動vins后再啟動DenseSurfelMapping:

roslaunch surfel_fusion vins_realsense.launch

報錯缺少rviz_plugins/Goal3DTool、rviz_visual_tools/RvizVisualToolsMap,網上也沒找到怎么裝,可以直接刪掉surfel.rviz文件中有關這兩個模塊的調用,不影響程序運行。
(或者注釋掉vins_realsense.launch文件中的

<node type="rviz" name="rviz" pkg="rviz" args="-d $(find surfel_fusion)/launch/surfel.rviz" />

,然后在運行vins時啟動的rviz中訂閱話題pointcloud/pointcloud2)

2 esdf建圖

fiesta比voxblox簡單得多,易於上手和后續修改,我就用的fiesta https://github.com/HKUST-Aerial-Robotics/FIESTA
按github安裝編譯完成fiesta之后
1、修改launch
復制demo.launch(或者在cow_and_lady基礎上改也行)重命名D435i,話題替換成自己的(默認的就可以)。
修改內參(查看方法上面已經有了):

<param name="center_x" value="381.91"/>
<param name="center_y" value="241.553"/>
<param name="focal_x" value="609.738"/>
<param name="focal_y" value="608.557"/>

最后上一行添加一句建圖:

<node name="rvizvisualisation" pkg="rviz" type="rviz" output="log" args="-d $(find fiesta)/demo.rviz" />

2、修改mian函數

改成:

fiesta::Fiesta<sensor_msgs::Image::ConstPtr, nav_msgs::Odometry::ConstPtr> esdf_map(node);

3、終端啟動即可

roslaunch fiesta D435i.launch

3 yolo語義建圖

下載

mkdir -p catkin_workspace/src
cd catkin_workspace/src
git clone --recursive https://github.com/leggedrobotics/darknet_ros
cd ../

編譯:

catkin_make -DCMAKE_BUILD_TYPE=Release

此時會開始編譯整個項目,編譯前會檢查{catkin_ws}/darknet_ros/darknet_ros/yolo_network_config/weights文件下有沒有yolov2-tiny.weights, yolov3.weights, yolov2.weights三個模型文件,為了節省時間可以提前自行下載(也可以從CMakeLists.txt中刪除檢查)
訂閱話題
在darknet_ros/config/ros.yaml文件中,修改

subscribers:
  camera_reading:
    topic:/camera/color/image_raw  你自己的話題

運行

source devel/setup.bash
roslaunch darknet_ros darknet_ros.launch

替換模型
在darknet_ros.launch文件中,修改模型

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM