ros 和 web 交互

一. 安装 package

 sudo apt-get install ros-kinetic-rosbridge-suite 

二. 使用

1. 新建 html 文件

<!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8" />
 <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>
 <script type="text/javascript" type="text/javascript">
 // Connecting to ROS
 var ros = new ROSLIB.Ros({
 url : 'ws://localhost:9090'
 });
 //判断是否连接成功并输出相应的提示消息到web控制台
 ros.on('connection', function() {
 console.log('Connected to websocket server.');
 });
 ros.on('error', function(error) {
 console.log('Error connecting to websocket server: ', error);
 });
 ros.on('close', function() {
 console.log('Connection to websocket server closed.');
 });
 // Publishing a Topic
 var cmdVel = new ROSLIB.Topic({
 ros : ros,
 name : '/cmd_vel',
 messageType : 'geometry_msgs/Twist'
 });//创建一个topic,它的名字是'/cmd_vel',,消息类型是'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消息
 twist.linear.x = twist.linear.x + 0.1;
 twist.linear.y = twist.linear.y + 0.1;
 twist.linear.z = twist.linear.z + 0.1;
 twist.angular.x = twist.angular.x + 0.1;
 twist.angular.y = twist.angular.y + 0.1;
 twist.angular.z = twist.angular.z + 0.1;
 }
 // Subscribing to a Topic
 var listener = new ROSLIB.Topic({
 ros : ros,
 name : '/chatter',
 messageType : 'std_msgs/String'
 });//创建一个topic,它的名字是'/chatter',,消息类型是'std_msgs/String'
 function subscribe()//在点击”Subscribe”按钮后订阅'/chatter'的消息,并将其显示到网页中
 {
 listener.subscribe(function(message) {
 document.getElementById("output").innerHTML = ('Received message on ' + listener.name + ': ' + message.data);
 });
 }
 function unsubscribe()//在点击”Unsubscribe”按钮后取消订阅'/chatter'的消息
 {
 listener.unsubscribe();
 }
 </script>
 </head>
 <body>
 <h1>Simple roslib Example</h1>
 <p>Check your Web Console for output.</p>
 <p id = "output"></p>
 <button onclick = "func()">Publish</button>
 <button onclick = "subscribe()">Subscribe</button>
 <button onclick = "unsubscribe()">Unsubscribe</button><br />
 </body>
 </html>

2. 运行

在使用ROS Web的时候,我们首先要运行一个launch文件,便于Web端能够连接到ROS主机上,在终端中运行:

roslaunch rosbridge_server rosbridge_websocket.launch

显示:
在这里插入图片描述
新打开一个终端:

rosrun  roscpp_tutorials  talker

再打开一个终端:

rostopic echo /cmd_vel

这一操作的目的是为了通过talker节点发布话题 ‘/chatter’ 的消息,便于在Web端进行该话题的订阅操作。然后在浏览器中打开 .html 文件,并打开Web控制台,将出现以下界面:
在这里插入图片描述

  • F12 进控制台

在这里插入图片描述
就可以通过 web 收发 topic

此时所有的 topic

seivl@seivl-Default-string:~$ rostopic list
/chatter
/client_count
/cmd_vel
/connected_clients
/rosout
/rosout_agg

关闭节点,控制台也会有提示断开:
在这里插入图片描述

三. 参考

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值