一、概述
机器人开发是一门综合学科,需要用到各方面知识,包括且不限于计算机,数学和物理等各个领域。因其综合程度高使其开发较为繁琐且困难,ROS的出现大大简单了机器人开发的门槛,ROS全称Robot Operating System,本质上是一个分布式系统架构,提供标准的通讯结构,实现功能的集成。 机器人开发的一般流程为:目标设计,构建框架,功能开发,整体优化,实体验证,该流程并非顺序执行,更多的是循环和回溯,本专栏也以按照该流程编写。
二、相关工具
工欲善其事必先利其器,要想更好的进行机器人开发,掌握相关工具和知识是必不可少的,下面介绍了在开发过程中常用的工具。
2.1 Matlab
- 简述
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
- Matlab在机器人开发过程中主要用于控制算法的开发,但其程序运行速度较慢,不适合直接整合进控制系统中。
- 相关库机器人工具箱:提供机器人相关的各种函数,包括建模,逆解,轨迹规划和运动规划等。
2.2 C++
- 简述C++执行效率较高,但编写较为繁琐,适合用在需要进行复杂计算的环境和性能要求较高的地方。
- 相关学习EigenEigen和Matlab的比较
2.3 Python
- 简述Python是一种解释型脚本语言,优势在于开发速度快,编写教C++简单,可以用作上层开发使用。
- 相关学习NumpyPython 机器学习——线性代数和矩阵运算:从matlab迁移到pythonNumPy for Matlab users NumPy for Matlab users文档
2.4 git
- 简述
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
- 考虑到控制系统本身为模块化开发,即各部分功能独立成模块,整体较为复杂,git可以帮助我们更好地管理整个工作空间,同时通过分支我们可以很好地将各部分功能分开开发。
- 相关学习廖雪峰-Git教程图解Git
2.5 Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
ROS是一个典型的多依赖系统,在开发过程中需要大量库,这导致系统部署困难,通过docker打包可以解决这些问题,快速实现开发系统的迁移。
2.6 规范
Google 开源项目风格指南 doxygen sphinx ROS C++ Style Guide(此处以该规范为准) 规范缩写
- CamelCased: The name starts with a capital letter, and has a capital letter for each new word, with no underscores.
- camelCased: Like CamelCase, but with a lower-case first letter
- under_scored: The name uses only lower-case letters, with words separated by underscores. (yes, I realize that under_scored should be underscored, because it’s just one word).
- ALL_CAPITALS: All capital letters, with words separated by underscores.
规范
- 文档:under_scored
- Libraries:under_scored
- Classes / Types:CamelCased
- Function / Methods:camelCased
- Variables:under_scored
- Constants:ALL_CAPITALS
- Member variables:under_scored, with a trailing underscore added (
example_int_
) - Global variables:under_scored*with a leading g_ added (
g_shutdown
) - Namespaces:under_scored
三、学习资源
ROS已经发展了较长时间,网上也有大量相关知识,下面整理了一些比较好的资源: ROS官方教程 ROS Industrial (Kinetic) Training Exercises 古月居 创客智造 易科机器人实验室 中国大学MOOC《机器人操作系统入门》课程代码示例
四、开发参考
使用ROS开发机器人在国外已经有较成熟的经验了,下面是使用ROS开发的机器人控制系统,可以作为开发参考: universal_robot franka ABB