使用ORB-SLAM2算法和Turtlebot3机器人在自己构建的室内场景中建图

本文叙述了在gazebo仿真环境和rqt可视化工具的背景下,使用ORB-SLAM2算法和turtlebot3-burger机器人在自己构建的室内场景中建图过程。目前存在的问题是运行RGBD节点时无法显示图像,报错“WAITING FOR IMAGES”。


1. 构建ORB-SLAM2工作空间并编译

参考前面文章
Ubuntu 16.04系统下安装Open-CV 3.1.0
Ubuntu 16.04系统下安装Eigen3矩阵库(简便法)
Ubuntu 16.04系统下使用数据集运行ORB-SLAM2算法
关于ORB-SLAM2算法编译过程中运行./build_ros.sh命令报错问题的解决方法


2. 在ORB-SLAM2工作空间中编译Turtlebot3-Burger并添加kienct

参考前面文章
Turtlebot3仿真环境搭建
为Turtlebot3-Burger机器人添加Kinect深度相机并获取环境图像


3. 在ORB-SLAM2工作空间添加gazebo场景功能包

(1)在catkin_ws_orb下创建功能包orb_room

catkin_create_pkg orb_room std_msgs rospy roscpp

cd ..

catkin_make
source devel/setup.bash

(2)在orb_room功能包下放置world文件夹,其中包含之前搭建好的my_room.world文件

(3)编写launch文件
在orb_room功能包下建立launch文件夹,并在launch文件夹中新建orb_room.launch文件,内容如下:

<launch>
    <!-- 设置launch文件的参数 -->
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">      
	<arg name="world_name" value="$(find orb_room)/world/my_room.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->	
	<arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>

    <!-- 加载机器人模型描述参数 -->
    <param name="turtlebot3_description" command="$(find xacro)/xacro --inorder '$(find turtlebot3_description)/urdf/turtlebot3_burger.urdf.xacro'" /> 

    <!-- 在gazebo中加载机器人模型 -->
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model turtlebot3_burger -param turtlebot3_description"/> 

</launch>

(4)编译刷新环境

catkin_make
source devel/setup.bash

4. 启动建图仿真

(1)启动场景

roslaunch orb_room orb_room.launch

在这里插入图片描述

(2)启动ORB-SLAM2的RGBD节点
在catkin_ws_orb/src/ORB_SLAM2下运行

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml

注: 如果出现了找不到opencv库的问题,请参考此文章
ERROR WHILE LOADING SHARED LIBRARIES: LIBOPENCV_HIGHGUI.SO.3.4: CANNOT OPEN SHARED OBJECT FILE解决方法

在这里插入图片描述
此时出现了问题,图像没有显示,报错:WAITING FOR IMAGES。是因为话题名没有修改。全部话题如下图所示:
在这里插入图片描述


根据话题名将ros_rgbd.cc文件中的话题名进行更改。

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

然后在catkin_ws_orb/src/ORB_SLAM2下重新运行命令

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml

在这里插入图片描述
(3)启动键盘控制节点

sudo apt-get install ros-kinetic-teleop-twist-keyboard

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

在这里插入图片描述
在这里插入图片描述



参考资料

ERROR WHILE LOADING SHARED LIBRARIES: LIBOPENCV_HIGHGUI.SO.3.4: CANNOT OPEN SHARED OBJECT FILE解决方法
ORB_SLAM2功能包的构建和在ROS中的应用
ROS入门:ORB_Slam2踩坑,RGBD无法获取数据

  • 2
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
在ROS中使用ORB-SLAM进行定位和建,需要将相机的像数据发布到ROS中,然后订阅这些像数据,将其传递给ORB-SLAM进行处理。 首先,你需要使用ROS中的相机驱动程序来获取相机的像数据,并将其发布到ROS中。你可以使用任何ROS支持的相机驱动程序,例如USB相机驱动程序或者网络相机驱动程序。在获取到相机像数据后,你需要将它们以像话题的形式发布到ROS中,例如使用`sensor_msgs/Image`消息类型来发布像数据。 然后,你需要在ORB-SLAM节点中订阅这些像话题,并使用ORB-SLAM进行处理。在ORB-SLAM节点中,你需要订阅相机的像话题,例如使用`ros::Subscriber`来订阅`sensor_msgs/Image`消息类型的话题。然后,你需要将这些像数据传递给ORB-SLAM进行处理。ORB-SLAM使用这些像数据进行定位和建。 在ORB-SLAM节点中,你还需要发布ORB-SLAM的位姿信息和地数据,以便其他节点订阅并使用。你可以使用`ros::Publisher`来发布ORB-SLAM的位姿信息和地数据,例如使用`geometry_msgs/PoseStamped`消息类型来发布ORB-SLAM的位姿信息,使用`nav_msgs/OccupancyGrid`消息类型来发布ORB-SLAM的地数据。 总之,使用ORB-SLAM进行定位和建需要以下几个步骤: 1. 使用ROS相机驱动程序获取相机像数据,并以像话题的形式发布到ROS中。 2. 在ORB-SLAM节点中订阅相机像话题,并使用ORB-SLAM进行处理。 3. 在ORB-SLAM节点中发布ORB-SLAM的位姿信息和地数据,以便其他节点订阅并使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值