ROS 概述与环境配置

简介

本教程对 ROS(机器人操作系统)进行简要概述,并指导您在 reComputer J3010 Nvidia Jetson Orin Nano 上快速安装并体验 ROS。完成本教程后,您将拥有一个可用的 ROS 环境,并能够运行一个简单的 ROS 演示程序。

前置条件

学习本教程,您需要以下硬件和软件:

J3010

ROS 发展简介

什么是 ROS?

ROS(机器人操作系统)是一个用于机器人软件开发的开源框架。它在异构计算集群的主机操作系统之上提供了一个结构化的通信层。ROS 设计得尽可能轻量,由两部分组成:

  • ROS 系统(ROS): 处理进程间通信的"管道"系统,是允许机器人各部件相互通信的中间件。
  • ROS 软件包: 编写机器人应用所需的库和工具。

J3010

为什么选择 ROS?

ROS 简化了在各种机器人平台上创建复杂、健壮的机器人行为的过程。使用 ROS 的一些主要目标和优势包括:

  • 快速开发: 提供标准平台,加速从研究到生产的开发过程。
  • 全球社区: 拥有庞大且活跃的社区为软件做出贡献和改进。
  • 久经考验: 在学术界和商业机器人领域得到广泛使用。
  • 缩短上市时间: 凭借完善的工具和库,有助于缩短产品开发时间。
  • 多功能性: 支持多个领域和平台,包括嵌入式系统。
  • 开源: 免费使用、修改和扩展,促进创新与协作。
  • 商用友好: 以 Apache 2.0 等宽松许可证发布。

ROS 的历史与发展

ROS(机器人操作系统)的历史与机器人技术的整体发展密切相关:

J3010

早期机器人发展

  • 1959 年: 机器人技术之旅始于第一台自动化机器人的研发。
  • 1972 年: 出现了能够与环境交互的机器人。
  • 1982 年: 机器人被集成到计算机系统中以执行复杂任务。
  • 1988 年: 机器人自动化和控制系统取得进展。
  • 2002 年: 推出了用于家务的消费级机器人,如 Roomba。
  • 2003 年: 借助火星探测器扩展了机器人探索领域。
  • 2005 年: 机器人在工业自动化中扮演关键角色,如仓储机器人。

ROS 的历史与发展

早期机器人发展

  • 1959 年: 机器人技术之旅始于第一台自动化机器人的研发。
  • 1972 年: 出现了能够与环境交互的机器人。
  • 1982 年: 机器人被集成到计算机系统中以执行复杂任务。
  • 1988 年: 机器人自动化和控制系统取得进展。
  • 2002 年: 推出了用于家务的消费级机器人,如 Roomba。
  • 2003 年: 借助火星探测器扩展了机器人探索领域。
  • 2005 年: 机器人在工业自动化中扮演关键角色,如仓储机器人。

ROS 的诞生

  • 2007 年: ROS 在斯坦福人工智能实验室由 Morgan Quigley、Eric Berger 和 Andrew Ng 以"Switchyard"之名启动开发。其目的在于解决机器人研究领域缺乏共享软件基础设施的问题。
  • 2008 年: 在机器人研究实验室 Willow Garage 继续开发。
  • 2009 年: ROS 正式成立,标志是发布了第一个版本。

发展与演变

  • 2010 年: 发布 ROS 1.0,Willow Garage 在其开发和社区发展中发挥了关键作用。
  • 2014 年: 推出社交和服务机器人,如 Pepper,展现人机交互的进步。
  • 2021 年: ROS 演进以支持复杂多样的机器人系统,适用于各种应用场景。

ROS 发布时间表

版本名称发行版发布日期终止支持日期
BoxturtleROS 12010 年 3 月2011 年 3 月
C TurtleROS 12010 年 8 月2011 年 8 月
DiamondbackROS 12011 年 3 月2012 年 11 月
Electric EmysROS 12011 年 8 月2013 年 1 月
FuerteROS 12012 年 4 月2013 年 7 月
Groovy GalapagosROS 12012 年 12 月2014 年 5 月
Hydro MedusaROS 12013 年 9 月2015 年 5 月
Indigo IglooROS 12014 年 7 月2019 年 4 月
Jade TurtleROS 12015 年 5 月2017 年 5 月
Kinetic KameROS 12016 年 5 月2021 年 4 月
Lunar LoggerheadROS 12017 年 5 月2019 年 5 月
Melodic MoreniaROS 12018 年 5 月2023 年 5 月
Noetic NinjemysROS 12020 年 5 月2025 年 5 月
Foxy FitzroyROS 22020 年 6 月2023 年 6 月
Galactic GeocheloneROS 22021 年 5 月2022 年 11 月
Humble HawksbillROS 22022 年 5 月2027 年 5 月
Rolling RidleyROS 2持续中持续中

