<笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS
2020/12/21
前言
本系列笔记为笔者学习ROS课程中记录下的东西,内容不会像课程内容那样连贯,但是会包含一些关键概念、关键问题以及个人的一些其他想法,如有问题或者对想法产生共鸣可以共同交流、学习进步。
一、为什么需要ROS
ROS出现的目的是为了提高机器人研发中的软件复用率,即 避免重复造轮子(这一点还是挺认可的,比如笔者知道的FPGA行业,很多使用者在做相关项目是,大多都是从轮子造起;凡是都有两面,不用造轮子的同时也意味着使用者可能无法了解一些底层的实现原理,只是当一个调包侠),现在ROS已经成为机器人界中的一个统一的标准,ROS的开源鼓励各个实验室、开发者协作开发机器人,目前ROS的两大领域:SLAM和机械臂;
二、ROS的总体设计
1、一个目标
提高机器人研发中的软件复用率
2、五个特点
(1)点对点设计
节点单元(节点是ROS中一个很重要的概念)、分布式网络、RPC+TCP/UDP通信系统、适合多机协同;
(2)多语言支持
支持python、C++、JAVA等编程语言,语言无关的接口定义;
(3)架构精简,集成度高
每个功能节点可以单独编译、集成众多开源项目、接口统一/提高软件复用性;
(4)组件化工具包丰富
3D可视化工具:rviz
物理仿真环境:gazebo
数据记录工具:rosbag
QT工具箱:rqt_*
(5)免费并且开源
遵循BSD开源许可,可商用(很多公司产品基于ROS做优化);软件包数量指数级增长,良好的生态系统;
3、四位一体
总体上ROS是一个四位一体的综合性机器人开发框架;ROS的核心在于通信机制,这种通信机制是基于点对点的网络通信,可以把不同的功能节点隔离开;
三、ROS的系统实现–三个层次
1、计算图
描述程序是如何运行的
关于ROS三种通信机制,我们在后面在具体分析;
2、文件系统
程序文件是如何组织和构建的
功能包清单(Package manifest)中记录了功能包的基本信息,包含作者信息、许可信息、以来选项、变异标志等
**p.s.**自己在完成相应的功能包(或元功能包)后,也可以将功能包发布到开源社区上;
3、开源社区
ROS资源是如何分布式管理的。
ROS WIKI:记录ROS信息文档的主要论坛,上面可以找到所有ROS软件功能包相关的说明;
ROS answers:咨询ROS相关问题的网站
四、ROS的安装
ROS安装有两种方法:一是直接通过软件源安装,二是利用源码编译的方式安装(适用于一些ARM架构嵌入式的硬件);
安装目录默认在/opt/ros下
文件夹作用
bin:具体可执行程序(ROS系统或功能包提供的可执行命令);
etc:ROS配置文件;
include:包含所有通过命令行终端安装的功能包的头文件;
lib:所有通过命令行终端安装的节点(可执行程序);
share:功能包接口的信息(话题、服务、action),比如cmake文件;
其他都是环境变量可执行脚本
现在也有专门支持ROS2的开发板;
五、一些感兴趣的ROS项目
1、利用ROS开发水面/水下无人机(假装自己是水下玩家);
2、基于ROS做安卓机器人(基于手机开发机器人控制器,手机下载一个app);
3、大场景下多机器人共享地图信息,(数据上传至云端之后进行分享);
六、学习参考资料
1、google: www.google.com.
2、ROS WIKI : http://wiki.ros.org/. WIKI是学习一种新知识最好的参考资料
3、ROS answers : https://answers.ros.org/.
4、古月居: https://www.guyuehome.com/.
5、《ROS机器人开发实践》–胡春旭