目的:让 树莓派只运行底层/简单节点,PC 运行主要程序、键盘控制、算法、SLAM、RViz 等重负载任务。
当前过程基于:树莓派 Ubuntu 22.04 + PC 虚拟机 Ubuntu 22.04 + ROS2 Humble + TurtleBot3/OpenCR 架构。
0. 背景与目标
0.1 原始平台情况
该 ROS-SLAM 实训平台原设计为:
- Raspberry Pi 3B+ 作为应用级控制器;
- OpenCR 作为主控制器板;
- 机器人带有激光雷达、IMU、电机、电池等;
- 原说明书环境为 Ubuntu 18.04.2 + ROS Melodic;
- 原控制流程为 PC 启动 ROS 主节点,机器人端启动底盘节点,再用键盘控制。
但是本次实际部署改为:
| 设备 | 系统 | ROS 版本 | 角色 |
|---|---|---|---|
| 树莓派 3B+ | Ubuntu 22.04.5 LTS / aarch64 | ROS2 Humble | 底盘、OpenCR、传感器、简单节点 |
| PC 虚拟机 | Ubuntu 22.04 | ROS2 Humble | 主程序、键盘控制、算法、可视化 |
0.2 最终推荐架构
这种结构的核心思想是:
- 树莓派性能有限,只做硬件相关工作;
- PC 负责较重的计算任务;
- 两边通过 ROS2 topic 通信;
- 控制小车移动的核心话题是
/cmd_vel。
1. 树莓派系统确认
1.1 执行命令
在树莓派上执行:
lsb_release -a
uname -m
实际结果:
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
aarch64
1.2 结论
- Ubuntu 版本是 22.04 Jammy;
- CPU 架构是 aarch64,即 64 位 ARM;
- 可以安装 ROS2 Humble 官方 arm64 包。
2. 树莓派安装 ROS2 Humble
2.1 第一次遇到的问题
执行:
sudo apt install ros-humble-ros-base
报错:
E: Unable to locate package ros-humble-ros-base
2.2 原因
apt 找不到该包,不是 ROS2 包不存在,而是 系统还没有添加 ROS2 官方软件源。
2.3 解决方法
安装基础工具并启用 universe:
sudo apt update
sudo apt install -y software-properties-common curl gnupg lsb-release
sudo add-apt-repository universe
添加 ROS2 key:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg
添加 ROS2 源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | \
sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
更新:
sudo apt update
成功时能看到类似:
Get: http://packages.ros.org/ros2/ubuntu jammy/main arm64 Packages
安装 ROS2 基础版:
sudo apt install -y ros-humble-ros-base
配置环境:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证:
ros2 topic list
成功输出:
/parameter_events
/rosout
3. 安装过程中出现的 needrestart 界面
安装过程中出现过如下服务重启选择界面:

3.1 现象
界面中显示很多服务,底部有 <Ok>。
3.2 原因
Ubuntu 安装或升级软件包后,有些服务仍在使用旧版本库。needrestart 会询问是否重启这些服务。
3.3 处理方法
- 按
Tab切换到<Ok>; - 按
Enter; - 继续安装。
这不是错误,不需要中断安装。
4. PC 与树莓派的网络问题
4.1 初始问题:ping 不通树莓派
树莓派 IP:
10.33.30.246
PC 虚拟机 Ubuntu IP 一开始是:
192.168.0.102
PC ping 树莓派失败:

4.2 原因
虽然 PC 和树莓派都连接了手机热点,但 PC 里的 Ubuntu 是 VMware 虚拟机。虚拟机如果使用 NAT 或 Host-only,拿到的可能是 VMware 内部网段,而不是手机热点网段。
因此出现:
树莓派:10.33.30.x
PC 虚拟机:192.168.0.x
两者不在同一局域网,ROS2 发现机制也无法正常工作。
4.3 解决方法:VMware 改为桥接模式
在 VMware 中设置:
Virtual Machine Settings
→ Network Adapter
→ Bridged
→ 勾选 Replicate physical network connection state
截图:

4.4 验证结果
修改后,PC 虚拟机成功 ping 通树莓派:

