跳转至

激光雷达

适用配置

AI Perception Pack · 激光雷达功能模块

LIDAR PERCEPTION PACK

扫描、建图与导航输入

参考配置使用二维激光雷达与 RDK S100/S100P。雷达持续输出 360° 扫描数据,为 SLAM 建图、定位、导航与避障提供基础输入。

  • 感知方式:360° 二维环境扫描
  • 默认链路:雷达驱动 + /scan 话题输出
  • 典型用途:建图、定位、导航与避障
模块外设图示

开始建图前,建议先确认 /scan 输出稳定,再启动 Cartographer 或导航流程。

雷达模块简介

机器人胸腔内部装配有 二维激光雷达,采用飞行时间测量法,可对周围环境进行 360° 二维扫描。测量频率最高可达 20000 次/秒,测量精度可达 ±3 cm,最大量程 25 m。模块具备较强的环境光适应能力,并配有独立外罩,适用于机器人建图、定位与导航等场景。

驱动源码及版本以实际交付的软件包为准。

SLAM建图

在Ubuntu 22.04 + ROS 2 Humble 环境下,通过激光雷达完成二维环境建图、地图显示与地图保存。

注:出厂已完成安装,只需在打开终端时,输入Driver对应工作空间的数字,再键入Enter即可直接使用预装好的开发环境。

=================================
请选择要进入的工作空间和虚拟环境:
=================================
1) Driver (~/driver)
2) RDK AI (~/rdk_ai)
3) TROS (~/tros)
4) 不进入任何虚拟环境 (保持默认)
=================================
请输入数字 [1-4] (直接按 Enter 保持默认):1

启动雷达驱动

SSH连接算力大脑成功后,开启终端一输入如下指令,启动机器人激光雷达:

ros2 launch lslidar_driver lslidar_launch.py
命令会启动

  • lslidar_driver 雷达驱动

  • RViz2 显示窗口(可以禁用,见下文)

IMG_256

RViz2 显示窗口

该终端及RViz2 显示窗口保持运行,不要关闭。

为了节省硬件CPU资源,确保运行流畅,可选择禁用雷达的Rviz2 窗口显示:

ros2 launch lslidar_driver lslidar_launch.py use_rviz:=false

启动SLAM构建地图

开启终端二,执行:

ros2 launch bot_bringup cartographer.launch.py
这个终端会启动:

  • base_link -> laser_link 静态 TF
  • cartographer_node
  • cartographer_occupancy_grid_node
  • RViz2 (追加show_rviz:=false 关闭显示rviz2)

保持当前终端不要关闭,切换RViz2 显示窗口,若此时RViz2 没有map,通过Add -> By topic -> /map将其打开,并将Fixed Frame改成map。

IMG_256

RViz2 建图

若此时机器人处于强化学习模式,可通过操作手柄遥控机器人移动,RViz2中逐渐出现地图全貌,保持终端不要关闭。

保存地图

建图完成后,新开终端三,执行:

ros2 launch nav_bringup save_map.launch.py mode:=save map_filepath:=./maps/my_map
将地图保存到./maps目录下,此时可看到该目录下有:

  • my_map.yaml
  • my_map.pgm
  • my_map.pbstream

保存完成后再关闭,推荐关闭顺序RViz2窗口 -> 终端二SLAM建图 -> 终端一雷达驱动。

SLAM导航与自主避障

在Ubuntu 22.04 + ROS 2 Humble 环境下,使用cartographer 获取机器人定位,使用Navigation2 框架实现全局地图下的导航和局部地图自主避障绕行。

注:出厂已完成安装,只需在打开终端时,输入Driver对应工作空间的数字,再键入Enter即可直接使用预装好的开发环境。

=================================
请选择要进入的工作空间和虚拟环境:
=================================
1) Driver (~/driver)
2) RDK AI (~/rdk_ai)
3) TROS (~/tros)
4) 不进入任何虚拟环境 (保持默认)
=================================
请输入数字 [1-4] (直接按 Enter 保持默认):1

启动雷达驱动

SSH连接算力大脑成功后,开启终端一输入如下指令,启动机器人激光雷达:

为了节省硬件CPU资源,确保运行流畅,可选择禁用雷达的Rviz2 窗口显示:

ros2 launch lslidar_driver lslidar_launch.py use_rviz:=false

ros2 launch bot_bringup nav2_with_cart.launch.py map_name:=my_map maps_dir:=./maps
参数说明

  • maps_dir:=./maps 存放地图的文件夹 该目录下有.yaml .pgm .pbstream等地图文件
  • map_name:=my_map 地图名称 10.2.3保存地图 时的地图名称

这个终端会启动:

  • base_link -> laser_link 静态 TF
  • cartographer_node 提供定位
  • nav2_bringup 导航核心系列节点
  • bot_base 把cmd_vel 转到zmq
  • RViz2 (追加show_rviz:=false 关闭显示rviz2)

文档图示

Rviz2可以看到全局地图,全局障碍地图(红蓝轮廓),局部障碍地图(深色红蓝轮廓)。

发送目标点

启动控制接口

#激活Drive环境
cd ~/driver
python3 nav_tools/zmq_json_send.py --cmd set_sdk_mode --sdk-mode 1
文档图示

启动后如果机器人位置和地图中不一致,可以使用Rviz2 上方的2D Pose Estimate 在地图任意位置拖动,此时机器人会原地转圈,触发重定位,如果多次使用仍在不能重定位,或者定位到其他位置,可以使用键盘控制程序(大脑端)大幅度移动移动机器人。

ros2 run teleop_twist_keyboard teleop_twist_keyboard
可视化的雷达数据和地图轮廓大致相同后,使用2D Goal Pose 在地图可达位置拖动,Rviz2会显示机器人导航路径,导航过程会纠正自身的偏移,实时更新自身局部地图并更新路径绕开障碍物。

文档图示