建图功能
搭建行驶场地
在空旷的场地中,将小车放置在中间并在小车周围放置障碍物,例如:垃圾桶、纸箱等。需要保证两个障碍物之间有充足的空间,保证小车可以自由穿梭,示例环境如下所示。
图1 场地示意图

编译工作空间
- 进入导航车代码目录下。
cd /home/HwHiAiUser/E2Esamples/SLAM/ascend_slam_ws/
- 在ascend_slam_ws目录下执行命令。
colcon build
启动建图
- 在两个工作空间编译完成后,新开启一个终端,以root用户登录开发者套件,输入命令启动RVIZ界面。
rviz2
- 再开启一个终端,以root用户登录开发者套件,执行以下命令。
ros2 launch ascend_slam launch_robot.launch.py
回显如下:
图2 命令回显查看RVIZ2界面,可以看到小车出现。
图3 RVIZ2界面 - 再开启一个终端,以root用户登录开发者套件,执行以下命令启动激光雷达。
ros2 launch rplidar_ros view_rplidar_a2m12_launch.py serial_port:=/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 frame_id:=laser_frame angle_compensate:=true scan_mode:=Standard baud_rate:=115200
回显如下:
图4 命令回显此时查看RVIZ2可视化界面,则可查看点云数据。
图5 RVIZ2界面 - 再开启一个终端,以root用户登录开发者套件,执行以下命令进行建图初始化。
ros2 launch ascend_slam online_async_launch.py params_file:=/home/HwHiAiUser/E2Esamples/SLAM/ascend_slam_ws/install/ascend_slam/share/ascend_slam/config/mapper_params_online_async.yaml use_sim_time:=false
回显如下:
图6 命令回显再次查看RVIZ2窗口,可看到一张初始化的未完成构建的地图出现在小车周围。
图7 RVIZ2界面 - 开始扫描建图。
- 执行如下命令,控制小车对当前区域进行建图。
ros2 run teleop_twist_keyboard teleop_twist_keyboard
根据以下指令,控制小车在地图中移动,完成建图。
- i:前进
- j:左转
- l:右转
- k:暂停
控制小车在地图中障碍物附近移动,此时地图会逐渐完整。
图8 移动小车扫描建图图9 移动小车扫描建图由上图可见,地图中间由两个黑色边框的椭圆和一个黑色边框的长方体。两椭圆对应两个垃圾桶的位置,而长方体则对应纸箱位置。当三个障碍物在地图中清晰可见后,即可完成建图。
- 单击左上角的Panels图标,单击“Add New Panel”按钮。
图10 单击Add New Panel
- 在弹出的窗口中双击最下方的SlamToolboxPlugin,随后RVIZ2界面的左下方即会出现插件界面。
图11 单击SlamToolboxPlugin
- 在“Save Map”右侧输入“ascend_map_save”,在“Serialize Map”右侧输入“ascend_map_serial”。
图12 配置地图信息
- 分别单击“Save Map”按钮和“Serialize Map”按钮。
可在“ascend_slam_ws”目录下看到4份地图文件。
因RVIZ2窗口在本机与DK进行通信,如地图文件没及时出现,可多点击几次。
若将这些地图文件下载至本地,可使用看图软件查看ascend_map_save.pgm,可对构建的地图进行进一步查看,示例地图如下。
图13 查看地图
- 执行如下命令,控制小车对当前区域进行建图。
父主题: 快速体验