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

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 -y

1.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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

1.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-rosdep2

2.2 处理rosdep init失败

执行sudo rosdep init时,最常见的错误是无法从GitHub下载默认源列表。这是因为raw.githubusercontent.com的访问问题。解决方法如下:

  1. 查询当前可用的IP地址:

    ping raw.githubusercontent.com
  2. 修改/etc/hosts文件,添加解析记录:

    sudo nano /etc/hosts

    在文件末尾添加(IP地址以实际查询结果为准):

    185.199.108.133 raw.githubusercontent.com
  3. 如果仍然失败,可以尝试手动下载文件并放置到正确位置:

    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源码添加代理:

  1. 找到需要修改的文件位置:

    sudo find /usr/lib/python3/dist-packages -name "*.py" | xargs grep -l "raw.githubusercontent"
  2. 对每个找到的文件,在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
  3. 修改完成后,再次运行:

    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 ~/.bashrc

3.2 安装常用工具

安装一些常用的ROS开发工具:

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

3.3 验证安装

输入以下命令测试ROS是否安装成功:

roscore

如果看到类似下面的输出,说明ROS核心服务启动成功:

... logging to /home/user/.ros/log/xxxxx started core service [/rosout]

按Ctrl+C停止roscore。

4. 运行小海龟仿真

4.1 启动ROS Master

打开第一个终端,启动ROS核心服务:

roscore

4.2 启动小海龟仿真器

打开第二个终端,启动小海龟仿真节点:

rosrun turtlesim turtlesim_node

此时应该能看到一个蓝色窗口,中间有一只小海龟。

4.3 启动控制节点

打开第三个终端,启动键盘控制节点:

rosrun turtlesim turtle_teleop_key

保持这个终端为活动窗口,使用键盘方向键控制小海龟移动。

4.4 理解ROS节点

可以通过以下命令查看当前运行的节点:

rosnode list

输出应该包含:

/rosout /teleop_turtle /turtlesim

5. 常见问题与解决方案

5.1 安装后找不到roscore命令

如果输入roscore提示命令未找到,可能是环境变量未正确设置。检查:

echo $ROS_PACKAGE_PATH

如果没有输出或输出不正确,重新执行:

source /opt/ros/noetic/setup.bash

5.2 图形界面显示问题

如果在远程服务器上安装,需要通过SSH连接并显示图形界面,需要添加X11转发:

ssh -X username@hostname

5.3 软件包依赖问题

安装特定ROS包时可能会遇到依赖问题,可以使用rosdep自动安装依赖:

rosdep install --from-paths src --ignore-src -r -y

6. ROS开发环境进阶配置

6.1 创建工作空间

标准的ROS开发流程从创建工作空间开始:

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make

6.2 设置工作空间环境

将工作空间的环境设置添加到bashrc:

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

6.3 安装常用功能包

一些常用的ROS功能包可以提前安装:

sudo apt install ros-noetic-rviz ros-noetic-gmapping ros-noetic-navigation

7. ROS网络配置技巧

7.1 多机通信设置

在多台机器上使用ROS时,需要设置环境变量:

export ROS_MASTER_URI=http://master_ip:11311 export ROS_IP=your_local_ip

7.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 purge

8.3 可视化工具

安装一些有用的可视化工具:

sudo apt install ros-noetic-rqt ros-noetic-rqt-common-plugins

启动rqt图形界面:

rqt
http://www.cnnetsun.cn/news/2028799.html

相关文章:

  • Xilinx DDR4 MIG 与 PCIe 协同设计的工程实践与调试
  • 在Jetson NX上搞定RealSense D435i:Ubuntu 18.04 + ROS Melodic 保姆级避坑实录
  • LeRobot机器人AI控制框架终极指南:5分钟快速上手实战教程
  • 3步掌握暗黑破坏神2存档编辑:从新手到专家的完整指南
  • 生物信息学新手避坑:从SRA数据下载到转换成Fastq,一篇讲清所有关键参数和常见报错
  • 专业的AI连锁招商营销哪家好
  • 一次实战:如何优化因AES_DECRYPT解密导致的MySQL JOIN性能灾难(附前后对比)
  • OBS Spout2插件实战指南:解锁高效视频流传输的5个关键步骤
  • 【无人机三维路径规划】基于改进灰狼优化算法的无人机(UAV)路径规划、I-GWO 多策略融合附matlab代码
  • 绕过TPM2.0限制,手把手教你用注册表修改法升级Win11(保姆级避坑指南)
  • ExplorerPatcher终极指南:5分钟让Windows 11恢复经典界面和流畅体验
  • 微信小程序局域网联机游戏开发:用UDP实现中国象棋对战(附完整源码避坑指南)
  • 如何快速部署StreamCap:面向新手的40+平台直播录制终极指南
  • 从A7到Ultrascale:手把手教你用IBERT搞定不同系列FPGA的Transceiver基础验证
  • 局域网访问原理:网络配置与防火墙设置
  • 如何通过Universal x86 Tuning Utility解锁Intel/AMD CPU的完整调优能力
  • 仅限内部分享:微软Build 2024未公开的.NET 11 System.AI预览版API清单(含3个已标记[Obsolete]但仍在用的关键接口)
  • 微信聊天记录永久保存终极指南:3步打造个人数字记忆库
  • 终极指南:LRCGet批量歌词下载与管理工具的完整解决方案
  • 用MATLAB的quadprog函数手把手实现SQP算法:一个带约束的优化问题实战
  • 手机打字效率翻倍:搜狗输入法隐藏的拼音分词和发送键优化全攻略
  • QT窗体自适应避坑指南:为什么你的resizeEvent总失效?
  • Android 16KB内存页适配避坑指南:如何用Analyze APK和16KB虚拟机快速验证你的so库
  • 手把手教你用STM32F411CEU6和W25Q128打造一个超迷你的U盘(附完整代码)
  • LinkSwift:八大网盘直链下载助手终极指南,告别限速烦恼
  • 中医AI助手“仲景“:3步打造你的个人中医诊疗智能助手
  • 从零搭建Voron 2.4:开源3D打印机的完整组装与配置指南
  • 蓝桥杯Python省赛复盘:从‘管道’题看二分+区间合并的实战避坑指南
  • HsMod终极指南:55项功能解锁炉石传说高级玩法,轻松提升游戏体验
  • STM32开发效率翻倍:深度整合STM32-MAT/TARGET与CubeMX的自动化工作流配置心得