news 2026/9/26 20:01:23

Ubuntu20.04下ROS2 Humble安装避坑指南:从清华源加速到环境变量配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu20.04下ROS2 Humble安装避坑指南:从清华源加速到环境变量配置

Ubuntu 20.04下ROS2 Humble高效安装与深度配置指南

1. 系统环境准备与优化

在Ubuntu 20.04上安装ROS2 Humble需要先确保系统环境配置正确。许多安装失败案例都源于基础环境未正确设置,特别是locale和软件源配置。

关键环境检查项:

# 检查当前locale设置 locale # 若未显示en_US.UTF-8,执行以下命令 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8

对于国内开发者,使用清华源可显著提升下载速度。编辑/etc/apt/sources.list文件,替换为以下内容:

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

更新软件包缓存:

sudo apt update && sudo apt upgrade -y

2. ROS2 Humble核心安装流程

2.1 添加ROS2软件源与密钥

传统安装方式直接从ROS官方源下载,但在国内网络环境下可能速度较慢。推荐使用镜像源加速:

# 安装必要工具 sudo apt install curl gnupg lsb-release # 添加清华提供的ROS2 GPG密钥 sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/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] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

2.2 安装桌面完整版ROS2

对于大多数开发者,推荐安装桌面完整版(包含GUI工具、教程和示例):

sudo apt update sudo apt install ros-humble-desktop

安装时间根据网络状况不同,通常需要10-30分钟。安装完成后,可以立即验证基础功能:

# 在新终端中运行发布者 ros2 run demo_nodes_cpp talker # 在另一个终端中运行订阅者 ros2 run demo_nodes_py listener

3. 开发环境深度配置

3.1 环境变量持久化配置

为避免每次打开终端都需要手动source,将环境变量加入bashrc:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc

对于使用zsh的用户:

echo "source /opt/ros/humble/setup.zsh" >> ~/.zshrc source ~/.zshrc

3.2 必备开发工具安装

ROS2开发需要以下工具链:

sudo apt install python3-colcon-common-extensions \ python3-rosdep \ python3-vcstool \ build-essential

初始化rosdep并更新:

sudo rosdep init rosdep update

3.3 工作空间创建与管理

推荐的项目目录结构:

~/ros2_ws/ src/ # 源代码 build/ # 编译中间文件 install/ # 安装目录 log/ # 编译日志

创建基础工作空间:

mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build

4. 常见问题解决方案

4.1 依赖项安装失败处理

当出现依赖问题时,使用rosdep自动安装:

cd ~/ros2_ws rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"

4.2 编译错误排查

常见编译错误及解决方法:

错误类型可能原因解决方案
CMake Error缺少开发包sudo apt install lib -dev
ImportErrorPython包缺失pip install
链接错误库路径问题检查LD_LIBRARY_PATH

4.3 多机通信配置

如需多机通信,需统一设置ROS_DOMAIN_ID:

export ROS_DOMAIN_ID=<相同数字> # 持久化配置 echo "export ROS_DOMAIN_ID=<相同数字>" >> ~/.bashrc

5. 高级配置与性能优化

5.1 更换DDS中间件

ROS2支持多种DDS实现,默认使用Fast DDS。如需更换为Cyclone DDS:

sudo apt install ros-humble-rmw-cyclonedds-cpp export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

各DDS实现性能对比:

特性Fast DDSCyclone DDSConnext
延迟中低高
CPU占用高中低
内存使用高低中

5.2 编译优化参数

在colcon build时添加优化参数:

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

对于多核CPU,启用并行编译:

colcon build --parallel-workers 8

6. 开发工具链集成

6.1 VS Code配置

安装ROS扩展后,创建.vscode/settings.json:

{ "ros.distro": "humble", "python.analysis.extraPaths": [ "/opt/ros/humble/lib/python3.8/site-packages" ] }

6.2 调试配置

创建launch.json用于调试:

{ "version": "0.2.0", "configurations": [ { "name": "ROS: Launch", "type": "ros", "request": "launch", "target": "path/to/launch/file.launch.py" } ] }

7. 实际项目应用示例

