ROS 学习系列 -- 树莓派编译安装完整版本ROS

本文介绍如何在树莓派上安装完整的ROS Indigo系统。详细步骤包括设置源、安装依赖及编译ROS桌面版,特别关注了解决特定依赖包的手动编译过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/crazyquhezheng/article/details/43413231

树莓派安装完整的ROS并不容易,博主东方赤龙花费了数天总结了安装编译的经验,否则很容易走弯路。

ROS官方论坛里面有安装教程, 但是很容易出错。尤其是Desktop版的ROS!


1. 安装环

树莓派B+,  ROS Indigo, 16G TF卡,Raspbian OS


2. 安装装备

2.1 准备ROS代码仓库

[html]  view plain  copy
  1. sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu wheezy main" > /etc/apt/sources.list.d/ros-latest.list'  
  2. wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -  

确保Raspbian OS 已经更新

[html]  view plain  copy
  1. sudo apt-get update  
  2. sudo apt-get upgrade  

2.2 安装 bootstrap 依赖

[html]  view plain  copy
  1. sudo apt-get install python-setuptools  
  2. sudo easy_install pip  
  3. sudo pip install -U rosdep rosinstall_generator wstool rosinstall  

2.3 初始化 rosdep

[html]  view plain  copy
  1. sudo rosdep init  
  2. rosdep update  

3. 编译ROS

3.1 创建workspace来编译ROS

[html]  view plain  copy
  1. mkdir ~/ros_catkin_ws  
  2. cd ~/ros_catkin_ws  

接下来下载ROS代码,ROS 提供了两个代码包

1)ROS-Comm: 这是官方推荐的,但只包含基本的ROS通讯功能,没有navigation, TF, action, RViz等 GUI 工具

2) Desktop: 完整的ROS 功能,适合所有机器人应用。我们选择安装这个。


下面的命令下载并生产编译package列表,会很花时间

[html]  view plain  copy
  1. rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall  
  2. wstool init -j8 src indigo-desktop-wet.rosinstall  

如果中途下载中断,下面的命令会接着下载:

[html]  view plain  copy
  1. wstool update -j 4 -t src  

3.2 解决依赖

libconsole-bridge-devliburdfdom-headers-devliburdfdom-devliblz4-dev, 和 collada-dom-dev 这五个包并不在Raspbian里面,需要手工编译下载

创建新目录下载这5个包

[html]  view plain  copy
  1. <span style="font-size:18px;">mkdir ~/ros_catkin_ws/external_src  
  2. sudo apt-get install checkinstall cmake</span>  

安装libconsole-bridge-dev:

[html]  view plain  copy
  1. <span style="font-size:18px;">cd ~/ros_catkin_ws/external_src  
  2. sudo apt-get install libboost-system-dev libboost-thread-dev  
  3. git clone https://github.com/ros/console_bridge.git  
  4. cd console_bridge  
  5. cmake .  
  6. sudo checkinstall make install</span>  
当checkinstall询问是否改变安装选项时,选择[2],将名字从"console-bridge" 改为 "libconsole-bridge-dev"

接下来的两个问题连续选择'n', 否则会编译出错


安装liblz4-dev

[html]  view plain  copy
  1. <span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src  
  2. $ wget http://archive.raspbian.org/raspbian/pool/main/l/lz4/liblz4-1_0.0~r122-2_armhf.deb  
  3. $ wget http://archive.raspbian.org/raspbian/pool/main/l/lz4/liblz4-dev_0.0~r122-2_armhf.deb  
  4. $ sudo dpkg -i liblz4-1_0.0~r122-2_armhf.deb liblz4-dev_0.0~r122-2_armhf.deb</span>  


安装liburdfdom-headers-dev

[html]  view plain  copy
  1. <span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src  
  2. $ git clone https://github.com/ros/urdfdom_headers.git  
  3. $ cd urdfdom_headers  
  4. $ cmake .  
  5. $ sudo checkinstall make install</span>  

当checkinstall询问是否改变安装选项时,选择[2],将名字从"urdfdom-headers" 改为 "liburdfdom-headers-dev"

接下来的两个问题连续选择'n', 否则会编译出错


安装liburdfdom-dev

