电脑环境:ubuntu16.04 + kinetic(源码安装)
ORB_SLAM2在gazebo中跑RGBD
参考博客https://blog.csdn.net/li528405176/article/details/81164637搭建的ROS-Academy-for-Beginners的gazebo仿真环境,但opencv使用的自带版本2.4.9.1,编译运行orb都没问题,就没按上面的方法安装opencv3.2了(主要是电脑上装了cuda10,貌似不支持opencv3.2版本,反正不影响orb的编译与运行,索性不重装opencv了)
roslaunch robot_sim_demo robot_spawn.launch
roslaunch orbslam2_demo ros_orbslam2.launch
rosrun robot_sim_demo robot_keyboard_teleop.py
博客里面把depth的topic名字在ros_rgbd.cc中给改了,然后运行的,其实原因是ros_orbslam2.launch文件写的有问题,remap没生效,如果不想修改ros_rgbd.cc重新编译,那就用以下办法:
把原文ros_orbslam2.launch中的:
<node name="RGBD" pkg="ORB_SLAM2" type="RGBD" args="$(arg PATH_TO_VOCABULARY) $(arg PATH_TO_SETTINGS_FILE)"/>
<remap from="/camera/depth_registered/image_raw" to="/camera/depth/image_raw"/>
修改为:
<node name="RGBD" pkg="ORB_SLAM2" type="RGBD" args="$(arg PATH_TO_VOCABULARY) $(arg PATH_TO_SETTINGS_FILE)">
<remap from="/camera/depth_registered/image_raw" to="/camera/depth/image_raw"/>
</node>
这样remap就生效了。实验下来,建图效果还可以,看着还像个方形的房子,只是在机器人运动过程中相机跟踪也有丢失的情况,转速慢一点,会好很多。
ORB_SLAM2在gazebo中跑mono
参考博客https://www.jianshu.com/p/811e24e8965a,文中一直处于尝试初始化,我的仿真结果也一样,一直处于尝试初始化中,然后修改了相机参数如下(最好将ROS-Academy-for-Beginners包里面的xbot-u.gazebo复制一个为xbot-u_mono.gazebo来修改参数,注意修改robot.xacro使用xbot-u_mono.gazebo):
将xbot-u.gazebo原文中的:
<!-- camera -->
<gazebo reference="camera_link">
<sensor type="depth" name="camera">
<plugin name="kinect_camera_controller" filename="libgazebo_ros_openni_kinect.so">
<cameraName>camera</cameraName>
<alwaysOn>true</alwaysOn>
<updateRate>10</updateRate>
<imageTopicName>rgb/image_raw</imageTopicName>
<depthImageTopicName>depth/image_raw</depthImageTopicName>
<pointCloudTopicName>depth/points</pointCloudTopicName>
<cameraInfoTopicName>rgb/camera_info</cameraInfoTopicName>
<depthImageCameraInfoTopicName>depth/came