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

张开发
2026/4/18 4:46:09 15 分钟阅读

分享文章

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。推荐组合方案先更换Ubuntu主源图形化操作更直观打开Software Updates在Download from选择阿里云(http://mirrors.aliyun.com/ubuntu)或清华源勾选Restricted、Universe等所有仓库类型添加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密钥验证经常被墙可以改用国内服务器sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654遇到过最奇葩的情况是DNS污染导致密钥服务器无法解析这时候可以临时改用8.8.8.8 DNSsudo systemd-resolve --set-dns8.8.8.8 --interfaceeth03. 核心安装注意这些隐藏选项执行sudo apt install ros-noetic-desktop-full时新手常犯三个错误没留意到安装的是Python3版本Noetic仅支持Python3漏装构建工具导致后续编译失败环境变量配置错位置完整安装命令应该包含# 安装主包构建工具 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 -d4. rosdep初始化终极避坑方案这个环节堪称ROS安装的渡劫现场。去年参加RoboMaster比赛时队伍里有台机器死活过不了rosdep update最后发现是系统时间不同步导致SSL验证失败。分步解决方案4.1 基础配置sudo apt install python3-rosdep2 sudo rosdep init rosdep update4.2 超时问题终极解决当出现TimeoutError时按以下步骤修改源码首先备份原始文件sudo cp /usr/lib/python3/dist-packages/rosdep2/sources_list.py{,.bak}修改下载逻辑使用国内代理# 在文件开头添加 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/]设置环境变量临时生效export ROS_DEP_MIRRORhttps://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/ rosdep update4.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入门的第一道门槛。记得第一次看到乌龟动起来时我激动得差点打翻咖啡——这种成就感正是技术人最纯粹的快乐。

更多文章