目录
1.下载insert插件(该插件下会提供一些建好的场景,也可不下载)
四 仿真二维激光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