[html]  view plain  copy
  1. <span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src  
  2. $ sudo apt-get install libboost-test-dev libtinyxml-dev  
  3. $ git clone https://github.com/ros/urdfdom.git  
  4. $ cd urdfdom  
  5. $ cmake .  
  6. $ sudo checkinstall make install</span>  

当checkinstall询问是否改变安装选项时,选择[2],将名字从"urdfdom" 改为 "liburdfdom-dev"

接下来的两个问题连续选择'n', 否则会编译出错


安装collada-dom-dev

[html]  view plain  copy
  1. <span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src  
  2. $ sudo apt-get install libboost-filesystem-dev libxml2-dev  
  3. $ wget http://downloads.sourceforge.net/project/collada-dom/Collada%20DOM/Collada%20DOM%202.4/collada-dom-2.4.0.tgz  
  4. $ tar -xzf collada-dom-2.4.0.tgz  
  5. $ cd collada-dom-2.4.0  
  6. $ cmake .  
  7. $ sudo checkinstall make install</span>  
当checkinstall询问是否改变安装选项时,选择[2],将名字从"collada-dom" 改为 "collada-dom-dev"

接下来的两个问题连续选择'n', 否则会编译出错


3.3 通过rosdep解决依赖

[html]  view plain  copy
  1. <span style="font-size:18px;">$ cd ~/ros_catkin_ws  
  2. $ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:wheezy</span>  
上面命令会便利所有的package并递归安装依赖

3.4 开始编译ROS

$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo


常见错误:

编译过程中会编译180多个package并同时安装在/opt/ros/indigo目录,经常会报出 'urdf' 'collada_parser‘ ’collada_urdf' 这几个包出错而中断安装。 解决办法就是将这三个包从目录 ~/ros_catkin_ws/src/robot_model 目录中移出,再重新编译整个ROS. 最后单独建立一个workspace,将三个包放到src/robot_model 目录中。 再执行下面命令:

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

如果仍然报错,则需要重新一个一个安装 步骤3.2中的 liburdfdom-dev,liblz4-dev, 和 collada-dom-dev 包,每安装一个重新编译一遍,成功编译的包可以删除,直到最后都编译成功。

版权声明:本文为博主原创文章,未经博主允许不得转载。