判断标准:
0% packet loss
64 bytes from 10.33.30.246
这说明:
- 手机热点本身可用;
- VMware 桥接网络可用;
- PC Ubuntu 与树莓派网络互通;
- 可以开始测试 ROS2 跨设备通信。
5. ROS2 demo_nodes_cpp 缺失问题
5.1 现象
树莓派执行:
ros2 run demo_nodes_cpp talker
报错:
Package 'demo_nodes_cpp' not found
5.2 原因
树莓派安装的是:
ros-humble-ros-base
这是最小版,不包含 demo 节点包。
5.3 解决方法
安装 demo 包:
sudo apt update
sudo apt install -y ros-humble-demo-nodes-cpp ros-humble-demo-nodes-py
之后可用:
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener
或 Python 版:
ros2 run demo_nodes_py talker
ros2 run demo_nodes_py listener
6. PC 系统版本不匹配问题
6.1 现象
PC 一开始是 Ubuntu 20.04,尝试安装:
sudo apt install ros-humble-desktop
无法正常安装。
6.2 原因
ROS2 Humble 官方目标系统是 Ubuntu 22.04 Jammy。Ubuntu 20.04 对应的 ROS2 版本通常是 Foxy,但如果 PC 用 Foxy、树莓派用 Humble,会造成跨机通信、包版本和后续 TurtleBot3 使用上的不一致。
6.3 解决方法
将 PC 虚拟机改为 Ubuntu 22.04,然后安装:
sudo apt install -y ros-humble-desktop
最终两边统一为:
PC:Ubuntu 22.04 + ROS2 Humble
树莓派:Ubuntu 22.04 + ROS2 Humble
7. PC 安装 ROS2 时的命令输入错误
7.1 现象
添加 ROS key 时,命令输成了类似:
sudo curl https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | -o /usr/share/keyrings/ros-archive-keyring.gpg
截图:

7.2 原因
| 是管道符,不是 curl 的输出参数。正确写法应使用 -o,而不是 | -o。
7.3 正确命令
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg
8. PC 安装 ROS2 时的软件包依赖问题
8.1 现象
安装 ros-humble-desktop 时曾出现依赖错误,例如:
libegl-mesa0 : 依赖: libgbm1 (= 22.0.5-0ubuntu0.1) 但是 23.2.1-1ubuntu3.1~22.04.3 正要被安装
udev : 破坏: systemd (< 249.11-0ubuntu3.21)
E: 错误,pkgProblemResolver::Resolve 发生故障
截图:

