当前位置: 首页 > news >正文

树莓派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社区

相关文章:

  • 云原生K8s+Docker+KubeSphere+DevOps
  • K8S认证|CKS题库+答案| 10. Trivy 扫描镜像安全漏洞
  • 数据可视化交互
  • go 里面的指针
  • 盲盒一番赏小程序:引领盲盒新潮流
  • Appuploader:在WindowsLinux上完成iOS APP上架的一种解决方案
  • LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 下
  • 手机平板能效生态设计指令EU 2023/1670标准解读
  • 打开网页即可远程控制手机,Linux系统亦可使用
  • 2025盘古石杯决赛【手机取证】
  • Polarr:手机修图,专业与创意并存
  • 从物理机到云原生:全面解析计算虚拟化技术的演进与应用
  • 打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
  • 什么是TRS收益互换?金融创新架构下的交易系统开发与实践
  • 【Mini-F5265-OB开发板试用测评】1、串口printf输出
  • TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
  • 椭圆曲线密码学(ECC)
  • 6.计算机网络核心知识点精要手册
  • Unity3D SM节点式动画技能编辑器实现
  • 2.8 C/C++开发环境:VSCode+CMake+VS2017
  • 做百度ssp的网站开发人/昆明新闻头条最新消息
  • 淘宝网站c#设计怎么做/百度惠生活怎么优化排名
  • cms开发是什么意思/江苏seo外包
  • django做网站好吗/网络营销的五大特点
  • 培训机构不退费最有效方式/培训推广 seo
  • 杨浦做网站/seo自媒体培训