ros机器人周期(「ROS2 foxy」 EP1: 机器人操作系统,最新版ROS2有哪些新特征?)

机器人是一个系统工程,它涉及机械、电子、控制、通信、软件等诸多学科。ros(Robot Operating System)是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。

ROS虽然叫做机器人操作系统,但并非Windows、Linux、Mac那样通常意义的操作系统,它由很多免费的软件组成,连接了操作系统和你开发的ROS应用程序,同时也实现了部分传统操作系统的功能,可以把它理解为一个中间件。底层相关的实现包括硬件抽象、竞争管理、进程管理。上层实现则比如异步调用,同步调用,数据中央数据库,机器人设置系统等。

在ROS运行时环境上,机器人的感知、决策、控制算法可以更好的组织和运行。ROS有版本1和版本2, 即ROS, ROS2. ROS2 Foxy Fitzroy可以在不同的操作系统中安装和运行,如Windows, Linux或 Mac。ROS除了可以在电脑操作系统上直接运行,也可以在虚拟机Docker中运行。

最初Willow Garage开发他的机器人Roboter PR2时,是为了设计一个在已知环境中具有自主导航功能的人形机器人。不过在开发初期,他就将ROS往通用和可定制软件的方向设计,以便以后集成到不同机器人中,能方便改进或修改。如今,ROS 不仅用于 PR2 和类似的机器人,而且还用于各种尺寸的移动机器人、人形机器人、工业机械臂、户外陆地车辆和飞行器等。

ROS2由Robotik社区合作开发,主要对以下几个领域进行了改进:

  • 机器人团队合作
  • 小型电子卡上搭载的软件
  • 实时系统
  • 不稳定的网络
  • 生产环境
ROS und ROS2的主要区别

应用

ROS

ROS2

Plattform

在Ubuntu上通过测试,其他Linux版本及OS X持保留态度。

通过Ubuntu Xenial, OS X EI Capitan 以及 Windows 10测试。

C++

C++03

C+++11, C++14 ,C+++17

Python

Python 2

>= Python 3.5

中间件

个性化序列化格式(传输协议+中心发现机制)

该接口的所有实现目前都基于 DDS (Data Distribution Service) 标准。

持续时间同步及时间测量

持续时间(Duration)和时间类型在客户端库中定义,并使用 C++ 和 Python 进行编程。

该类型通过消息的形式定义,所以对各种语言是一致的。

组件及生命周期

每个节点通常拥有一个自己的主要功能。

生命周期可以在工具中应用,例如 roslaunch,从而可以通过启动多个组件来启动系统。

多线程模型

开发者只能在Mono线程或多线程中选择一种实施。

可以使用具有中间执行级别的模型,并且可以轻松实现个性化的执行程序。

多节点

无法在一个进程中生成多余1个的节点。

一个进程中可以生成多余的节点。

roslauch

roslaunch文件作为XML定义,因而受到XML文件局限。

启动文件通过Python编写,复杂逻辑如条件语句等可被使用。

此外,整理了一份相关的学习资源,供入门ROS参考。目前正在做一个ROS2实战的系列,欢迎关注。「ROS2 foxy」 机器人操作系统实战系列 - 文章汇总


ROS2 - 知识分类

参考资料:

ros机器人

  1. 机器人操作系统入门 - 中国MOOC大学
    https://sychaichangkun.gitbooks.io/ros-tutorial-icourse163/content/
  2. 维基百科
    https://wiki.ros.org/cn/ROS/Tutorials
  3. Github
    https://github.com/ros2
  4. GenerationRobots
    https://www.generationrobots.com/blog/de/ros2-was-andert-sich-gegenuber-ros/

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友