8.2 原因
系统基础包版本不一致,通常是:
- 系统刚安装后未完整更新;
- 部分包升级到新版本,部分包仍停留在旧版本;
- apt 依赖解析器无法选择一致版本。
8.3 解决方法
sudo apt update
sudo apt --fix-broken install
sudo apt full-upgrade -y
sudo reboot
重启后再次安装:
sudo apt update
sudo apt install -y ros-humble-desktop
9. 开启 SSH
为了让 PC 直接远程操作树莓派,开启 SSH。
9.1 树莓派执行
sudo apt update
sudo apt install -y openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh
正常状态:
Active: active (running)
查看树莓派 IP:
hostname -I
PC 连接树莓派:
ssh norton@10.33.30.246
10. 跨设备 ROS2 通信测试
10.1 树莓派运行 talker
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker
10.2 PC 运行 listener
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp listener
如果 PC 能看到:
I heard: [Hello World: 1]
I heard: [Hello World: 2]
说明:
树莓派 ROS2 节点 → PC ROS2 节点
通信成功。
11. TurtleBot3 / OpenCR 底盘启动
11.1 树莓派安装 TurtleBot3 相关包
sudo apt update
sudo apt install -y ros-humble-turtlebot3 ros-humble-turtlebot3-bringup ros-humble-turtlebot3-teleop
实际使用中,键盘控制建议安装在 PC 端,树莓派主要安装 bringup 即可。
11.2 启动时出现 LDS_MODEL 错误
执行:
ros2 launch turtlebot3_bringup robot.launch.py
报错:
KeyError: 'LDS_MODEL'
11.3 原因
TurtleBot3 ROS2 启动文件需要知道雷达型号。未设置环境变量 LDS_MODEL 时,启动文件读取失败。
11.4 解决方法
树莓派执行:
export TURTLEBOT3_MODEL=burger
export LDS_MODEL=LDS-01
ros2 launch turtlebot3_bringup robot.launch.py
写入 .bashrc:
echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
echo "export LDS_MODEL=LDS-01" >> ~/.bashrc
source ~/.bashrc
11.5 成功标志
启动成功后看到:
Calibration End
Add Motors
Add Wheels
Add Sensors
Succeeded to create battery state publisher
Succeeded to create imu publisher
Run!
diff_drive_controller: Run!
这说明:
- OpenCR 通信正常;
- 电机被识别;
- IMU、电池、电机状态节点创建成功;
- 差速控制器已运行。
12. 直接发布 /cmd_vel 控制小车
12.1 PC 发布前进命令
source /opt/ros/humble/setup.bash
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.03}, angular: {z: 0.0}}"
停止命令:
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0}, angular: {z: 0.0}}"
12.2 连续发布测试
ros2 topic pub --rate 10 /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.05}, angular: {z: 0.0}}"
停止:
Ctrl + C
再发送:
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0}, angular: {z: 0.0}}"
12.3 安全建议
- 第一次测试建议把小车架空;
- 速度从
0.03或0.05开始; - 测试空间要空旷;
- 手边准备好停止命令。
13. PC 键盘控制小车
13.1 初始问题:teleop 包找不到
执行:
ros2 run turtlebot3_teleop teleop_keyboard
报错:
Package 'turtlebot3_teleop' not found
13.2 原因
PC 端未安装键盘控制包。
13.3 解决方法
PC 执行:
sudo apt update
sudo apt install -y ros-humble-turtlebot3-teleop
13.4 第二个问题:TURTLEBOT3_MODEL 未设置
报错:
KeyError: 'TURTLEBOT3_MODEL'
原因:键盘控制节点需要知道 TurtleBot3 型号。
解决:
export TURTLEBOT3_MODEL=burger
ros2 run turtlebot3_teleop teleop_keyboard
写入 .bashrc:
echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
source ~/.bashrc
13.5 键盘控制界面
启动成功后显示:
Control Your TurtleBot3!
---------------------------
Moving around:
w
a s d
x
w/x : increase/decrease linear velocity
a/d : increase/decrease angular velocity
space key, s : force stop
按键说明:
| 按键 | 作用 |
|---|---|
w |
增加前进速度 |
x |
增加后退速度 |
a |
增加左转角速度 |
d |
增加右转角速度 |
s / 空格 |
强制停止 |
Ctrl + C |
退出程序 |
14. 当前最后一个问题:键盘节点发了速度,但小车不动
14.1 现象
PC 上键盘控制程序显示速度已经变化:
currently: linear velocity 0.01 angular velocity 0.0
currently: linear velocity 0.02 angular velocity 0.0
currently: linear velocity 0.03 angular velocity 0.0
...
但是车没有动。
树莓派执行:
ros2 topic echo /cmd_vel
显示:
WARNING: topic [/cmd_vel] does not appear to be published yet
Could not determine the type for the passed topic
PC 直接发命令:
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.03}, angular: {z: 0.0}}"
显示:
Waiting for at least 1 matching subscription(s)...
14.2 判断
这说明:
PC 没有发现树莓派上的 /cmd_vel 订阅者
也就是 PC 的 ROS2 节点和树莓派的 turtlebot3_node 没有完成 DDS discovery。
14.3 排查流程图
14.4 逐步排查命令
树莓派:确认 bringup 仍在运行
source ~/.bashrc
export TURTLEBOT3_MODEL=burger
export LDS_MODEL=LDS-01
ros2 launch turtlebot3_bringup robot.launch.py
必须看到:
turtlebot3_node: Run!
diff_drive_controller: Run!
树莓派:检查 /cmd_vel 是否有订阅者
新开一个树莓派终端:
source ~/.bashrc
ros2 topic info /cmd_vel
正常应有:
Subscription count: 1
如果是 0,说明底盘节点没有正常订阅 /cmd_vel。
PC:检查是否能发现树莓派节点
source ~/.bashrc
ros2 node list
正常应能看到:
/turtlebot3_node
/robot_state_publisher
如果看不到,说明跨机 DDS 发现失败。
两边统一 ROS_DOMAIN_ID
PC 和树莓派都执行:
echo "export ROS_DOMAIN_ID=0" >> ~/.bashrc
source ~/.bashrc
echo $ROS_DOMAIN_ID
输出应为:
0
两边统一 RMW 实现
PC 和树莓派都执行:
echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> ~/.bashrc
source ~/.bashrc
echo $RMW_IMPLEMENTATION
输出应为:
rmw_fastrtps_cpp
然后重新启动:
- 树莓派启动 bringup;
- PC 启动 teleop 或直接发布
/cmd_vel。
15. 如果仍然发现不了 /cmd_vel:测试 multicast
ROS2 默认通过 DDS 发现节点,多数情况下依赖局域网 multicast。VMware、手机热点、校园网或防火墙可能影响 multicast。
15.1 PC 执行
ros2 multicast send
15.2 树莓派执行
ros2 multicast receive
如果树莓派收不到 PC 的 multicast 消息,说明不是 ROS 包的问题,而是网络发现被阻断。
15.3 解决方向
可选方案:
- 换普通路由器,不用手机热点;
- 确认 VMware 使用桥接模式;
- 关闭 Ubuntu 防火墙:
sudo ufw status
sudo ufw disable
- 改用 CycloneDDS 单播配置,避免依赖 multicast。
16. CycloneDDS 单播备用方案
如果 multicast 被手机热点或 VMware 阻断,可以在 PC 和树莓派都安装 CycloneDDS:
sudo apt install -y ros-humble-rmw-cyclonedds-cpp
创建配置文件,例如:
nano ~/cyclonedds.xml
内容模板如下,把 IP 改成你自己的:
<CycloneDDS>
<Domain>
<General>
<AllowMulticast>false</AllowMulticast>
</General>
<Discovery>
<Peers>
<Peer address="10.33.30.246"/>
<Peer address="PC的Ubuntu虚拟机IP"/>
</Peers>
</Discovery>
</Domain>
</CycloneDDS>
两边都写入 .bashrc:
echo "export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp" >> ~/.bashrc
echo "export CYCLONEDDS_URI=file://$HOME/cyclonedds.xml" >> ~/.bashrc
source ~/.bashrc
然后重新启动 bringup 和 teleop。
17. 推荐的标准启动顺序
17.1 树莓派端
ssh norton@10.33.30.246
source ~/.bashrc
ros2 launch turtlebot3_bringup robot.launch.py
保持该终端运行。
17.2 PC 端键盘控制
source ~/.bashrc
ros2 run turtlebot3_teleop teleop_keyboard
17.3 PC 端直接速度测试
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.03}, angular: {z: 0.0}}"
停止:
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0}, angular: {z: 0.0}}"
18. 自动化部署脚本
提供自动化脚本:
deploy_ros2_turtlebot3.sh
#!/usr/bin/env bash
set -euo pipefail
# ROS2 Humble + TurtleBot3 自动化部署脚本
# 用法:
# bash deploy_ros2_turtlebot3.sh --role pc
# bash deploy_ros2_turtlebot3.sh --role pi
# 可选参数:
# --domain 0
# --model burger
# --lds LDS-01
# --rmw rmw_fastrtps_cpp
ROLE=""
ROS_DOMAIN_ID_VALUE="0"
TURTLEBOT3_MODEL_VALUE="burger"
LDS_MODEL_VALUE="LDS-01"
RMW_VALUE="rmw_fastrtps_cpp"
while [[ $# -gt 0 ]]; do
case "$1" in
--role) ROLE="$2"; shift 2 ;;
--domain) ROS_DOMAIN_ID_VALUE="$2"; shift 2 ;;
--model) TURTLEBOT3_MODEL_VALUE="$2"; shift 2 ;;
--lds) LDS_MODEL_VALUE="$2"; shift 2 ;;
--rmw) RMW_VALUE="$2"; shift 2 ;;
-h|--help)
grep '^#' "$0" | sed 's/^# //'; exit 0 ;;
*) echo "未知参数:$1"; exit 1 ;;
esac
done
if [[ -z "$ROLE" ]]; then
echo "错误:必须指定 --role pc 或 --role pi"
exit 1
fi
if [[ "$ROLE" != "pc" && "$ROLE" != "pi" ]]; then
echo "错误:--role 只能是 pc 或 pi"
exit 1
fi
if [[ -f /etc/os-release ]]; then
. /etc/os-release
else
echo "无法读取 /etc/os-release"
exit 1
fi
if [[ "${VERSION_ID:-}" != "22.04" || "${UBUNTU_CODENAME:-}" != "jammy" ]]; then
echo "当前系统不是 Ubuntu 22.04 Jammy。检测到:${PRETTY_NAME:-unknown}"
echo "ROS2 Humble 推荐/对应 Ubuntu 22.04。请先更换系统或确认风险。"
exit 1
fi
ARCH=$(dpkg --print-architecture)
echo "系统:${PRETTY_NAME}"
echo "架构:${ARCH}"
echo "角色:${ROLE}"
echo "[1/6] 更新 apt 并安装基础工具..."
sudo apt update
sudo apt install -y software-properties-common curl gnupg lsb-release ca-certificates
echo "[2/6] 启用 universe 仓库..."
sudo add-apt-repository -y universe
echo "[3/6] 添加 ROS2 apt key 和软件源..."
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=${ARCH} signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu ${UBUNTU_CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
echo "[4/6] 安装 ROS2 Humble 和 TurtleBot3 相关包..."
if [[ "$ROLE" == "pc" ]]; then
sudo apt install -y \
ros-humble-desktop \
ros-humble-demo-nodes-cpp \
ros-humble-demo-nodes-py \
ros-humble-turtlebot3-teleop \
ros-humble-rmw-cyclonedds-cpp
else
sudo apt install -y \
openssh-server net-tools vim \
ros-humble-ros-base \
ros-humble-demo-nodes-cpp \
ros-humble-demo-nodes-py \
ros-humble-turtlebot3 \
ros-humble-turtlebot3-bringup \
ros-humble-rmw-cyclonedds-cpp
sudo systemctl enable ssh
sudo systemctl start ssh
sudo usermod -aG dialout "$USER" || true
fi
echo "[5/6] 写入 ROS2 环境变量到 ~/.bashrc..."
append_once() {
local line="$1"
grep -qxF "$line" "$HOME/.bashrc" || echo "$line" >> "$HOME/.bashrc"
}
append_once "source /opt/ros/humble/setup.bash"
append_once "export ROS_DOMAIN_ID=${ROS_DOMAIN_ID_VALUE}"
append_once "export RMW_IMPLEMENTATION=${RMW_VALUE}"
append_once "export TURTLEBOT3_MODEL=${TURTLEBOT3_MODEL_VALUE}"
if [[ "$ROLE" == "pi" ]]; then
append_once "export LDS_MODEL=${LDS_MODEL_VALUE}"
fi
echo "[6/6] 基础验证..."
source /opt/ros/humble/setup.bash
ros2 --help >/dev/null
echo
if [[ "$ROLE" == "pc" ]]; then
cat <<EOF
PC 端部署完成。
建议下一步:
source ~/.bashrc
ros2 run turtlebot3_teleop teleop_keyboard
若需要直接发速度测试:
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.03}, angular: {z: 0.0}}"
EOF
else
cat <<EOF
树莓派端部署完成。建议重启一次以使 dialout 用户组生效:
sudo reboot
重启后启动底盘:
source ~/.bashrc
ros2 launch turtlebot3_bringup robot.launch.py
检查串口:
ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null || true
EOF
fi
echo "当前 IP:$(hostname -I || true)"
18.1 PC 端使用
cd scripts
bash deploy_ros2_turtlebot3.sh --role pc
该脚本会安装:
- ROS2 Humble Desktop;
- demo nodes;
- TurtleBot3 teleop;
- CycloneDDS RMW 备用包;
- 写入
ROS_DOMAIN_ID、RMW_IMPLEMENTATION、TURTLEBOT3_MODEL。
18.2 树莓派端使用
cd scripts
bash deploy_ros2_turtlebot3.sh --role pi
该脚本会安装:
- ROS2 Humble ros-base;
- TurtleBot3 bringup;
- demo nodes;
- SSH 服务;
- CycloneDDS RMW 备用包;
- 写入
ROS_DOMAIN_ID、RMW_IMPLEMENTATION、TURTLEBOT3_MODEL、LDS_MODEL; - 将当前用户加入
dialout组。
树莓派端执行完后建议:
sudo reboot
19. 本次问题与解决方案总表
| 阶段 | 问题现象 | 原因 | 解决方法 |
|---|---|---|---|
| 树莓派 ROS2 安装 | Unable to locate package ros-humble-ros-base |
未添加 ROS2 软件源 | 添加 ROS key 与 ros2.list,重新 apt update |
| 安装过程 | 出现 needrestart 界面 | 服务使用旧库 | 选择 <Ok> 继续 |
| demo 测试 | demo_nodes_cpp not found |
ros-base 不含 demo 包 | 安装 ros-humble-demo-nodes-cpp |
| PC ROS2 安装 | ros2: 未找到命令 |
PC 未安装 ROS2 或未 source | 安装 ROS2 Humble Desktop,source setup.bash |
| PC 系统版本 | Ubuntu 20.04 装 Humble 不合适 | Humble 对应 Ubuntu 22.04 | PC 改装 Ubuntu 22.04 |
| VMware 网络 | PC 虚拟机 ping 不通树莓派 | NAT/Host-only 或桥接网卡错误 | VMware 改为 Bridged 桥接模式 |
| 添加 ROS key | curl 命令错误 | 把 -o 写成 ` |
-o` |
| ROS 安装依赖 | libegl-mesa0 / udev 冲突 |
系统包未完整升级 | apt --fix-broken install + full-upgrade + reboot |
| bringup | KeyError: LDS_MODEL |
未设置雷达型号变量 | export LDS_MODEL=LDS-01 |
| teleop | Package turtlebot3_teleop not found |
PC 未装键盘控制包 | 安装 ros-humble-turtlebot3-teleop |
| teleop | KeyError: TURTLEBOT3_MODEL |
PC 未设置机器人型号 | export TURTLEBOT3_MODEL=burger |
| 键盘不动 | PC 提示等待订阅者 | PC 未发现树莓派 /cmd_vel 订阅者 |
检查 bringup、Domain ID、RMW、multicast、必要时 CycloneDDS 单播 |
20. 参考资料
- ROS2 Humble 官方安装文档:
docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html - TurtleBot3 ROBOTIS e-Manual:
emanual.robotis.com/docs/en/platform/turtlebot3/ - TurtleBot3 SBC / LDS 设置说明:
emanual.robotis.com/docs/en/platform/turtlebot3/sbc_setup/ - TurtleBot3 bringup 说明:
emanual.robotis.com/docs/en/platform/turtlebot3/bringup/
21. 当前状态记录
截至本次总结:
- 树莓派 Ubuntu 22.04 / aarch64 已确认;
- 树莓派 ROS2 Humble 已安装;
- PC Ubuntu 22.04 / ROS2 Humble 已安装;
- VMware 网络桥接后已能 ping 通树莓派;
- 树莓派 TurtleBot3 bringup 已成功启动并识别 OpenCR、电机、IMU 等;
- 小车曾通过
/cmd_vel速度指令发生移动; - PC 键盘控制节点已能启动并显示速度变化;
- 当前遗留问题是:PC 端
/cmd_vel发布者有时无法发现树莓派端订阅者,需要继续检查 ROS2 DDS discovery / multicast / RMW 设置。
浙公网安备 33010602011771号