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

手把手教你Ubuntu20.04安装ROS2:从零开始搭建机器人开发环境

1. 为什么选择Ubuntu20.04和ROS2

如果你正准备踏入机器人开发的世界,Ubuntu20.04和ROS2这对黄金组合绝对值得考虑。作为一个长期在机器人领域摸爬滚打的开发者,我见过太多新手在环境搭建阶段就放弃的例子。其实只要选对工具链,从零开始搭建开发环境并没有想象中那么困难。

Ubuntu20.04 LTS(长期支持版)是目前最稳定的Linux发行版之一,特别适合作为机器人开发的基础平台。LTS意味着官方会提供长达5年的维护更新,这对于需要长期稳定的开发项目至关重要。我在多个机器人项目中使用这个版本,从未遇到过因为系统更新导致的兼容性问题。

ROS2(Robot Operating System 2)则是机器人开发领域的游戏规则改变者。相比第一代ROS,它引入了现代化的通信机制(DDS)、更好的实时性能和多机器人系统支持。我去年将一个仓储机器人项目从ROS迁移到ROS2后,通信延迟降低了40%,系统稳定性也显著提升。

对于初学者来说,ROS2的学习曲线可能略陡,但绝对物有所值。现在越来越多的企业和研究机构都在转向ROS2,掌握它就等于掌握了未来机器人开发的钥匙。接下来,我会带你一步步完成整个环境的搭建,避开那些我曾经踩过的坑。

2. 准备Ubuntu20.04系统

2.1 获取系统镜像

首先需要下载Ubuntu20.04的ISO镜像。我建议直接访问Ubuntu官网获取最新版本,目前是20.04.6 LTS。这个版本修复了早期20.04版本中的许多问题,对新手更加友好。

下载时要注意选择适合你电脑架构的版本。大多数现代电脑都是x86_64架构,但如果你使用的是树莓派或类似旭日派X3这样的开发板,可能需要arm64版本。我曾经因为选错架构浪费了半天时间重装系统,这个教训希望你能避免。

2.2 制作启动盘

有了ISO文件后,你需要一个至少4GB的U盘来制作启动盘。在Windows上可以使用Rufus工具,Mac上则推荐使用Etcher。这两个工具我都用过多次,操作简单且稳定。

制作启动盘时有个小技巧:选择"DD模式"而不是默认的ISO模式。这能解决某些电脑上无法识别启动盘的问题。我帮学弟装系统时就遇到过这种情况,切换模式后立即解决了。

2.3 安装系统

安装过程相对简单,但有几点需要注意:

  1. 分区时建议选择"清除整个磁盘并安装Ubuntu",除非你确定要双系统
  2. 创建用户时密码不要太复杂,因为开发过程中会频繁使用sudo
  3. 安装完成后立即更新系统:sudo apt update && sudo apt upgrade -y

我建议在安装时勾选"安装第三方软件"选项,这会自动安装一些常用的硬件驱动,省去后续很多麻烦。记得插上网线或确保WiFi连接稳定,这样系统能自动下载必要的更新。

3. 系统基础配置

3.1 更换国内镜像源

系统安装好后第一件事就是更换软件源。默认的国外源在国内访问速度很慢,我强烈推荐使用清华大学的开源镜像站。

执行以下命令备份原有源列表:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后用nano编辑器打开源文件:

sudo nano /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

这个步骤看似简单,但很多后续问题都源于镜像源配置不当。我曾经因为漏掉了"universe"仓库导致无法安装某些依赖包,花了半天时间排查。

3.2 安装基础开发工具

接下来安装一些开发必备工具:

sudo apt install -y build-essential git python3-pip

这些工具在后续的ROS2开发中都会用到。特别是build-essential,它包含了gcc/g++等编译工具链,没有它很多软件包都无法编译。

我习惯再安装一些实用工具:

sudo apt install -y curl wget vim tmux

vim是强大的文本编辑器,tmux则可以让你的终端会话在断开连接后继续运行。这两个工具在我日常开发中几乎天天使用。

4. 安装ROS2 Foxy Fitzroy

4.1 设置locale环境

ROS2对系统locale有严格要求,必须先确保使用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

验证设置是否正确:

locale

应该看到类似这样的输出:

LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8

如果显示的不是UTF-8,后续安装可能会遇到各种奇怪的问题。我曾经因为这个问题导致ROS2节点间无法正常通信,调试了很久才发现原因。

4.2 添加ROS2软件源

首先添加ROS2的GPG密钥:

sudo apt update && sudo apt install curl gnupg2 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

然后添加软件源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

更新软件包列表:

sudo apt update

4.3 安装ROS2桌面版

推荐安装桌面完整版,它包含ROS、RViz、demo等常用工具:

sudo apt install -y ros-foxy-desktop python3-argcomplete

安装完成后初始化rosdep:

sudo rosdep init rosdep update

这个步骤可能会因为网络问题失败,多试几次通常就能成功。我在公司内网环境下曾经卡在这里很久,后来发现是代理设置的问题。

4.4 配置环境变量

为了让终端能识别ROS2命令,需要设置环境变量:

source /opt/ros/foxy/setup.bash echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc

这样每次打开新终端都会自动加载ROS2环境。我建议再安装一些常用工具:

