目的:让 树莓派只运行底层/简单节点,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 最终推荐架构

architecture

这种结构的核心思想是:

  • 树莓派性能有限,只做硬件相关工作;
  • 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 界面

安装过程中出现过如下服务重启选择界面:

07_needrestart_large

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 树莓派失败:

01_vmware_ping_unreachable

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

截图:

02_vmware_bridged_mode

4.4 验证结果

修改后,PC 虚拟机成功 ping 通树莓派:

03_ping_pi_success

判断标准:

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

截图:

05_ros_key_typo

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 发生故障

截图:

06_ros_package_dependency_issue

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.030.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 排查流程图

dds_troubleshooting

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

然后重新启动:

  1. 树莓派启动 bringup;
  2. 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 解决方向

可选方案:

  1. 换普通路由器,不用手机热点;
  2. 确认 VMware 使用桥接模式;
  3. 关闭 Ubuntu 防火墙:
sudo ufw status
sudo ufw disable
  1. 改用 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_IDRMW_IMPLEMENTATIONTURTLEBOT3_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_IDRMW_IMPLEMENTATIONTURTLEBOT3_MODELLDS_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 设置。
posted on 2026-08-31 23:32  真一神  阅读(22)  评论(0)    收藏  举报