ROS 简介¶
ROS 用于搭建机器人不同模块之间的连接,类似于人体神经系统。 它可以把相机模块输出的图片作为目标识别模块的输入,以实现目标识别。 类似于神经系统把眼睛的信息传递到大脑中的不同模块,以实现复杂的决策和行为。
但是为什么使用ROS作为不同模块之间传递呢? 我直接在代码里,让他们传递参数不可以嘛? 为什么ROS会在机器人领域占据比较重要的地位呢?
原因就是ROS的设计更加利于协作和社区交流。 例如有人开发了一个超级厉害的算法,但是仅仅写到自己的程序里。 如果你想要利用的话,就只能去阅读里面的源代码,思考它是怎么调用的,模块的输入输出是什么? 但是如果开发者将其构建为一个ROS包,你就可以使用ROS这个神经系统,快速接入到你的机器人代码里,或者替换原来的模块。 这大大减轻了开发负担。
同时我们可以将神经网络等计算开销比较大的程序放在主机上进行,而不是放在机器人上。 这样一方面可以减少机器人的耗电,你拥有了更长的调试时间, 另一方面也可以利用主机的强大计算能力,实现更加复杂的任务。
也正是因为机器人社区以ROS为基础,构建了丰富的功能模块(建图,导航,定位), 我们得以快速得上手机器人,实现比较复杂的任务,而不是从0开始写代码。
你只需要记得两句话:
-
ROS 负责在模块之间传递信息。
-
社区的 ROS 包可以减轻我们的开发负担。
核心概念¶
- 环境配置(Setup Robot Environment): 配置机器人环境,包括安装 ROS Noetic + Gazebo / 创建 ROS 工作空间。
- ROS 通信:执行计算的可执行文件。