如下图所示,机器人由硬件和软件集成而来。
硬件:机械结构设计(本体),硬件设计(传感器,电机等),机械加工。
软件:
嵌入式软件:算法植入开发板(ARDUINO等),
上层软件:ros(二级/元操作系统,基于ubuntu(等于windows),在PC端操作。
ros:如下图所示,ros是分布式操作系统,可实现多台计算机的分布式计算,比方说一个基于算力较低版的树梅派(相当于一个微型计算机)开发的导航车,算力不足于实施计算,它仅接收(相机)传感器传入的数据,再将数据传入给PC,由PC计算后,传输给树梅派,再由树梅派进行电机等硬件的控制。
ros=通讯+工具+功能+生态
通讯:如上图所示,本质上是一种数据传输,比方说导航时,相机(节点,可分布于不同主机)等得到的数据要传给ROS系统,系统计算之后得到机器人运动的轨迹要再传输给机器人,这个过程就是通讯的过程。
工具:包括仿真和实机,如果没有实机,想学机器人可以利用仿真进行。
功能:开发好的包(导航包,控制包等)
生态:基于ros的各种开发。参考安卓,
松耦合:ros中有很多包(为了实现一个功能而进行的封装,节点),同一个功能,实现方式不同,会有很多功能相同的不同包,这样就给通讯带来了难题,为了让他它们兼容,ros提供了松耦合,就是说,不关注功能包内部的实现,只关注功能包输出的标准化。以硬件雷达为例,不同厂家雷达功能的实现有所不同,那么传递给ros的信息会有不同,但ros不可能要求雷达厂家改变他们如何实现雷达的功能,所以要求雷达最后传入给ros的信息标准化即可。
兼容:ros可以和其他机器人框架相结合,比如OpenRAVE。
语言独立性:ros支持多语言编程,Python,C++皆可,Java也可,ros是一种语言若相关的框架,不同语言编辑的功能包化作节点,并不影响彼此的信息传输,通信下点功夫就行。
最后:用的人够多,资源最多。