基类和派生类写在一个文件中_为ORB-SLAM2写一个launch文件

在ros下启动ORB-SLAM2的步骤比较繁琐,比如运行单目版本,首先需要启动相机,然后在新的命令窗口下打开ORB-SLAM2的相应节点,这个步骤需要输入配置好的路径等:

# ros 启动orb-slam2的单目节点
$ rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

为了以后偷懒,用一个launch文件来管理ORB-SLAM2的启动过程,本文主要记录完成这个简单任务的过程。

一. 在ROS下建立orb_launch包

参考官方的教程,建立orb_launch package,其实就一行代码:

$ cd ~/catkin_ws/src
$ catkin_create_pkg orb_launch std_msgs rospy roscpp

然后在orb_launch文件夹下建立launch文件夹。

二.在launch文件夹下建立xxx.launch文件

我主要建立了三个launch文件,具体的功能是:

  • orb_slam2.launch : 单独启动orb_slam2 的某一个ros节点
  • orb_slam2_mono.launch : 启动usb相机和orb_slam2 mono节点
  • orb_slam2_rgbd.launch : 启动深度相机和orb_slam2 rgbd节点

具体代码:

放单目版本的文件内容(每个版本都差不多,具体代码我已经上传到github:

weihaotobe94/ORB_SLAM2_launch​github.com
e4ef2f3906dd52764acdc0913106fc1e.png

)weihaotobe94/ORB_SLAM2_launch)

orb_slam2_mono.launch :

<launch>
    <!--定义全局参数-->
    <arg name="rgb_image" default="/usb_cam/image_raw"/>
    <arg name="path_to_vacabulary" default="/home/weihao/SLAM_Project/ORB_SLAM2-master/Vocabulary/ORBvoc.txt"/>
    <arg name="path_to_settings" default="/home/weihao/SLAM_Project/ORB_SLAM2-master/Examples/Monocular/TUM1.yaml"/>
    <!--启动摄像头节点(USB相机)-->
    <include file="$(find usb_cam)/launch/usb_cam-test.launch"/>

    <!--启动ORB-SLAM2 RGBD-->
    <node name ="Mono" pkg="ORB_SLAM2" type="Mono" 
        args="$(arg path_to_vacabulary) $(arg path_to_settings)" respawn="true" output="screen">
        <remap from="/camera/image_raw" to="$(arg rgb_image)"/>
    </node>
</launch>

可以根据实际情况修改全局参数的配置。(我的相机输出是640*480,因此直接调用了TUM1.yaml的配置文件,也可标定相机然后加载自己的配置文件,这里只是看一下效果,虽然实际差别可能不会太大,因为orb_slam2貌似对相机内参进行了在线优化)

三.运行效果

启动上述节点

$ roslaunch orb_launch orb_slam2_mono.launch

实际运行效果如图:

f720953695a9d27411c5a1599d298c3e.png

四.问题总结

  1. roslaunch找不到orb_slam2 mono节点

原因:ros找不到orb_slam2的ros包,需要将路径放在.bashrc文件末尾

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

然后"source ~/.bashrc",假如仍然不能正常运行,请参考:(十一)ORBSLAM2在ROS下运行-布布扣-bubuko.com

2.launch文件的格式一定要写对,经常忘了写/等。

3.本来打算用一个config/xx.yaml文件来管理所有参数,但node 的args传递参数没完全明白,之后再改进。

好长时间没有搞ros了,写十行代码花了2个小时,以后还是要加强学习啊!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值