news 2026/4/18 4:46:04

Ubuntu 20.04 下 ROS Noetic 安装避坑指南:从换源到环境配置的完整实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 20.04 下 ROS Noetic 安装避坑指南:从换源到环境配置的完整实践

1. 环境准备:避开新手第一个坑

刚接触ROS的朋友最容易忽略的就是系统环境检查。Ubuntu 20.04虽然官方支持ROS Noetic,但实际安装时往往被conda环境坑得措手不及。上周帮学弟调试时,就遇到因为conda环境变量冲突导致roscore报错的情况——明明所有步骤都正确,就是无法启动核心节点。

关键检查点

  • 执行conda info --envs查看当前虚拟环境
  • 如果存在激活的conda环境,务必先运行conda deactivate退出
  • 建议新手暂时关闭conda自动激活功能:conda config --set auto_activate_base false

实测发现conda的python路径会覆盖系统路径,导致ROS依赖的python3.8被替换。有次我在实验室折腾到凌晨两点才发现是这个原因。更隐蔽的是,即使退出conda环境,残留的PATH变量也可能引发问题。保险起见,可以在~/.bashrc最下方添加:

# 清除conda残留路径 export PATH=$(echo $PATH | tr ':' '\n' | grep -v 'conda' | paste -sd: -)

注意:如果之前安装失败过,建议先执行sudo apt remove --purge ros-*彻底清理残留文件,避免旧配置干扰新环境。

2. 换源的艺术:突破下载速度瓶颈

官方源的速度就像早高峰的地铁——理论上能走,实际寸步难行。去年在给机器人社团装机时,20台设备同时拉取软件包直接拖垮了校园网。后来改用国内镜像源,平均下载速度从50KB/s飙升到8MB/s。

推荐组合方案

  1. 先更换Ubuntu主源(图形化操作更直观):

    • 打开"Software & Updates"
    • 在"Download from"选择阿里云(http://mirrors.aliyun.com/ubuntu)或清华源
    • 勾选"Restricted"、"Universe"等所有仓库类型
  2. 添加ROS专属国内源(比官方源稳定得多):

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
  1. 密钥验证经常被墙,可以改用国内服务器:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

遇到过最奇葩的情况是DNS污染导致密钥服务器无法解析,这时候可以临时改用8.8.8.8 DNS:

sudo systemd-resolve --set-dns=8.8.8.8 --interface=eth0

3. 核心安装:注意这些隐藏选项

执行sudo apt install ros-noetic-desktop-full时,新手常犯三个错误:

  1. 没留意到安装的是Python3版本(Noetic仅支持Python3)
  2. 漏装构建工具导致后续编译失败
  3. 环境变量配置错位置

完整安装命令应该包含

# 安装主包+构建工具 sudo apt install ros-noetic-desktop-full python3-rosinstall python3-rosinstall-generator python3-wstool build-essential # 环境变量配置(推荐写入.bashrc) echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

有个容易忽略的细节:不同终端类型配置不同。如果使用zsh,需要改为~/.zshrc。曾有个学生反馈所有命令都无效,最后发现是因为他用的是fish shell却按bash教程配置。

验证安装是否成功,别急着跑roscore,先检查关键路径:

# 检查核心文件是否存在 ls /opt/ros/noetic/setup.bash # 查看ROS版本 rosversion -d

4. rosdep初始化:终极避坑方案

这个环节堪称ROS安装的"渡劫"现场。去年参加RoboMaster比赛时,队伍里有台机器死活过不了rosdep update,最后发现是系统时间不同步导致SSL验证失败。

分步解决方案

4.1 基础配置

sudo apt install python3-rosdep2 sudo rosdep init rosdep update

4.2 超时问题终极解决

当出现TimeoutError时,按以下步骤修改源码:

  1. 首先备份原始文件:
sudo cp /usr/lib/python3/dist-packages/rosdep2/sources_list.py{,.bak}
  1. 修改下载逻辑(使用国内代理):
# 在文件开头添加 import os if 'ROS_DEP_MIRROR' in os.environ: DEFAULT_URLS = [os.environ['ROS_DEP_MIRROR']] else: DEFAULT_URLS = ['https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/']
  1. 设置环境变量临时生效:
export ROS_DEP_MIRROR="https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/" rosdep update

4.3 备选方案

如果仍然失败,可以手动下载资源文件:

mkdir -p ~/.ros/rosdep/sources.cache wget -O ~/.ros/rosdep/sources.cache/index https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml

最后测试海龟仿真是否正常:

roscore & rosrun turtlesim turtlesim_node & rosrun turtlesim turtle_teleop_key

当看到那只经典的小乌龟出现在屏幕上时,恭喜你成功跨过了ROS入门的第一道门槛。记得第一次看到乌龟动起来时,我激动得差点打翻咖啡——这种成就感正是技术人最纯粹的快乐。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 4:44:37

从示波器波形到电压测量:实战判断晶振起振状态的两种方法

1. 示波器观测晶振波形的完整指南 当你调试W5500、MCP2515或STM32等嵌入式设备时,晶振是否正常工作往往是第一个需要确认的问题。作为硬件工程师,我至少遇到过二十多次因为晶振不起振导致的系统故障。最夸张的一次是团队花了三天时间排查通信异常&#x…

作者头像 李华
网站建设 2026/4/18 4:35:13

ELECTRA预训练数据集构建:从原始文本到训练样本的完整流程

ELECTRA预训练数据集构建:从原始文本到训练样本的完整流程 【免费下载链接】electra ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators 项目地址: https://gitcode.com/gh_mirrors/el/electra ELECTRA(Pre-trainin…

作者头像 李华
网站建设 2026/4/18 4:30:28

printf-tac-toe代码解析:深入理解printf导向编程的奥秘

printf-tac-toe代码解析:深入理解printf导向编程的奥秘 【免费下载链接】printf-tac-toe tic-tac-toe in a single call to printf 项目地址: https://gitcode.com/gh_mirrors/pr/printf-tac-toe printf-tac-toe是一个令人惊叹的开源项目,它仅通过…

作者头像 李华
网站建设 2026/4/18 4:30:21

终极显卡驱动清理指南:Display Driver Uninstaller完全使用教程

终极显卡驱动清理指南:Display Driver Uninstaller完全使用教程 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uni…

作者头像 李华