《ROS机器人开发实践读书笔记 第一章 初识ROS》

  《ROS机器人开发实践》是一本以实践为中心,讲解大量机器视觉、机器语音、机械臂控制、SLAM和导航、机器学习等多方面ROS应用的实现原理和方法。该书的作者是胡春旭,可能刚学习ROS的小伙伴对这个名字会感到陌生,但是如果提及古月相信大家肯定会有所耳闻,胡春旭先生便是古月居的创始人。

 

文章目录

  • 1.1ROS是什么
  • 1.2如何安装ROS
  • 1.3源码下载
  • 1.4小结

前言

  本书共十四章,可划分为五部分:第一部分(1~4章)是ROS基础,了解ROS框架,并且熟悉ROS中的关键概念以及实现方法。那么本文是ROS基础的第一部分第一章的读书笔记。


一、ROS是什么?

        在前文《初识ROS笔记》中我对“ROS是什么”这一问题进行了初步的解释,《ROS机器人开发实践》一书对这一问题进行了系统且形象的阐释。

        起源:硬件技术的飞速发展在促进机器人领域快速发展和复杂化的同时也给机器人系统软件开发提出了巨大挑战,尤其是软件代码的复用性和模块化需求越发强烈。哪里有需求,哪里就有响应,在当时许多人才投身于机器人的通用软件框架的研发工作并取得了成果,其中最为优秀的软件框架之一就是机器人操作系统(Robot Operating System, ROS)。ROS是一个用于编写机器人软件的灵活框架,它集成了大量的工具、库、协议,提供了类似操作系统所提供的功能。ROS最初应用于斯坦福大学人工智能实验室与机器人技术公司Willow Garage合作的个人机器人项目,2008年后有Willow Garage维护,2010年Willow Garage正式以开放源码的形式发布了ROS框架,并很快在机器人研究领域掀起了ROS开发与应用的热潮。

        设计目标:ROS的设计目标是提高机器人研发中的软件复用率,因此它被设计成为一种分布式结构。正是为了服务“分工”,ROS主要设计了如下设计目标:

  • 代码复用:ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码重用
  • 分布式:ROS是进程(也称为Nodes)的分布式框架,ROS中的进程可分布于不同主机,不同主机协同工作,从而分散计算压力
  • 松耦合:ROS中功能模块封装于独立的功能包或元功能包,便于分享,功能包内的模块以节点为单位运行,以ROS标准的IO作为接口,开发者不需要关注模块内部实现,只要了解接口规则就能实现复用,实现了模块间点对点的松耦合连接
  • 精简:ROS被设计为尽可能精简,以便为ROS编写的代码可以与其他机器人软件框架一起使用。ROS易于与其他机器人软件框架集成:ROS已与OpenRAVE,Orocos和Player集成
  • 语言独立性:包括Java,C++,Python等。为了支持更多应用开发和移植,ROS设计为一种语言弱相关的框架结构,使用简洁,中立的定义语言描述模块间的消息接口,在编译中再产生所使用语言的目标文件,为消息交互提供支持,同时允许消息接口的嵌套使用
  • 易于测试:ROS具有称为rostest的内置单元/集成测试框架,可轻松安装和拆卸测试工具
  • 大型应用:ROS适用于大型运行时系统和大型开发流程
  • 丰富的组件化工具包:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用,如RVIZ(3D可视化工具),开发者根据ROS定义的接口在其中显示机器人模型等,组件还包括仿真环境和消息查看工具等
  • 免费且开源:开发者众多,功能包多

        ROS的特点:ROS的核心——分布式网络,使用了基于TCP/IP的通信方式,实现了模块间点对点的松耦合连接,可以执行若干种类型的通信。总体来说,ROS主要有以下几个特点:

  1. 点对点的设计
  2. 多语言支持
  3. 架构精简、集成度高
  4. 组成化工具包丰富
  5. 免费且开源

二、如何安装ROS

      因为ROS主要支持Ubuntu的操作系统,所以这里以Ubuntu为例。Ubuntu 安装完毕后,就可以安装 ROS 操作系统了,具体步骤如下:

1.配置ubuntu的软件和更新

配置ubuntu的软件和更新,允许安装不经认证的软件。首先打开“软件和更新”对话框,具体可以在 Ubuntu 搜索按钮中搜索。打开后按照下图进行配置(确保勾选了 "universe", "restricted",和 "multiverse")

《ROS机器人开发实践读书笔记 第一章 初识ROS》_第1张图片

2.设置安装源

官方默认安装源:


sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

或来自国内清华的安装源

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 sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

3.设置key

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4.安装

首先需要更新 apt(以前是 apt-get, 官方建议使用 apt 而非 apt-get),apt 是用于从互联网仓库搜索、安装、升级、卸载软件或操作系统的工具。

sudo apt update

等待...

然后,再安装所需类型的 ROS:ROS 多个类型:Desktop-FullDesktopROS-Base。这里介绍较为常用的Desktop-Full(官方推荐)安装: ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception

sudo apt install ros-noetic-desktop-full

5.配置环境变量

配置环境变量,方便在任意 终端中使用 ROS。

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

6.卸载

sudo apt remove ros-noetic-*

三、源码下载

$ git clone https://github.com/huchunxu/ros_exploring.git

四、小结

        本章带初学者走进了ROS的世界,一起了解了ROS的起源背景、设计目标和框架特点。该书提供了所有实践源码,可以帮助初学者用ROS搭建丰富的机器人应用功能。接下来带上好心情,开始一段ROS机器人开发实践之旅吧!

你可能感兴趣的:(机器人)