从零入门激光SLAM(六)——ROS常用工具箱
大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论。
ROS中提供的工具箱有很多,但我们最常用的只有3个,二维RQT,三维RVIZ,仿真Gazebo,掌握这三种就基本够用了。下面将详细介绍这三个工具箱的具体用法。
1.RQT
下面展示常用的Rqt工具箱用法,更多的用法见官方网站http://wiki.ros.org/rqt_common_plugins
- rqt_graph
$ rosrun rqt_graph rqt_graph #查看各ros节点之间的逻辑关系图
- rqt_plot
$ rosrun rqt_plot rqt_plot #rqt_plot命令可以在滚动时间图上显示发布到某个话题上的数据。
- rqt_image_view
$ rqt_image_view #查看图片话题。
- rqt_tf_tree
$ rosrun rqt_tf_tree rqt_tf_tree #查看坐标系之间的关系,TF树。
- rqt_bag
$ rqt_image_view #查看rosbag的数据,能够可视化图片和时间戳,并且可以选择话题进行发布,能够随时启动,暂停以及快进,但不能可视化三维消息。
2.RVIZ
2.1 简介
RVIZ是一款强大的三维可视化工具,很好地兼容了各种基于ROS软件框架的机器人平台。能够可视化绝大多数的传感器数据。rviz安装
sudo apt-get install rviz
下面带大家先看看RVIZ能实现什么效果,具体的代码后面会讲到。
2.2 显示点云
可利用Select选择点云获取具体信息
2.3 显示图像
2.4 显示Odometry
2.5 显示IMU
2.6 显示boundingbox
使用jsk_recognition_msgs
同时RVIZ提供marker接口,用户可以根据自己的定义将marker显示在RVIZ中,其可以定义marker的主要类型如下图所示。
2.7 显示path
2.8 显示地图
- 栅格地图
- 点云地图
- 八叉树地图
3.GAZEBO
3.1 简介
ROS中的Gazebo是一个广泛使用的开源物理仿真引擎,它能够模拟多种类型的机器人、车辆、传感器、环境等,并且可以在仿真环境中进行开发、测试和验证机器人控制算法和传感器数据处理算法。
Gazebo提供了以下功能:
- 物理仿真:Gazebo通过运用物理引擎来模拟物体的运动和碰撞,从而提供真实的物理交互和物体运动效果。
- 传感器仿真:Gazebo可以模拟各种类型的传感器,如激光雷达、摄像头、IMU、GPS等,并且可以生成各种类型的传感器数据,以便在仿真环境中进行传感器数据处理算法的开发和测试。
- 环境仿真:Gazebo可以创建复杂的三维环境,包括地形、建筑物、天气等,以模拟现实世界中各种不同的场景。
- ROS集成:Gazebo可以与ROS集成,使得用户可以通过ROS对Gazebo中的机器人进行控制和通信,从而更加方便地进行机器人开发和测试。
综上所述,Gazebo是一个非常强大的物理仿真引擎,它提供了各种功能,可以帮助开发者进行机器人开发、测试和验证,提高机器人系统的稳定性和可靠性。
3.2 使用
1.安装
#安装
sudo apt-get install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control
#下载模型
cd ~/.gazebo && wget https://gitee.com/ohhuo/scripts/raw/master/gazebo_model.py && python3 gazebo_model.pyCopy to clipboardErrorCopied
# 运行下载模型脚本
Python gazebo_model.py
# 打开gazebo导入相关模型
2.搭建仿真环境
Edit的building editor选项,可以快速搭建仿真环境,并且能够设定颜色和材质,搭建完成之后点击file的save world选项,保存文件格式为world,方便之后调用。
Turtlebot移动机器人gazebo仿真及导航
#安装依赖
sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc ros-noetic-rgbd-launch ros-noetic-depthimage-to-laserscan ros-noetic-rosserial-arduino ros-noetic-rosserial-python ros-noetic-rosserial-server ros-noetic-rosserial-client ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro ros-noetic-compressed-image-transport ros-noetic-rqt-image-view ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-marker
# 安装turtlebot3
mkdir turtlebot_ws/src/
cd turtlebot_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ~/turtlebot_ws
catkin_make
a.加载机器人与地图
首先将
turtlebot_ws/src/turtlebot3_simulations/turtlebot3_gazebo/launch/turtlebot3_world.launch文件中的world改成自己的路径。
<arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/baylands.world"/>
# 加载地图和机器人
export TURTLEBOT3_MODEL='burger'
roslaunch turtlebot3_gazebo turtlebot3_world.launch
b.键盘控制机器人移动
export TURTLEBOT3_MODEL='burger'
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
c.SLAM建图
export TURTLEBOT3_MODEL='burger'
roslaunch turtlebot3_slam turtlebot3_slam.launch #启动SLAM节点
# 利用键盘控制移动,注意鼠标点一下键盘控制的终端才会有效
rosrun map_server map_saver -f ~/workspace/turtlebot_ws/src/turtlebot3/turtlebot3_navigation/map #保存地图
d.导航
仅保证仿真的终端开着,其他的终端可以关闭了。
export TURTLEBOT3_MODEL='burger'
roslaunch turtlebot3_navigation turtlebot3_navigation.launch
鼠标左键选择rviz工具栏的“2D Pose Estimate”重定位仿真环境中机器人位置和地图中一致,然后选择rviz工具栏中“2D Nav Goal”选项,长按鼠标左键在地图上为机器人指定一个导航目标点。松开鼠标后,在短时间内规划出了一条最优的路径,机器人开始向目标点运动。
感谢各位小伙伴能读到这里,如有不清楚或不对的地方欢迎评论区讨论,博主也是初学者,按自己理解区解释,恳请各位理解,下一篇将很快到来~
如果喜欢就关注一下吧!
更多推荐
所有评论(0)