ROS 快速入门教程01
先做一个快速入门ROS的笔记,系统学习的ROS会在快速入门学习完后进行。
1. 什么是ROS
ROS (Robot Operating System),机器人操作系统是一种用于机器人软件开发的框架,它并不是一个传统意义上的操作系统,而是一个中间件,提供了一系列的工具和服务,用于简化机器人应用程序的开发过程。
1.1 初步认识ROS
核心架构与通信机制
- 节点(Node)
ROS 程序被划分成一个个小的可执行单元,称为“节点”。每个节点负责完成特定功能,例如传感器数据采集、路径规划、运动控制等。 - 主题(Topic)/ 发布–订阅(Publish–Subscribe)
节点之间可以通过“主题”来进行异步消息传递。某个节点将消息“发布(publish)”到一个主题,其他对该主题“感兴趣”的节点就能“订阅(subscribe)”并接收消息。 - 服务(Service)
对于需要请求-响应机制的场景(比如“请计算一下两点之间的最短路径”),ROS 提供了服务接口;调用方发起请求,执行方处理后返回结果。 - 动作(Action)
动作接口适用于长时间运行且可以反馈进度的任务(如“移动到指定位置”),支持预emption(中断)和反馈。 - 参数服务器(Parameter Server)
用来存储全局配置参数,如机器人的物理参数/配置文件路径等,所有节点都可以读取或修改。
版本演进:ROS1 vs ROS2
- ROS1
- 最早由 Willow Garage 在 2007 年推出,社区活跃,生态成熟;
- 使用 Master 节点进行节点发现和名称解析;
- 在实时性、安全性和跨平台支持(Windows、实时 Linux)上存在一些局限。
- ROS2
- 基于 DDS(Data Distribution Service)标准实现,无需集中式 Master,改进了实时性能和安全机制;
- 原生支持多种操作系统(Linux、Windows、macOS)和实时内核;
- 社区正逐步在新项目中推广,已有许多工业应用。
2. ROS安装
www.ros.org点击官方网站选择与自己ubuntu系统版本号相符合的ROS版本进行下载。
本机为ubuntu20.04,对应的是ROS-noetic这个版本。其余版本有以下对应关系。
ROS 发行版 | ROS 类型 | 对应 Ubuntu LTS 版本 |
---|---|---|
Indigo Igloo | ROS 1 | 14.04 Trusty Tahr |
Jade Turtle | ROS 1 | 14.04 Trusty Tahr |
Kinetic Kame | ROS 1 | 16.04 Xenial Xerus |
Lunar Loggerhead | ROS 1 | 16.04 Xenial Xerus |
Melodic Morenia | ROS 1 | 18.04 Bionic Beaver |
Noetic Ninjemys | ROS 1 | 20.04 Focal Fossa |
Dashing Diademata | ROS 2 | 18.04 Bionic Beaver |
Eloquent Elusor | ROS 2 | 18.04 Bionic Beaver |
Foxy Fitzroy | ROS 2 | 20.04 Focal Fossa |
Galactic Geochelone | ROS 2 | 20.04 Focal Fossa |
Humble Hawksbill | ROS 2 | 22.04 Jammy Jellyfish |
Iron Irwini | ROS 2 | 22.04 Jammy Jellyfish |
打开链接进入Noetic页面
根据页面提示进行更换。
- 换源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
- 设置秘钥
sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
- 安装
sudo apt update
sudo apt install ros-noetic-desktop-full
- 环境设置
source /opt/ros/noetic/setup.bash
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
- 检验是否安装完成
roscore
有以下弹出信息就证明安装完毕
3.APT源
在 ROS 的安装和使用过程中,APT(Advanced Package Tool)源用于方便地从软件仓库安装和更新 ROS 包。通过添加 ROS 的 APT 软件源,用户可以轻松地获取 ROS 的各种功能包和工具,并确保软件的安装和管理是简便且可靠的。
index.ros.rog打开网页找到适合自己的ros版本
最上方的软件包
安装软件包的方式一般为ros-ros版本-软件包名
方式来下载安装。
以rqt_robot_steering 为例,
sudo apt install ros-noetic-rqt-robot-steering
3.2 使用软件包
- 新建一个终端窗口输入
rosrun
启动ros。 - 再新建一个窗口输入
rosrun rqt_robot_steering rqt_robot_steering
注意,第一遍rqt是包名,第二遍rqt是节点名
- 再打开一个终端程序
sudo apt install ros-noetic-turtlesim
安装小乌龟,再输入
rosrun turtlesim turtlesim_node
便可以用前面打开的rqt软件包来控制小乌龟的移动
4.开源自由市场github
- 创建工作目录
mkdir catkin_ws
cd catkin_ws
mkdir src #创建代码目录
cd src
- 下载git
sudo apt install git
- 在src目录下克隆github开源项目
git clone https://github.com/6-robot/wpr_simulation.git
- scripts目录放置脚本文件和Python程序
打开scripts目录,并打开终端。依次运行./
+脚本名
./install_for_noetic.sh
./install_for_melodic.sh
./install_for_kinetic.sh
- 编译
cd ~/catkin_ws/
catkin_make
- 配置环境
source ~/catkin_ws/devel/setup.bash
- 运行包的功能
roslaunch wpr_simulation wpb_simple.launch
我们可以用之前下载的软件包来控制仿真环境下的机器人移动
rosrun rqt_robot_steering rqt_robot_steering
记得删去turtle1
此时就能控制机器人的移动
- 保存工作空间环境
gedit ~/.bashrc
source ~/catkin_ws/devel/setup.bash