以创建简单的发布-订阅节点为例:

  1. 创建功能包:
cd ~/ros2_ws/src ros2 pkg create --build-type ament_python py_pubsub
  1. 编写发布者节点publisher_member_function.py:
import rclpy from rclpy.node import Node from std_msgs.msg import String class MinimalPublisher(Node): def __init__(self): super().__init__('minimal_publisher') self.publisher_ = self.create_publisher(String, 'topic', 10) timer_period = 0.5 self.timer = self.create_timer(timer_period, self.timer_callback) self.i = 0 def timer_callback(self): msg = String() msg.data = 'Hello World: %d' % self.i self.publisher_.publish(msg) self.get_logger().info('Publishing: "%s"' % msg.data) self.i += 1 def main(args=None): rclpy.init(args=args) minimal_publisher = MinimalPublisher() rclpy.spin(minimal_publisher) minimal_publisher.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()
  1. 修改setup.py添加入口点:
entry_points={ 'console_scripts': [ 'talker = py_pubsub.publisher_member_function:main', ], }
  1. 编译并运行:
cd ~/ros2_ws colcon build --packages-select py_pubsub source install/setup.bash ros2 run py_pubsub talker
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 15:09:44

再次革新 .NET 的构建和发布方式(三)誓

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时&#xff0c;OpenSpec 会提示你选择使用的 AI 工具&#xff08;Claude Code、Cursor、Trae、Qoder 等&#xff09;。 3 O…

作者头像 李华
网站建设 2026/9/21 17:31:47

HTML怎么创建登录地点地图_HTML最近登录位置列表【方法】

HTML无法获取地理位置&#xff0c;必须依赖JavaScript调用Geolocation API&#xff08;需HTTPS/localhost、用户授权、手动触发&#xff09;&#xff0c;再通过地理编码API转换为地址&#xff0c;最后用HTMLCSS渲染列表或静态地图图。HTML 本身不能获取用户地理位置&#xff0c…

作者头像 李华
网站建设 2026/9/23 2:32:10

.NET 诊断技巧 | 日志框架原理、手写日志框架学习纷

一、 什么是 AI Skills&#xff1a;从工具级到框架级的演化 AI Skills&#xff08;AI 技能&#xff09; 的概念最早在 Claude Code 等前沿 Agent 实践中被强化。最初&#xff0c;Skills 被视为“工具级”的增强&#xff0c;如简单的文件读写或终端操作&#xff0c;方便用户快速…

作者头像 李华
网站建设 2026/9/23 15:05:06

FreeSWITCH 实战指南:解决外网回铃音丢失的防火墙穿透方案

1. 问题背景&#xff1a;为什么外网通话会丢失回铃音&#xff1f; 当你用FreeSWITCH拨打外线电话时&#xff0c;经常会遇到一个尴尬的问题——听不到"嘟...嘟..."的回铃音。这种情况通常发生在企业内网环境&#xff0c;FreeSWITCH服务器需要通过防火墙与外部SIP服务器…

作者头像 李华
网站建设 2026/9/20 6:21:22

终极AI字幕制作指南:用VideoCaptioner免费实现专业级视频字幕处理

终极AI字幕制作指南&#xff1a;用VideoCaptioner免费实现专业级视频字幕处理 【免费下载链接】VideoCaptioner &#x1f3ac; 卡卡字幕助手 | VideoCaptioner - 基于 LLM 的智能字幕助手 - 视频字幕生成、断句、校正、字幕翻译全流程处理&#xff01;- A powered tool for eas…

作者头像 李华
网站建设 2026/9/17 12:34:59

别再死记硬背了!用Multisim仿真带你5分钟搞懂OTL、OCL功放电路的区别

用Multisim仿真5分钟掌握OTL与OCL功放电路的核心差异 刚接触模拟电子技术的朋友&#xff0c;是否曾被OTL、OCL这些专业术语搞得晕头转向&#xff1f;教科书上密密麻麻的公式推导和参数计算&#xff0c;往往让人望而生畏。其实&#xff0c;理解这两类功放电路的本质差异&#xf…

作者头像 李华