Ubuntu 20.04 装 ROS Noetic 踩坑记:从 rosdep init 超时到小海龟跑起来
Ubuntu 20.04 安装 ROS Noetic 全流程实战指南
第一次接触ROS(Robot Operating System)时,那种既兴奋又忐忑的心情至今记忆犹新。作为一个专为机器人开发设计的开源框架,ROS在学术界和工业界都有着广泛的应用。然而,对于新手来说,安装过程往往成为第一道门槛。本文将带你完整走过Ubuntu 20.04上安装ROS Noetic的全过程,特别是那些官方文档没有详细说明的"坑点"。
1. 环境准备与基础安装
在开始之前,确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端(Ctrl+Alt+T),执行以下命令:
sudo apt update && sudo apt upgrade -y1.1 设置软件源
ROS的软件包通过APT仓库分发,我们需要先添加ROS官方源。由于网络原因,国内用户建议使用清华大学的镜像源:
sudo sh -c '. /etc/lsb-release && echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'1.2 添加GPG密钥
为了验证软件包的完整性,需要添加ROS的GPG密钥:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C6541.3 安装ROS Noetic完整版
更新APT缓存后,安装ROS Noetic桌面完整版,这个版本包含了ROS、rqt、rviz、机器人通用库等:
sudo apt update sudo apt install ros-noetic-desktop-full安装过程可能需要15-30分钟,取决于你的网络速度。如果中途遇到网络问题导致失败,可以尝试重新执行安装命令。
提示:安装完成后,可以查看已安装的ROS包列表:
apt list --installed | grep ros-noetic
2. 解决rosdep初始化与更新问题
2.1 安装rosdep工具
rosdep是ROS的依赖管理工具,在安装ROS包时自动处理系统依赖。首先确保安装了正确版本的rosdep:
sudo apt install python3-rosdep22.2 处理rosdep init失败
执行sudo rosdep init时,最常见的错误是无法从GitHub下载默认源列表。这是因为raw.githubusercontent.com的访问问题。解决方法如下:
查询当前可用的IP地址:
ping raw.githubusercontent.com修改/etc/hosts文件,添加解析记录:
sudo nano /etc/hosts在文件末尾添加(IP地址以实际查询结果为准):
185.199.108.133 raw.githubusercontent.com如果仍然失败,可以尝试手动下载文件并放置到正确位置:
sudo mkdir -p /etc/ros/rosdep/sources.list.d sudo wget https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list -O /etc/ros/rosdep/sources.list.d/20-default.list
2.3 解决rosdep update超时
rosdep update命令需要从多个GitHub仓库获取数据,经常会因网络问题失败。我们可以通过修改Python源码添加代理:
找到需要修改的文件位置:
sudo find /usr/lib/python3/dist-packages -name "*.py" | xargs grep -l "raw.githubusercontent"对每个找到的文件,在GitHub URL前添加代理前缀
https://ghproxy.com/。例如:sudo sed -i 's/https:\/\/raw.githubusercontent.com/https:\/\/ghproxy.com\/https:\/\/raw.githubusercontent.com/g' /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py修改完成后,再次运行:
rosdep update应该能看到类似下面的成功输出:
reading in sources list data from /etc/ros/rosdep/sources.list.d Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml ...
3. 环境配置与基础测试
3.1 设置环境变量
为了让系统找到ROS命令,需要将ROS环境变量添加到bashrc中:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc3.2 安装常用工具
安装一些常用的ROS开发工具:
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential3.3 验证安装
输入以下命令测试ROS是否安装成功:
roscore如果看到类似下面的输出,说明ROS核心服务启动成功:
... logging to /home/user/.ros/log/xxxxx started core service [/rosout]按Ctrl+C停止roscore。
4. 运行小海龟仿真
4.1 启动ROS Master
打开第一个终端,启动ROS核心服务:
roscore4.2 启动小海龟仿真器
打开第二个终端,启动小海龟仿真节点:
rosrun turtlesim turtlesim_node此时应该能看到一个蓝色窗口,中间有一只小海龟。
4.3 启动控制节点
打开第三个终端,启动键盘控制节点:
rosrun turtlesim turtle_teleop_key保持这个终端为活动窗口,使用键盘方向键控制小海龟移动。
4.4 理解ROS节点
可以通过以下命令查看当前运行的节点:
rosnode list输出应该包含:
/rosout /teleop_turtle /turtlesim5. 常见问题与解决方案
5.1 安装后找不到roscore命令
如果输入roscore提示命令未找到,可能是环境变量未正确设置。检查:
echo $ROS_PACKAGE_PATH如果没有输出或输出不正确,重新执行:
source /opt/ros/noetic/setup.bash5.2 图形界面显示问题
如果在远程服务器上安装,需要通过SSH连接并显示图形界面,需要添加X11转发:
ssh -X username@hostname5.3 软件包依赖问题
安装特定ROS包时可能会遇到依赖问题,可以使用rosdep自动安装依赖:
rosdep install --from-paths src --ignore-src -r -y6. ROS开发环境进阶配置
6.1 创建工作空间
标准的ROS开发流程从创建工作空间开始:
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make6.2 设置工作空间环境
将工作空间的环境设置添加到bashrc:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc6.3 安装常用功能包
一些常用的ROS功能包可以提前安装:
sudo apt install ros-noetic-rviz ros-noetic-gmapping ros-noetic-navigation7. ROS网络配置技巧
7.1 多机通信设置
在多台机器上使用ROS时,需要设置环境变量:
export ROS_MASTER_URI=http://master_ip:11311 export ROS_IP=your_local_ip7.2 查看ROS网络信息
rostopic list # 查看所有话题 rosservice list # 查看所有服务 rosmsg list # 查看所有消息类型8. 性能优化与调试
8.1 提高编译速度
使用-j参数并行编译:
catkin_make -j$(nproc)8.2 ROS日志管理
ROS日志默认存储在~/.ros/log,可以定期清理:
rosclean check rosclean purge8.3 可视化工具
安装一些有用的可视化工具:
sudo apt install ros-noetic-rqt ros-noetic-rqt-common-plugins启动rqt图形界面:
rqt