ORB-SLAM2安装运行过程记录

准备先从2开始,再去弄3,因为3的教程不多。

  1. 下载好了包之后,发现build的时候经常出现usleep报错,用kdevelop查看报错的文件,再前面加上再进行编译。
#include <unistd.h>
  1. 编译ros部分出现报错:

/usr/lib/x86_64-linux-gnu/libboost_system.so: 无法添加符号: DSO missing from
command line collect2: error: ld returned 1 exit status

在Examples/ROS/ORB_SLAM2/Cmakelist.txt 的文件中set(LIBS)的最后加一条:

-lboost_system

而且cmakelist后面要加上一些对库的链接。(不知道是否需要,回头再看看)

二、运行部分
D455的内参(未经过标定),使用下列命令查看内参(分别用两个终端输入):

roslaunch realsense2_camera rs_rgbd.launch
rostopic echo /camera/color/camera_info 

内参为(截取部分,因为似乎一直在跑):

header:
seq: 141 stamp:
secs: 1603789990
nsecs: 909847059
frame_id: “camera_color_optical_frame”
height: 480
width: 640
distortion_model: “plumb_bob”
D: [-0.05395696684718132,
0.06465082615613937, -0.0005918957176618278, -0.0009528784430585802, -0.02047022618353367]
K: [382.2296447753906, 0.0, 321.88739013671875, 0.0, 381.337158203125, 241.31826782226562, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] P: [382.2296447753906, 0.0, 321.88739013671875, 0.0, 0.0, 381.337158203125, 241.31826782226562, 0.0, 0.0, 0.0, 1.0, 0.0]
binning_x: 0 binning_y: 0 roi: x_offset: 0 y_offset: 0 height: 0 width: 0 do_rectify: False

运行roslaunch之后显示没有图像,估计是哪里要修改,感觉可以试一下这篇(https://www.jianshu.com/p/f4bfe531306c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation)
估计要修改在ORB-SLAM2/Examples/ROS/ORB-SLAM2/src中修改ros_rgbd.cc的topic订阅,改为自己的相机路径,默认的那个topic可能没有。

4.将Kinect连接到电脑上,输入指令:$ roslaunch freenect_launch freenect.launch

此时Kinect开始发射图像的topic了。

5.源代码上使用的topic是/camera/image_raw,然而我$ rostopic list 之后根本就没有这个topic,所以我直接去ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_mono.cc中将topic改为/camera/rgb/image_color就可以了
后面在运行rosrun

可以用rostopic list 来看有哪些主题:

然后用rostopic hz +主题名来检查主题当前发布的频率来检查主题是否正在发布,如:

rostopic hz / camera / color / image_raw

解决了上一篇ORB-SLAM3开头的那个问题,主题的订阅是要修改的,直接用源代码估计不会显示图像。但我怀疑对ORB-SLAM3来说后面的值100不用改成1,因为在rviz中看会变得很暗。而在ORM-SLAM2中,源代码就是1.只需要改一下前面的topic就可以了。
因此,在ORB-SLAM2/Examples/ROS/ORB-SLAM2/src中修改ros_rgbd.cc的topic订阅:

message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/aligned_depth_to_color/image_raw", 1);

然后重新编译ORB-SLAM2

chmod +x build_ros.sh
./build_ros.sh

连接realsense d435i,启动ROS realsense2_camera:

roslaunch realsense2_camera rs_rgbd.launch

先用TUM1.yaml的参数运行一下试试看:

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml 

然后就可以看到实时识别的特征点啦!

ORB-SLAM3也可以按照上面的步骤来实现,就是把上面的2换成3就行了。有的时候还是会发现图像不显示,拔一下相机,看下realsense-viewer里有没有图像,显示图像了再跑。

2020.10.28
今天按这篇跑一下双目(https://blog.csdn.net/qq_39266065/article/details/108275010)主要是修改了的东西要记得怎么改的,免得跑错了只能重装。
1.在路径/catkin_ws/src/realsense-ros/realsense2_camera/launch中找到rs_camera.launch文件,建立一个副本rs_camera_copy.launch,然后查看以下两个参数是否为false,改为true。(以后每次运行双目的时候,用这个launch)

  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="true"/>

然后在/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src修改ros_stereo.cc的订阅,原本是:

 message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, "/camera/left/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, "camera/right/image_raw", 1);

改为(感觉显示有点暗,于是把后面数字改成了100,但还是很暗,怀疑不是在这里调节的):

message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, "/camera/infra1/image_rect_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, "/camera/infra2/image_rect_raw", 1);

改完了以后再编译一下:

chmod +x build_ros.sh
./build_ros.sh

可能需要关一下IR光,否则会干扰。运行:

rosrun rqt_reconfigure rqt_reconfigure 

按照这篇的方法关一下emitter_enable(https://blog.csdn.net/Hanghang_/article/details/103612300,按照他的方法二修改了一下rs_camera_copy.launch,发现并没有关掉ir光,还是要手动关,然后用RGBD的时候估计又要手动开。)

然后在新终端运行:

rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml false

其中因为只是粗略的尝试一下,并未对相机标定,因此ONLINE_RECTIFICATION设置为false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值