一、使用gmapping 建图
- 启动roscore
- roslaunch wpr_simulation wpb_stage_robocup.launch
- sudo apt install ros-noetic-gmapping
- rosrun gmapping slam_gmapping
- 启动rviz (rosrun rviz rviz)。添加RobotModel、LaserScan、Map后
显示如下:
6.rosrun wpr_simulation keyboard_vel_ctrl 控制机器人运动
二、launch 文件启动slam gmapping 建图
1、cd catkin_ws/src/
2、catkin_create_pkg slam_pkg roscpp rospy std_msgs
3、cd slam_pkg ;mkdir launch
4、创建launch文件 gmapping.launch
文件内容如下:
<launch>
<include file="$(find wpr_simulation)/launch/wpb_stage_robocup.launch"/>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping"/>
<node pkg="rviz" type="rviz" name="rviz"/>
<node pkg="wpr_simulation" type="keyboard_vel_ctrl" name="keyboard_vel_ctrl"/>
</launch>
- cd catkin_ws; catkin_make 编译
- 执行 roslaunch slam_pkg gmapping.launch
- Gmapping 参数解释
49.Gmapping建图的参数设置_哔哩哔哩_bilibili
三、保存与加载地图
- sudo apt install ros-noetic-map-server
- rosrun map_server map_saver -f map
3.加载地图 rosrun map_server map_server map.yaml
四、amcl 定位
1、sudo apt install ros-<ROS版本>-navigation
2、roscd amcl ;ls examples
该目录下会列出两个文件: amcl_diff.launch 和 amcl_omni.launch 文件,前者适用于差分移动机器人,后者适用于全向移动机器人,可以按需选择。
3、创建nav功能包,在nav功能包中创建launch目录。复制amcl_diff.launch文件到launch目录中 。
4、在nav功能包中的launch目录中创建amcl_test.launch文件。文件内容如下
<launch>
<node name="map_server" pkg="map_server" type="map_server" args="/home/map.yaml"/>
<!-- 启动AMCL节点 -->
<include file="$(find nav)/launch/amcl.launch" />
<!-- 运行rviz -->
<node pkg="rviz" type="rviz" name="rviz"/>
</launch>
5、启动gazebo :roslaunch wpr_simulation wpb_stage_robocup.launch
启动roslaunch nav amcl_test.launch
启动 rosrun wpr_simulation keyboard_vel_ctrl 控制机器人运动
6、rviz 显示如下
但是定位并不准确,有时候机器人会跑飞。问题以后处理。