树莓派4B, ubuntu20.04, 安装Ros Noetic[踩坑记录]
一、安装过程
1. 硬件要求
-
树莓派4B (建议4GB或8GB内存版本)
-
至少16GB的microSD卡
2. 下载并安装Ubuntu 20.04
Ubuntu 20.04 LTS (Focal Fossa) for Raspberry Pi
使用Raspberry Pi Imager或BalenaEtcher将镜像写入microSD卡
3. 安装ROS Noetic
# 设置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
4. 环境配置
# 添加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
5. 创建工作空间
# 创建并初始化catkin工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make# 添加工作空间到环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
6. 测试ROS安装
# 启动roscore
roscore# 新开终端测试ROS工具
rosnode list # 应该显示/rosout
rostopic list # 应该显示几个默认话题
7. 树莓派特定优化
# 启用GPU加速(如果需要RViz等图形工具)
sudo apt install libgles2-mesa-dev -y
# 调整交换空间(提高编译性能)
sudo nano /etc/dphys-swapfile
# 修改 CONF_SWAPSIZE=2048
sudo systemctl restart dphys-swapfile
8. 配置ROS开发环境
安装常用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后,可以通过以下步骤全面验证安装是否成功:
1. 基础环境测试
# 检查环境变量
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)
2. 核心功能测试
# 启动ROS核心
roscore# 正常输出应包含
... logging to /home/ubuntu/.ros/log/xxx
started core service [/rosout]
# 保持此终端运行,另开新终端进行以下测试。# 测试ROS节点通信
rosnode list# 应显示:
/rosout
# 测试话题系统
rostopic list# 应显示至少
/rosout
/rosout_agg
3. 可视化工具测试
- 启动RViz
rosrun rviz rviz# 如果安装了桌面版,应弹出RViz可视化界面。
- 测试小乌龟模拟器
# 第一个终端
roscore# 第二个终端
rosrun turtlesim turtlesim_node# 第三个终端
rosrun turtlesim turtle_teleop_key# 此时应能通过键盘方向键控制乌龟移动
4. 构建系统测试
# 创建测试包
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
5. Python/C++接口测试
# Python测试
python3 -c "import rospy; print('ROS Python接口正常')"# C++测试(需安装g++)
sudo apt install g++ -y
echo -e '#include <ros/ros.h>\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
6. 综合诊断命令
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 "=== 检查完成 ==="
三、常见问题排查
问题1: roscore无法启动
# 检查端口占用
netstat -tuln | grep 11311
# 清理残留进程
killall -9 roscore rosmaster
问题2: RViz无法打开
# 检查OpenGL支持
glxinfo | grep "OpenGL version"
# 安装缺失组件
sudo apt install libgl1-mesa-dri libgl1-mesa-glx -y
问题3: Python导入错误
# 检查Python路径
python3 -c "import sys; print(sys.path)" | grep ros
# 重新配置环境
source /opt/ros/noetic/setup.bash
通过以上测试步骤,您可以全面验证ROS Noetic是否已正确安装并配置完成。所有测试通过后,您的ROS开发环境就可以投入使用了。
问题4: rosdep初始化失败
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
sudo rosdep init
rosdep update
问题5: 内存不足导致编译失败
临时增加交换空间:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
问题6: 图形性能问题
安装轻量级桌面环境:
sudo apt install lubuntu-desktop -y
问题7: VS Code安装错误
报错信息: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
问题8:启动时报GLIBC错误
sudo apt update && sudo apt upgrade -y
问题9:无法打开GUI界面
确保已安装桌面环境:
sudo apt install ubuntu-desktop -y
问题10:扩展安装失败
尝试使用--force
参数:
code --install-extension ms-iot.vscode-ros --force
问题11:unable to open display
这个错误通常发生在尝试在无图形界面的服务器版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
问题12:出现GLX错误
sudo apt install mesa-utils libgl1-mesa-glx -y
glxinfo | grep OpenGL
四、学习资源:
-
ROS官方教程
-
树莓派ROS社区