树莓派4B (建议4GB或8GB内存版本)
至少16GB的microSD卡
Ubuntu 20.04 LTS (Focal Fossa) for Raspberry Pi
使用Raspberry Pi Imager或BalenaEtcher将镜像写入microSD卡
# 设置sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list'
# 设置密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 安装ROS Noetic完整版
sudo apt update
sudo apt install ros-noetic-desktop-full -y
# 初始化rosdep
sudo rosdep init
rosdep update
# 添加ROS环境变量到bashrc
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 安装构建工具和依赖
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential -y
# 创建并初始化catkin工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
# 添加工作空间到环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 启动roscore
roscore
# 新开终端测试ROS工具
rosnode list # 应该显示/rosout
rostopic list # 应该显示几个默认话题
# 启用GPU加速(如果需要RViz等图形工具)
sudo apt install libgles2-mesa-dev -y
# 调整交换空间(提高编译性能)
sudo nano /etc/dphys-swapfile
# 修改 CONF_SWAPSIZE=2048
sudo systemctl restart dphys-swapfile
安装常用ROS包
sudo apt install ros-noetic-rviz ros-noetic-turtlebot3 ros-noetic-gmapping -y
配置远程开发
# 安装VS Code
sudo snap install code --classic
# 安装ROS插件
code --install-extension ms-iot.vscode-ros
安装ROS扩展
code --install-extension ms-iot.vscode-ros
code --install-extension ms-python.python
创建工作区配置
在VS Code中按Ctrl+Shift+P
,输入
ROS: Create a ROS Workspace
安装完ROS Noetic后,可以通过以下步骤全面验证安装是否成功:
# 检查环境变量
printenv | grep ROS
# 正常应显示:
ROS_ROOT=/opt/ros/noetic/share/ros
ROS_PACKAGE_PATH=/opt/ros/noetic/share
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=3
ROS_DISTRO=noetic
#验证ROS核心工具
which roscore
which rosrun
which rosnode
# 每个命令都应返回有效路径(如/opt/ros/noetic/bin/roscore)
# 启动ROS核心
roscore
# 正常输出应包含
... logging to /home/ubuntu/.ros/log/xxx
started core service [/rosout]
# 保持此终端运行,另开新终端进行以下测试。
# 测试ROS节点通信
rosnode list
# 应显示:
/rosout
# 测试话题系统
rostopic list
# 应显示至少
/rosout
/rosout_agg
rosrun rviz rviz
# 如果安装了桌面版,应弹出RViz可视化界面。
# 第一个终端
roscore
# 第二个终端
rosrun turtlesim turtlesim_node
# 第三个终端
rosrun turtlesim turtle_teleop_key
# 此时应能通过键盘方向键控制乌龟移动
# 创建测试包
mkdir -p ~/test_ws/src
cd ~/test_ws/src
catkin_create_pkg test_pkg roscpp rospy std_msgs
# 编译测试
cd ~/test_ws
catkin_make
# 应看到成功编译输出,最后显示:
[100%] Built target test_pkg
# Python测试
python3 -c "import rospy; print('ROS Python接口正常')"
# C++测试(需安装g++)
sudo apt install g++ -y
echo -e '#include \nint main() { ros::init(0,0,"test_node"); return 0; }' > test.cpp
g++ -I/opt/ros/noetic/include test.cpp -L/opt/ros/noetic/lib -lroscpp
./a.out
roscheck
# 如果显示"ROS is ready to use",则安装完整。
或者创建roscheck.sh并执行
#!/bin/bash
echo "=== ROS 环境检查 ==="
echo -n "ROS 版本: " && rosversion -d
echo -n "roscore 路径: " && which roscore || echo "未找到"
echo -n "Python ROS 测试: " && python3 -c "import rospy; print('OK')" 2>/dev/null || echo "失败"
echo -n "C++ ROS 头文件: " && ls /opt/ros/noetic/include/ros/ros.h >/dev/null 2>&1 && echo "OK" || echo "失败"
echo "=== 检查完成 ==="
# 检查端口占用
netstat -tuln | grep 11311
# 清理残留进程
killall -9 roscore rosmaster
# 检查OpenGL支持
glxinfo | grep "OpenGL version"
# 安装缺失组件
sudo apt install libgl1-mesa-dri libgl1-mesa-glx -y
# 检查Python路径
python3 -c "import sys; print(sys.path)" | grep ros
# 重新配置环境
source /opt/ros/noetic/setup.bash
通过以上测试步骤,您可以全面验证ROS Noetic是否已正确安装并配置完成。所有测试通过后,您的ROS开发环境就可以投入使用了。
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
sudo rosdep init
rosdep update
临时增加交换空间:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
安装轻量级桌面环境:
sudo apt install lubuntu-desktop -y
报错信息:error: snap "code" is not available on stable for this architecture (arm64) but exists on other architectures (amd64).
树莓派4B为ARM64架构。安装VS Code时遇到的错误是因为官方Snap商店没有为ARM64架构提供稳定版的VS Code。推荐使用.deb包直接安装
# 下载ARM64架构的.deb包
wget https://update.code.visualstudio.com/latest/linux-deb-arm64/stable -O vscode-arm64.deb
# 安装
sudo apt install ./vscode-arm64.deb
# 启动
code
sudo apt update && sudo apt upgrade -y
确保已安装桌面环境:
sudo apt install ubuntu-desktop -y
尝试使用--force
参数:
code --install-extension ms-iot.vscode-ros --force
这个错误通常发生在尝试在无图形界面的服务器版Ubuntu上运行图形应用程序,或者SSH连接时没有正确转发X11显示时。选择哪种方法取决于您的具体使用场景:如果您直接连接显示器推荐方法1;如果您主要使用SSH远程连接,推荐方法3。解决方案如下,
方法1:安装完整桌面环境(推荐)
sudo apt update
sudo apt install ubuntu-desktop -y
sudo reboot
方法2:配置SSH X11转发
# 确保服务器端已安装X11转发组件
sudo apt install xauth xorg -y
# 修改SSH服务器配置
sudo nano /etc/ssh/sshd_config
# 确保包含:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
# 然后重启SSH服务:
sudo systemctl restart ssh
# 从客户端连接时启用X11转发
ssh -X ubuntu@your-pi-ip
如果仍然显示"unable to open display",检查显示权限
xhost +
# 确认DISPLAY变量
echo $DISPLAY
sudo apt install mesa-utils libgl1-mesa-glx -y
glxinfo | grep OpenGL
ROS官方教程
树莓派ROS社区