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

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
http://www.cnnetsun.cn/news/1849627.html

相关文章:

  • 再次革新 .NET 的构建和发布方式(三)誓
  • HTML怎么创建登录地点地图_HTML最近登录位置列表【方法】
  • .NET 诊断技巧 | 日志框架原理、手写日志框架学习纷
  • FreeSWITCH 实战指南:解决外网回铃音丢失的防火墙穿透方案
  • 终极AI字幕制作指南:用VideoCaptioner免费实现专业级视频字幕处理
  • 别再死记硬背了!用Multisim仿真带你5分钟搞懂OTL、OCL功放电路的区别
  • Pixel Couplet Gen部署案例:高校计算机系课程设计——开源春联生成系统
  • 重新定义Android调试:ADB Explorer架构深度解构与现代化设计范式
  • Janus-Pro-7B辅助Qt界面开发:自动生成UI描述代码
  • 如何用dump1090构建个人飞行监控系统:从零到实战的3步指南
  • Graph Wavelet Neural Network (GWNN) 实战:如何在Cora数据集上实现高效节点分类
  • 长芯微LPC5592完全P2P替代AD5628,8通道12位分辨率高精度数模转换器DAC
  • 告别OFDM?聊聊6G候选波形AFDM在车联网感知中的独特优势与仿真对比
  • 别再用PerfKit伪造LLM延迟了!:2024最新LMBench-X套件发布,含GPU显存碎片率、KV Cache命中衰减率等6项独家工程指标
  • OpenClaw人人养虾:CLI 概览
  • 成本飙升、延迟暴增、OOM频发,你的大模型推理服务还在裸奔?——4步构建生产级自动化扩缩容体系
  • 快速安装QLVideo:终极macOS视频预览解决方案
  • DeepFlow Agent 故障排查指南:注册失败、协议解析、资源识别与配置方式涟
  • AudioSeal Pixel Studio从零开始:CPU/CUDA设备自动识别与缓存清理实操
  • 网络工程师必看:在eNSP中如何用GRE隧道打通IPv6校园网的两个校区
  • RevitLookup终极指南:掌握BIM数据探索的5个高效工作流
  • 终极Mac鼠标平滑滚动指南:5分钟告别生硬滚轮体验
  • 《QGIS快速入门与应用基础》274:POI点CSV数据加载(经纬度字段设置)
  • 丝杆VS同步带:直线滑台模组选型避坑指南(附实际应用场景对比)
  • 用Premiere Pro做影视级调色:Lumetri面板从基础校正到风格化实战
  • 隐私安全首选:纯本地运行的Qwen3-ForcedAligner-0.6B字幕生成工具体验
  • 5分钟轻松搞定!Windows 11任务栏秒变macOS风格dock的实用指南
  • 别再硬编码了!用两张表搞定OA多级审批(附加班申请完整SQL与事务处理)
  • Qwen-Image-2512-Pixel-Art-LoRA GPU算力高效利用:单卡并发3任务压力测试报告
  • Java安装与环境配置避坑指南:Phi-4-mini-reasoning智能排错