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.youkuaiyun.com/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.youkuaiyun.com/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

### 安装准备 为了在Ubuntu 20.04上使用ORB-SLAM3处理rosbag文件,需先完成一系列准备工作。这包括安装必要的依赖项以及设置ROS环境。 #### ROS Noetic安装 对于Ubuntu 20.04, 推荐采用一键脚本简化ROS Noetic的部署过程[^3]: ```bash wget http://fishros.com/install -O fishros && bash fishros ``` 此操作会自动下载并配置好ROS Noetic开发环境,极大地方便后续工作开展。 ### 下载与编译ORB-SLAM3 获取ORB-SLAM3源码可通过Git工具实现,在`home`目录启动终端输入如下指令来克隆仓库[^2]: ```bash git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 ``` 之后按照官方文档指示进行编译前的各项检查和构建: - 确认已正确安装Eigen库版本不低于3.x。 - 编辑CMakeLists.txt以适应本地机器特性需求。 - 使用catkin_make或catkin build命令开始编译流程。 ### 配置ROS节点读取Rosbag数据 要使ORB-SLAM3能够接收来自rosbag的数据流作为输入源,则需要调整launch文件参数设定,并确保topic名称匹配实际记录中的传感器消息路径。通常情况下,可以通过修改example_ros.launch文件内的订阅者部分达到目的: ```xml <node pkg="orb_slam3" type="mono_rgbd" name="MonoRGBD"> <!-- 设置其他必要参数 --> </node> ``` 同时指定待播放的具体rosbag文件位置及回放选项,例如循环次数、速率控制等。通过roslaunch加载自定义配置的同时开启rosbag play进程即可让两者协同运作。 ```bash # 启动ORB SLAM3对应的Launch文件 roslaunch orb_slam3 example_ros.launch vocab_file:=VOCABULARY_PATH settings_file:=SETTINGS_FILE_PATH # 另开一窗口用于播放Bag包 rosbag play --clock YOUR_BAGFILE.bag /camera/depth/image_rect_raw:=/camera/aligned_depth_to_color/image_raw ... ``` 注意替换上述命令里的占位符(如VOCABULARY_PATH、SETTINGS_FILE_PATH 和YOUR_BAGFILE.bag),使其指向具体的词汇表文件路径、配置文件路径以及目标rosbag文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值