一、概述

机器人开发是一门综合学科,需要用到各方面知识,包括且不限于计算机,数学和物理等各个领域。因其综合程度高使其开发较为繁琐且困难,ROS的出现大大简单了机器人开发的门槛,ROS全称Robot Operating System,本质上是一个分布式系统架构,提供标准的通讯结构,实现功能的集成。 机器人开发的一般流程为:目标设计,构建框架,功能开发,整体优化,实体验证,该流程并非顺序执行,更多的是循环和回溯,本专栏也以按照该流程编写。

二、相关工具

工欲善其事必先利其器,要想更好的进行机器人开发,掌握相关工具和知识是必不可少的,下面介绍了在开发过程中常用的工具。

2.1 Matlab

  • 简述
    MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
     
  • Matlab在机器人开发过程中主要用于控制算法的开发,但其程序运行速度较慢,不适合直接整合进控制系统中。
  • 相关库机器人工具箱:提供机器人相关的各种函数,包括建模,逆解,轨迹规划和运动规划等。

2.2 C++

  • 简述C++执行效率较高,但编写较为繁琐,适合用在需要进行复杂计算的环境和性能要求较高的地方。
  • 相关学习EigenEigen和Matlab的比较

2.3 Python

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