Skip to content

激光雷达机器狗 SLAM ​

一定要注意版本!!!ubuntu 的版本 + ROS2 的版本 + 雷达的版本。

bash
# 激光雷达 ── USB-TTL ── Ubuntu(ROS2)
# 底盘 STM32 ── USB ── Ubuntu(ROS2)

# 电脑(Ubuntu + ROS2)是大脑
# STM32 只是“四肢 + 电机控制”
# 雷达数据必须“直达电脑”,不能绕 STM32
md
### 第 1 步(当前)

- USB-TTL 接雷达:让 Ubuntu 识别雷达(串口)
- ROS2 跑 `/scan`:把雷达数据变成 ROS2 的 /scan 话题

### 第 2 步

- RViz 看雷达点云:跑 SLAM 算法生成地图

### 第 3 步

- 推着小车跑 `slam_toolbox`
- 生成家里地图

### 第 4 步

- 再考虑:无线 / ROS 主控 / 导航

单片机:STM32、Arduino。 单片机的概念:单片机是微处理器,是微控制器的简称,它把微处理器、存储器、定时器、通信接口等集成在一块芯片上,具有体积小、功耗低、成本低、可靠性高、使用方便等特点,广泛应用于各种电子设备中。

自主导航系统中,响应式结构可以划分为:建图任务、定位任务、识别任务、规划任务和避障任务。从层级式结构来看,可以这么划分:环境感知、路径规划、运动规划。

An image

An image

一、准备工作 ​

1.1 硬件准备 ​

  • 机器狗(四轮小车)
  • 激光雷达

1.2 软件准备 ​

  • ROS2
  • SLAM 算法
  • 机器狗驱动程序
  • 激光雷达驱动程序
  • 机器狗控制程序
  • 激光雷达数据预处理程序

二、开发流程 ​

问题:我现在有个激光雷达,有个四轮小车,也在电脑上安装了 ubuntu 和 ROS2。现在我要怎么做才能把激光雷达的数据收集起来?

要把激光雷达(LiDAR)的数据在 ROS2 中跑起来,你需要完成 “硬件连接 -> 驱动安装 -> 数据查看” 这三步。

分布式网络通信:我需要把激光雷达的数据发送到我的电脑上,我该怎么实现?

2.1 机器狗驱动程序开发 ​

  • 机器狗驱动程序需要实现机器狗的基本控制功能,包括前进、后退、左转、右转、停止等。
  • 机器狗驱动程序需要与机器狗硬件进行通信,实现机器狗的基本控制功能。

2.2 激光雷达驱动程序开发 ​

  • 激光雷达驱动程序需要实现激光雷达的基本控制功能,包括启动、停止、获取激光雷达数据等。
  • 激光雷达驱动程序需要与激光雷达硬件进行通信,实现激光雷达的基本控制功能。

三、开发细节 ​

3.1 mode 查询 USB 是否连接成功(小车连接) ​

An image

An image

An image

An image

An image

设置 Ubuntu,让 ubuntu 能识别到小车连接成功,如果看到这个界面,说明 USB 连接成功

An image

An image

3.2 安装 cutecom 来进行机器人底盘的串口收发数据(小车连接) ​

bash
sudo apt-get install cutecom

sudo cutecom

An image

An image

An image

3.3 查看 Node 节点信息 ​

bash
ros2 node list

ros2 node info /my_node_name

An image

3.4 功能包的打包与发行 ​

bloom.

bloom 是基于 Python 实现的,可以很方便地打包 Python 程序,生成可执行文件,并发布到 PyPI 上。

shell
# 安装bloom
$ sudo apt install python3-bloom
$ sudo apt install dpkg-dev debhelper dh-python
bash
pip install bloom

bloom init

bloom build

bloom publish

3.5 使用 colcon build 构建功能包 ​

bash
# 重新编译,跳过测试
colcon build --allow-overriding tf2_tools --cmake-args -DBUILD_TESTING=OFF



# 清理并重新编译
rm -rf build install log
colcon build --allow-overriding tf2_tools --cmake-args -DBUILD_TESTING=OFF


# 跳过ublox_gps编译其他包
colcon build --allow-overriding tf2_tools \
  --packages-skip ublox_gps \
  --cmake-args -DBUILD_TESTING=OFF

# 跳过需要Ceres的包
colcon build --allow-overriding tf2_tools \
  --packages-skip \
    ublox_gps \
    nav2_constrained_smoother \
  --cmake-args -DBUILD_TESTING=OFF

# ROS2 中所有文件修改后都需要编译才能生效
# 全体编译:colcon build --symlink-install
# 指定编译:colcon build --symlink-install --packages-select +功能包名

3.6 查询当前波特率 ​

bash
# 查看所有串口参数(包含波特率)
stty -F /dev/ttyACM0

# 只查看波特率
stty -F /dev/ttyACM0 speed

# 查看所有参数(更详细)
stty -a -F /dev/ttyACM0
shell
bob@bob-VirtualBox:~$ # 查看所有串口参数(包含波特率)
stty -F /dev/ttyACM0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo
bob@bob-VirtualBox:~$