机器人ros通信浅析,object c java 等无缝对接
去年火直播今年火机器人.......
一谈到机器人各个模块直接的通信肯定是跑不掉的。专业的都会用ros这个老外框架。框架地址:http://www.ros.org/
这个网站教程非常完整。但是只是针对c++居多,一旦你想用java或者其他系统当做ros中的一个模块那么集成时候问题就来了,资料少的可怜,还都他娘是洋文。
接下来笔者简单介绍一二,可能会给大家带来一些帮助。
从java或者object c 或者net...而言ros就是个websocket的再次封装。如果你用java言语去连接ros通信 实际上就是websocket的连接方式:”ws://localhost:9090“
连接成功以后接下来常用的会有两个
1.topic
topic分为三个流程 创建 订阅 发布
这三个流程实际上就是向websocket的服务端发送一坨特定格式的json,格式在这如果要解释清楚很累,可以在文件结束加群一起学习。
所有有订阅了这个topic的模块就能收到消息,有点广播的意思。
2.service
service一问一答,是客户端发起服务端返回,类似http post这个过程,是有针对性的。
service 分为创建 发送。
整个过程就是用websocket客户端连接上ros所在的服务端,接下来的通信就是走websocket方式,只是数据是特定的json结构,接下来简单讲下这个数据结构
key "op": 以下几种
service_response.
unadvertise_service.
call_service.
advertise_service.
publish.
fragment
subscribe.
unsubscribe.
unadvertise
advertise
解析来
key "topic/service" 请求模式 值对应的是路径 type 指的是个结构体路径,这里可以直接写 string
msg是发送的内容,这个和type类型一一对应的
总之 ros 在java 或者object c或者net上就是建立在websocket连接上的一种数据传输格式。
本人课余喜欢研究 object pascal ,object c ,java,玩些 c# 。欢迎广大IT男加群 (367276878)互相学习