ROS只是一个程序开发框架而已,它主要有以下东西组成:
1、ROS运行环境,主要负责全局信息、消息传递、名称管理。
2、ROS专用函数库,主要是规定ROS各种规则:通信、管理全局信息。
3、各种能重复利用的package
4、一些方便开发的工具
ROS本身运行在Linux中
用ROS开发框架,开发出来的东西是一个个可重复利用的package(主要是c++或python代码、配置文件和编译用的脚本),每个package编译后生成1个或几个Node(可执行文件)。Node之间可按照ROS制定的规则进行通信。通信方式(应该是基于socket)有两种:
1、 广播消息机制。一个node广播出特定的消息,而监听这种消息的node就能收到相应的消息,这种通信方式是异步的。
2、 请求/应答机制。一个node对另外一个node发出请求,另外一个node则回应。这种通行方式是同步的。
如:
可以将获取摄像头图像的程序做成一个Node,这个Node向外广播出获取的图像数据。
其他node可以监听前者发出的消息,从而获取摄像头图像数据。
使用ROS提供的通信机制,用ROS开发出来的程序能方便相互协作。但这种耦合度是很低的,这能大大提高代码的重复利用率。
1、ROS运行环境,主要负责全局信息、消息传递、名称管理。
2、ROS专用函数库,主要是规定ROS各种规则:通信、管理全局信息。
3、各种能重复利用的package
4、一些方便开发的工具
ROS本身运行在Linux中
用ROS开发框架,开发出来的东西是一个个可重复利用的package(主要是c++或python代码、配置文件和编译用的脚本),每个package编译后生成1个或几个Node(可执行文件)。Node之间可按照ROS制定的规则进行通信。通信方式(应该是基于socket)有两种:
1、 广播消息机制。一个node广播出特定的消息,而监听这种消息的node就能收到相应的消息,这种通信方式是异步的。
2、 请求/应答机制。一个node对另外一个node发出请求,另外一个node则回应。这种通行方式是同步的。
如:
可以将获取摄像头图像的程序做成一个Node,这个Node向外广播出获取的图像数据。
其他node可以监听前者发出的消息,从而获取摄像头图像数据。
使用ROS提供的通信机制,用ROS开发出来的程序能方便相互协作。但这种耦合度是很低的,这能大大提高代码的重复利用率。