Jeston nano+RealSense D455相机+ORB_SLAM3+ROS实时运行
本人是在已经装有Ubuntu系统和ROS和opencv的Jeston nano上外接D455相机实现ORB_SLAM3的初步实时运行。
安装各种ORB_SLAM3依赖项
这个内容已经有许多人做了,建议参照ORB_SLAM3源代码讲解进行下载安装各类依赖项
参考链接:ORB_SLAM3官方下载
按照以上链接内容进行一步步下载安装,即可完成初步的ORB_SLAM3的下载。
编译
编译正常版本
正常版本不需要添加环境变量,正常按以下命令正常编译即可:
cd ORB_SLAM3
chmod +x build.sh
./build.sh
但是,由于我使用的Jeston nano的内存和CPU比较小,似乎不足以很快地编译成功,会出现卡机死机的情况,所以可以通过设置交换空间进行解决,具体可参考:swap分区设置
同时,为了防止死机,可以手动编译:
cd ORB_SLAM3/build
make -j1
另外,在编译过程中还会发现依赖库找不到的情况,此时是由于新下载的库默认位置是/usr/local/lib,而库配置文件并没有写入库文件所在目录,所以进行如下操作:
#找到库配置文件:
/etc/ld.so.conf.d/usr-libs.conf
#在其中添加:
/usr/local/lib
#更新/etc/ld.so.cache文件:
ldconfig
具体可参考:解决lib依赖库问题
编译ROS版本
在进行ROS版本编译前,需要先添加环境变量,具体命令如下:
nano ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/…/ORB_SLAM3/Examples/ROS
#上面…填上ORB_SLAM3的具体路径
source ~/.bashrc
然后,按照以下操作进行ROS版本的编译,同样这个过程中会出现卡机、死机的情况,具体解决办法可以参考前面。
cd ORB_SLAM3
chmod +x build_ros.sh
./build_ros.sh
但是,此时可能出现仍然找不到package的情况,即环境变量添加不成功,具体解决方法是在ROS的安装路径下添加环境变量,操作命令如下:
cd /opt/ros/melodic/
sudo su #进入root权限
nano setup.bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/…/ORB_SLAM3/Examples/ROS
source setup.bash
其中更详细内容可以参考:添加环境变量
此时重新编译./build_ros.sh即可成功。
外接相机实时运行ORB_SLAM3
修改订阅话题名
首先要将原程序中的订阅话题名修改成我们自己的订阅名称,主要是根据相机节点发布的消息名称,改成自己需要订阅的数据。
# 使用单目摄像头
# 位置:ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_mono.cc(66行左右)
ros::Subscriber sub = nodeHandler.subscribe("/camera/color/image_raw", 1, &ImageGrabber::GrabImage,&igb);
这里本人目前只测试了单目摄像头,所以只改了这个话题,其他情况类似。
运行
# 使用单目摄像头(3个终端)
roscore
roslaunch realsense2_camera rs_camera.launch
#在ORB_SLAM3文件夹下
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
#上面程序:rosrun ORB_SLAM3 功能 词典位置 相机参数文件位置
此步骤具体可以参考:D455实时运行ORB_SLAM3
效果
最后效果如图所示: