Ubuntu18.04 ROS melodic环境下,通过Gazebo软件仿真SLAM算法的学习(gmapping/karto/cartographer/hector)

目录

一 环境场景搭建world

1.下载insert插件(该插件下会提供一些建好的场景,也可不下载)

2.环境搭建(自建)

3.保存环境

4.配置修改

5.启动环境

二 机器人模型URDF

1.模型创建的文件书写规范

2.检查文件格式是否正确

3.启动模型

三 机器人在场景中运动

1.机器人放在场景中

2.为小车装配传感器,执行器

3.让小车在场景中运动

四 仿真二维激光SLAM开源算法gmapping、cartographer、karto、hector



一 环境场景搭建world


1.下载insert插件(该插件下会提供一些建好的场景,也可不下载)

下载存放在主目录下的.gazebo中(通过ctrl+h显示.gazebo文件),命名为models。

2.环境搭建(自建)

通过Edit中的builiding命令,上为二维图,下为三维图。

3.保存环境

通过file中save world as,存放在功能包中的world文件夹下,该路径专门用于存放自制环境world。

4.配置修改

修改启动该环境的launch文件,笔者命名为gazebo_world.launch。修改其中的world为你上一步骤保存的名字。

5.启动环境

搭建好环境后便可以通过launch文件单独启动。(只查看环境)

roslaunch bingda_tutorials gazebo_world.launch

二 机器人模型URDF


1.模型创建的文件书写规范

/<robot>

/<link>(体)颜色/质量/惯性/尺寸/形状/碰撞

/<joint>(关节)<type>(关节活动方式) 需指定parent及child的link来进行连接

对应的解释及使用说明在官网链接:urdf/XML/link - ROS Wiki

2.检查文件格式是否正确

check_urdf mybot.urdf //需要roscd定位在urdf目录下,笔者文件名为mybot.urdf

显示文件及机器人模型正确,并在展示了父子关系

 3.启动模型

(只启动机器人模型在rviz中显示,该步骤只给自己看,没有实际应用意义)

启动之前,确保display_robot.launch文件中textfile的urdf文件名与第一步的文件名字对应。

roslaunch bingda_tutorials display_robot.launch //启动机器人urdf模型,该launch文件关联rviz,在rviz中显示

在rviz中可以查看建模是否正确


三 机器人在场景中运动


1.机器人放在场景中

(1)通过gazebo_robot.launch文件实现,按照书写语法,找到前两节所建立的文件名:

gazebo_world.launch(环境模型launch文件)和mybot.urdf(机器人模型urdf文件)

<launch>
  <include file="$(find bingda_tutorials)/launch/gazebo_world.launch"/>
  <node name="spawn_model"  pkg="gazebo_ros"  type="spawn_model" args="-file $(find bingda_tutorials)/urdf/mybot.urdf -urdf -model robot_description" output="screen" />
</launch>

(2)启动该launch文件。显示机器人已经放在了场景中,但小车无法运动且无传感器。

roslaunch bingda_tutorials gazebo_robot.launch

 虽然urdf文件在rviz中机器人为彩色,但在gazebo中无效不显示颜色,需要按照gazebo的格式。

即.xacro文件来为.urdf文件进行补充。(.xacro文件并不是非用不可,也可以单独在urdf中完成)

 2.为小车装配传感器,执行器

(1)xacro文件

.xacro文件与.urdf文件是相似的,多了开头的include语法,以及结尾的传感器与执行器的添加。

笔者习惯将仿真相关的配置单独放在mybot.gazebo.xacro中,例如雷达的线束,差速控制,imu频率......等,添加的方式通过gazebo中plugin载入的,ROS官网的gazebo有介绍到;将最后所有的配置链接到mybot.xacro中,也就是mybot.xacro纯模型文件包含mybot.gazebo.xacro文件。

 (2)launch文件

在仿真的simulation_robot.launch文件中包含了两个文件链接:

    ——gazebo_world.launch//机器人环境模型——

    ——mybot.xacro//机器人模型及传感器执行器的所有配置——

然后通过XML文件语法——spawn_model  将创建好的机器人加载到环境模型中。

启动模型:

roslaunch bingda_tutorials simulation_robot.launch

可见:小车已经具有了颜色,传感器,电机等。

3.让小车在场景中运动

(1)启动键盘控制节点:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py //ros中自带

PS:若没有下载过键盘控制节点包,可通过以下命令下载:

sudo apt-get install ros-melodic-teleop-twist-keyboard//安装键盘控制节点

(2)开启相机第一人称跟踪视角 :

rqt_image_view

(3) 开启rviz

rviz

rviz选择基坐标odom,添加雷达点云Lasercan中topic为/scan,机器模型model,TF关系。

3个窗口分别是:gazebo,image iew,rviz


四 仿真SLAM开源算法gmapping、cartographer、karto、hector


(1)开启仿真环境:

roslaunch bingda_tutorials simulation_robot.launch //仿真环境+小车(Gazebo 下)

(2)开启gmapping算法:(添加  simulation:=true;此处也可修改为carto....等算法)

roslaunch robot_navigation gmapping.launch simulation:=true //启动SLAM中GMapping算法 true确保时间线的统一

(3)开启rviz界面:

roslaunch robot_navigation slam_rviz.launch  //启动rviz界面

(4)开启键盘控制节点:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py //ros中自带

 此时便可以肆意妄为的在你自己建立的环境中满图跑了,然后便可以看到gmapping的建图效果:

 (5)保存地图

roscd robot_navigation/maps/ //选择目录
rosrun map_server map_saver -f map//保存建好的图指定名称为map

PS:相关功能包下载:

1.放到src目录下的bingda_tutorials功能包

git clone https://gitee.com/bingda-robot/bingda_tutorials

Guess you like

Origin blog.csdn.net/weixin_68647501/article/details/128640959