使用 Gmapping 实时制图
1. 启动小车底层的通信。
首先,检查激光雷达是否已通电并启用。如果没有接通电源,请使用终端通过脚本文件接通电源并启动激光雷达。如果激光雷达已经接通电源并正在旋转,则可以跳过接通电源并启用激光雷达(./start_ydlidar.sh)的步骤。
// 跳转到激光雷达启动目录
cd myagv_ros/src/myagv_odometry/scripts
// 上电使能雷达,上电后雷达就会通过串口发送数据
./start_ydlidar.sh
打开激光雷达电源后,打开终端控制台(快捷键Ctrl+Alt+T),在命令行中输入以下命令:
roslaunch myagv_odometry myagv_active.launch
打开 SLAM 激光扫描和汽车车轮所需的启动文件。如果您看到
myAGV initialized successful! ...... Now YDLIDAR is scanning ......
它表示汽车激光雷达和车轮之间的通信成功。终端将显示如下状态:
2. 打开 Gmapping 建图 launch 文件
打开一个新的终端控制台,在命令行中输入以下命令:
roslaunch myagv_navigation myagv_slam_laser.launch
3. 打开键盘控制文件
打开一个新的终端控制台,在终端命令行中输入以下命令:
roslaunch myagv_teleop myagv_teleop.launch
按键 | 方向 |
---|---|
i | 向前移动 |
, | 向后移动 |
j | 向左移动 |
l | 向右移动 |
u | 逆时针旋转 |
o | 顺时针旋转 |
k | 停止 |
m | 顺时针反向旋转 |
. | 逆时针反向旋转 |
q | 提高线速度和角速度 |
z | 降低线速度和角速度 |
w | 提高线速度 |
x | 降低线速度 |
e | 增加角速度 |
c | 降低角速度 |
4. 开始建图
现在,小车可以在键盘控制下开始移动。操纵汽车在所需的映射空间内旋转。同时,您可以在 Rviz 空间中观察到,随着汽车的移动,我们的地图也在逐渐构建。
注意:使用键盘操作小车时,请确保运行 myagv_teleop.launch 文件的终端是当前选定的终端;否则,键盘控制程序将无法识别按键。此外,为了获得更好的映射效果,建议在键盘控制时将线速度设为 0.2,角速度设为 0.4,因为较低的速度往往会产生更好的映射效果。"
5. 保存构建的地图
打开另一个新的终端控制台,在命令行中输入以下命令,保存 agv 扫描的地图:
cd ~/myagv_ros/src/myagv_navigation/map
rosrun map_server map_saver
执行成功后,将在当前路径(~/myagv_ros/src/myagv_navigation/map)下生成两个默认地图参数文件,即map.pgm和map.yaml。
或者,在使用 -f 参数运行 rosrun map_server map_saver 时,可以指定路径和文件名。下面是一个示例,供参考"。
rosrun map_server map_saver -f /home/er/myagv_ros/src/myagv_navigation/map/map_505