跳转至

ROS 简介

ROS 用于搭建机器人不同模块之间的连接,类似于人体神经系统。 它可以把相机模块输出的图片作为目标识别模块的输入,以实现目标识别。 类似于神经系统把眼睛的信息传递到大脑中的不同模块,以实现复杂的决策和行为。

但是为什么使用ROS作为不同模块之间传递呢? 我直接在代码里,让他们传递参数不可以嘛? 为什么ROS会在机器人领域占据比较重要的地位呢?

原因就是ROS的设计更加利于协作和社区交流。 例如有人开发了一个超级厉害的算法,但是仅仅写到自己的程序里。 如果你想要利用的话,就只能去阅读里面的源代码,思考它是怎么调用的,模块的输入输出是什么? 但是如果开发者将其构建为一个ROS包,你就可以使用ROS这个神经系统,快速接入到你的机器人代码里,或者替换原来的模块。 这大大减轻了开发负担。

同时我们可以将神经网络等计算开销比较大的程序放在主机上进行,而不是放在机器人上。 这样一方面可以减少机器人的耗电,你拥有了更长的调试时间, 另一方面也可以利用主机的强大计算能力,实现更加复杂的任务。

也正是因为机器人社区以ROS为基础,构建了丰富的功能模块(建图,导航,定位), 我们得以快速得上手机器人,实现比较复杂的任务,而不是从0开始写代码。

你只需要记得两句话:

  1. ROS 负责在模块之间传递信息。

  2. 社区的 ROS 包可以减轻我们的开发负担。

核心概念

辅助资源

ROS2 官方文档 ROS 官方文档

ROS 官方文档