<think>好的,用户现在遇到了在树莓派系统上使用sudo apt install ros-noetic-serial仍然报错的问题。首先,我需要回顾之前的对话历史。之前用户提到过在树莓派OS上安装ROS Kinetic的包出现了问题,我建议切换到Noetic,但现在用户说安装Noetic的包仍然报错。 首先,树莓派OS通常基于Debian,而Noetic官方支持的是Ubuntu 20.04。如果用户的树莓派OS版本不是基于Ubuntu 20.04,可能存在兼容性问题。我需要考虑用户可能没有正确配置ROS Noetic的软件源,或者系统版本确实不兼容。 用户当前的报错可能还是“Unable to locate package ros-noetic-serial”,这可能意味着软件源中没有这个包。可能的原因包括:未正确添加ROS仓库、密钥问题、或者软件源列表配置错误。此外,树莓派OS可能使用不同的架构(如armhf或arm64),而ROS的某些包可能没有为这些架构构建,导致无法找到。 接下来,我需要考虑用户是否按照正确的步骤添加了ROS Noetic的源。例如,是否正确执行了添加仓库和密钥的命令?是否在sources.list.d中有正确的文件?另外,用户是否运行了sudo apt update来更新软件包列表? 另外,用户可能在树莓派上使用的OS版本较新,例如基于Debian 11(Bullseye),而Noetic可能需要特定的依赖库版本,这在较新的系统上可能不满足,导致依赖问题。这时可能需要源码编译安装,或者使用backports库。 用户可能需要检查他们的系统版本,使用lsb_release -a查看,确认是否基于Ubuntu 20.04或兼容的Debian版本。如果不是,可能需要调整软件源或考虑其他安装方法,比如从源码构建serial包。 此外,可能用户没有安装ROS Noetic的基础环境,比如ros-noetic-desktop或ros-noetic-ros-base,导致依赖包无法找到。需要确认用户是否已经正确安装ROS Noetic本身。 如果用户已经正确配置了软件源但依然找不到包,可能需要检查网络连接是否正常,是否有防火墙阻止访问ROS的仓库。或者,可能该软件包在arm架构下的名称或可用性不同,需要确认是否存在针对ARM的官方支持。 另外,用户可能在之前的步骤中遗漏了某些配置,比如没有设置locale或编码问题,导致apt无法正确解析包信息。虽然这种情况较少见,但也不能完全排除。 总结下来,可能的解决步骤包括: 1. 确认系统版本兼容性。 2. 检查ROS Noetic的软件源是否正确配置。 3. 更新软件包列表并安装依赖。 4. 尝试源码安装serial包。 5. 检查网络和架构支持问题。 需要将这些步骤详细解释给用户,并提供具体的命令示例,帮助他们逐步排查问题。同时,考虑到用户可能在树莓派上遇到硬件架构的问题,可能需要特别说明ARM架构下的安装注意事项,或者推荐使用交叉编译等其他方法。</think>--- ### 错误原因分析 在树莓派系统(通常基于 **Debian Bullseye/Buster**)中,若执行 `sudo apt install ros-noetic-serial` 仍报错,核心原因可能是: 1. **未正确配置ROS Noetic软件源** 2. **系统架构(ARM)与官方二进制包不兼容** 3. **依赖缺失或版本冲突** --- ### 一、基础修复方案(推荐) #### 1. **验证ROS Noetic软件源配置** ```bash # 检查是否已添加ROS官方源(树莓派需手动添加) cat /etc/apt/sources.list.d/ros-latest.list # 正确内容应为: deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main # 若未配置,按以下步骤添加: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update ``` #### 2. **检查系统兼容性** ```bash # 查看系统版本(Noetic需Ubuntu 20.04或Debian等效版本) lsb_release -a # 输出示例: Distributor ID: Raspbian Description: Raspbian GNU/Linux 11 (bullseye) # 若为Bullseye/Buster,需特殊处理 ``` - **若系统为Debian Bullseye(常见于树莓派OS)**: ROS Noetic官方未直接支持,需手动解决依赖冲突。 --- ### 二、手动修复依赖冲突 #### 1. **安装基础依赖** ```bash # 安装ROS Noetic核心组件 sudo apt install ros-noetic-ros-base ``` #### 2. **强制安装serial包(绕过依赖验证)** ```bash # 尝试直接下载并安装(适用于ARM架构) wget http://packages.ros.org/ros/ubuntu/pool/main/r/ros-noetic-serial/ros-noetic-serial_1.2.1-1focal.20230620.153037_armhf.deb sudo dpkg -i ros-noetic-serial_*.deb sudo apt --fix-broken install # 修复依赖 ``` --- ### 三、源码编译安装(通用方案) #### 1. **创建工作空间并下载源码** ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/wjwwood/serial.git git clone https://github.com/ros-drivers/rosserial.git # 兼容依赖 ``` #### 2. **安装编译工具和依赖** ```bash sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src -y ``` #### 3. **编译并生效** ```bash cd ~/catkin_ws catkin_make echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc ``` --- ### 四、验证安装 ```bash # 检查serial包是否生效 roscd serial # 若进入目录 /home/pi/catkin_ws/src/serial 说明成功 # 测试示例节点 rosrun serial serial_node.py _port:=/dev/ttyUSB0 ``` --- ### 关键注意事项 1. **架构兼容性** - 树莓派(ARMv7/ARMv8)可能需手动编译,官方二进制包主要为x86_64架构设计。 2. **依赖冲突优先级** - 若系统存在多个ROS版本,使用 `sudo apt install ros-noetic-serial --fix-missing` 强制修复。 --- ### 替代方案对比 | 方法 | 适用场景 | 耗时 | 稳定性 | |--------------------|--------------------------|--------|--------| | 源码编译 | ARM架构/自定义系统 | 15-30分钟 | 高 | | 手动下载deb包 | 快速修复(需匹配版本) | 5分钟 | 中 | | 官方源安装 | 标准Ubuntu系统 | 2分钟 | 高 | **推荐树莓派用户优先选择源码编译方案**。若问题仍未解决,可提供具体报错信息进一步分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值