前言:利用rosbridge开发一个网页版的action客户端。
一:rosbridge原理:
rosbridge协议:该协议的基本思想是将节点间的分布式通信,改成“client节点”与一个代理节点进行C/S通信,然后代理节点再将请求转发给server节点,这样客户端就不需要实现整个ROS平台,只需要跟代理节点通信即可。
网页上将发布的信息封装成json,通过websocket解析到代理节点,代理节点就可以转化为ros节点通信发布给Server端。
官方的rosbridge教程:rosbridge
ROSBridge简介以及理解使用博客:rosbridge
二、简单的examble分析:
网页实现部分代码:
第一部分:链接到两个roslib.js。官方提供的两个文件,用于链接到本地的websocket进行与ros交互。
<script type="text/javascript" src="http://static.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script> <script type="text/javascript" src="http://static.robotwebtools.org/roslibjs/current/roslib.min.js"></script>
第二部分:发布与订阅信息。
/*向节点发送信息,创建一个topic,它的名字是'/position',,消息类型是'geometry_msgs/Twist'*/ var cmdVel = new ROSLIB.Topic({ ros : ros, name : '/position', messageType : 'geometry_msgs/Twist' }); var twist = new ROSLIB.Message({ linear : { x : 0.1, y : 0.2, z : 0.3 }, angular : { x : -0.1, y : -0.2, z : -0.3 } });//创建一个message function func()//在点击”Publish”按钮后发布消息 { cmdVel.publish(twist);//发布twist消息 } /*从节点获取信息*/ var listener = new ROSLIB.Topic({ ros : ros, name :