如今,ROS 由非营利组织 Open Robotics 维护,该组织致力于开发核心 ROS 系统,包括 ROS 2.0,后者引入了针对实时和嵌入式系统的改进,以及其他工具和库。

ROS 环境安装与快速体验

安装 ROS1

  • 第 1 步: 打开终端并更新系统软件包。
    bash
    sudo apt update 
    sudo apt upgrade
  • 第 2 步: 安装基础工具。
    bash
    sudo apt install curl gnupg2 lsb-release
  • 第 3 步: 添加 ROS 仓库密钥。
    bash
    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
  • 第 4 步: 添加 ROS 仓库。
    bash
    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  • 第 5 步: 更新软件包列表。
    bash
    sudo apt update
  • 第 6 步: 安装 ros-noetic-desktop-full。
    bash
    sudo apt install ros-noetic-desktop-full
    sudo apt-get install python3-rosdep
  • 第 7 步: 初始化 rosdep。
    bash
    sudo rosdep init
    rosdep update
  • 第 8 步: 设置 ROS 环境变量。
    bash
    echo "source /opt/ros/noetic/setup.bash">> ~/.bashrc &&
    source ~/.bashrc
  • 第 9 步: 安装依赖工具。
    bash
    sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  • 第 10 步: 测试安装。
    bash
    roscore

ROS 快速入门

为快速体验 ROS,我们创建一个 ROS 工作空间并运行一个简单的演示程序。

  1. 创建 ROS 工作空间

    bash
    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/
    catkin_make
  2. 加载 setup 文件

    bash
    source devel/setup.bash
  3. 运行演示

    bash
    roscore

    打开另一个终端并运行:

    bash
    rosrun turtlesim turtlesim_node

    再打开一个终端并运行:

    bash
    rosrun turtlesim turtle_teleop_key

这个简单的演示展示了一个图形化的小海龟机器人,您可以使用键盘对其进行控制。

ROS 常用开发软件的安装

安装 VSCode 及 ROS 开发扩展

  1. 关于 VSCode 的安装,请参阅之前的教程: 3.1-Python 与编程基础

  2. 从 VSCode 扩展市场安装 PythonROSC++CMake Tools 等工具。

安装 Terminator 多功能终端。

  1. 安装

    bash
    sudo apt-get update
    sudo apt install terminator
  2. 打开"显示应用程序" ---> 搜索 "Terminator" ---> 右键并选择"添加到收藏夹"

  3. Terminator 常用快捷键

    • Alt + Up: 移动到上方终端
    • Alt + Down: 移动到下方终端
    • Alt + Left: 移动到左侧终端
    • Alt + Right: 移动到右侧终端
    • Ctrl + Shift + O: 水平分割终端
    • Ctrl + Shift + E: 垂直分割终端
    • Ctrl + Shift + Right: 在垂直分割的终端中将分隔条向右移动
    • Ctrl + Shift + Left: 在垂直分割的终端中将分隔条向左移动
    • Ctrl + Shift + Up: 在水平分割的终端中将分隔条向上移动
    • Ctrl + Shift + Down: 在水平分割的终端中将分隔条向下移动
    • Ctrl + Shift + S: 隐藏/显示滚动条
    • Ctrl + Shift + F: 搜索
    • Ctrl + Shift + C: 将所选内容复制到剪贴板
    • Ctrl + Shift + V: 粘贴剪贴板内容
    • Ctrl + Shift + W: 关闭当前终端
    • Ctrl + Shift + Q: 退出当前窗口,关闭其中的所有终端
    • Ctrl + Shift + X: 最大化当前终端
    • Ctrl + Shift + Z: 最大化当前终端并放大字体
    • Ctrl + Shift + N 或 Ctrl + Tab: 移动到下一个终端
    • Ctrl + Shift + P 或 Ctrl + Shift + Tab: 移动到上一个终端
    • F11: 切换全屏
    • Ctrl + Shift + T: 打开新标签页
    • Ctrl + PageDown: 移动到下一个标签页
    • Ctrl + PageUp: 移动到上一个标签页
    • Ctrl + Shift + PageDown: 将当前标签页与下一个标签页交换
    • Ctrl + Shift + PageUp: 将当前标签页与上一个标签页交换
    • Ctrl + Plus (+): 放大字体
    • Ctrl + Minus (-): 缩小字体
    • Ctrl + Zero (0): 将字体重置为原始大小
    • Ctrl + Shift + R: 重置终端状态
    • Ctrl + Shift + G: 重置终端状态并清屏
    • Super + g: 绑定所有终端,使输入在所有终端中镜像
    • Super + Shift + G: 解绑所有终端
    • Super + t: 绑定当前标签页中的所有终端,使输入在它们之间镜像
    • Super + Shift + T: 解绑当前标签页中的终端
    • Ctrl + Shift + I: 打开新窗口,与原窗口共享进程
    • Super + i: 打开一个独立进程的新窗口