sudo apt install -y python3-colcon-common-extensions

colcon是ROS2的构建工具,相当于ROS1中的catkin,是开发必备工具。

5. 验证安装与常见问题

5.1 基础功能测试

打开两个终端窗口,分别运行:

ros2 run demo_nodes_cpp talker

ros2 run demo_nodes_py listener

如果看到talker发送消息、listener接收消息,说明ROS2核心功能工作正常。

5.2 常见问题解决

问题1:无法找到ros-foxy-desktop包解决方法:检查软件源是否正确添加,确保执行了sudo apt update

问题2:rosdep初始化失败解决方法:尝试使用国内镜像:

sudo rosdep init --rosdistro foxy --include-eol-distros ROS_DISTRO=foxy rosdep update --include-eol-distros

问题3:运行节点时报错关于Fast-DDS解决方法:安装缺少的依赖:

sudo apt install -y ros-foxy-rmw-fastrtps-cpp

我在第一次安装时就遇到了Fast-DDS的问题,后来发现是因为默认的RMW实现没有正确安装。这个问题在新手中相当常见。

5.3 进阶验证

创建一个工作空间并编译示例代码:

mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build

如果编译成功,说明开发环境已经完全配置好了。你可以开始创建自己的ROS2包了。

6. 开发环境优化建议

6.1 安装常用工具

我强烈推荐安装以下工具来提升开发效率:

  • Terminator:多窗口终端
  • VS Code:轻量级代码编辑器
  • rqt:ROS2可视化工具

安装命令:

sudo apt install -y terminator code sudo apt install -y ros-foxy-rqt*

6.2 配置Git

设置你的Git身份信息:

git config --global user.name "Your Name" git config --global user.email "your.email@example.com"

生成SSH密钥用于GitHub认证:

ssh-keygen -t ed25519 -C "your.email@example.com"

6.3 性能优化

对于性能较弱的开发板,可以禁用图形界面:

sudo systemctl set-default multi-user.target

需要恢复图形界面时:

sudo systemctl set-default graphical.target

我在树莓派上开发时就禁用了图形界面,内存占用从800MB降到了200MB,系统响应快了很多。

7. 下一步学习建议

现在你已经有了完整的ROS2开发环境,可以开始探索机器人开发了。我建议从以下资源开始:

  1. ROS2官方教程:从基础概念开始系统学习
  2. 尝试修改demo_nodes中的示例代码
  3. 使用Turtlesim包练习基本的ROS2概念

记住,学习ROS2最好的方式就是动手实践。我在初学时花了大量时间反复修改和测试示例代码,这种经验是看教程无法替代的。

http://www.jsqmd.com/news/503384/

相关文章:

  • 广州半封闭复读学校深度解析及10家优质机构推荐 - 妙妙水侠
  • 彻底吃透 Java OOM 异常:从原理、场景、排查到解决方案全攻略
  • 分人群解决方案:哪类AI建站工具适合你?
  • Claude Architect认证到底考什么?一个重度用户用半年实战逐项拆解
  • web后端----后端框架基本架构、基本流程
  • 突破音乐格式枷锁:4大维度重构NCM文件的自由转换技术
  • 3大突破!Avalonia让跨平台音频界面开发效率提升200%
  • Ubuntu 22.04 LTS下NVIDIA驱动安装避坑指南:如何用终端一键搞定(附常见错误解决)
  • Step-by-Step Guide to Installing Anolis OS 8.10 for Cloud Environments
  • Qwen3智能字幕对齐系统在在线教育场景的应用
  • X上100万浏览只赚40美元,YouTube却能赚8000美元?程序员副业出海的200倍身份跃迁指南
  • 05_Priority Queues 优先队列
  • 彻底搞懂 Java 垃圾回收(GC)
  • OpenCV实战:5分钟搞定图像模板匹配(NCC算法+C++代码详解)
  • 6.4 日志到底怎么写才有用?排障效率提升的底层方法
  • 教学实验规范下的AI审核与IACheck:让样品分析检测报告更严谨与可复核
  • 鸿蒙HarmonyOS无线调试全攻略:摆脱USB线束缚的5个关键步骤
  • HBase实战:用Python+Thrift实现电商用户行为数据存储(含Region分裂优化)
  • 别再乱用Transform了!用MONAI处理医学图像,这5个核心操作你得先搞懂
  • 别再踩坑了!Vue中使用postMessage传值的5个注意事项(含window.opener最佳实践)
  • U8g2自定义中文字库实战:从零构建Arduino OLED专属字体
  • 华为防火墙双线路故障切换避坑指南:健康检查配置常见误区解析
  • Llava-v1.6-7b模型部署教程:Linux环境一键安装指南
  • QGIS插件开发避坑指南:从安装Plugin Builder到第一个Hello World插件
  • 多语言情感分析挑战与解决方案
  • 锤子科技Android开源项目深度解析:一步与大爆炸的创新实现
  • LingBot-Depth实测分享:在RTX 4090上实现1080p深度图实时精炼
  • 6.5 Git协作不踩坑:提交规范分支策略冲突处理全流程
  • YOLOv5后处理全流程拆解:从6万个候选框到最终结果的‘过滤漏斗’
  • 探索C# WPF MVVM大屏看板3D立体可视化大屏监控源码