通过rosbridge来实现跨平台通讯

学习rosbridde

自己用ros的python库做了一个小工具

在这里插入图片描述

大概就是这个样子,太丑了,哈哈哈
生成了可执行文件和源码我上传了,链接在这https://download.csdn.net/download/weixin_36628778/11646508

1.需要的环境

  • 装有ros的电脑,至于怎么装,可以查看roswiki链接http://wiki.ros.org/kinetic/Installation/Ubuntu 也可以用这个脚本,一键安装,只支持16.04和14.04现在https://download.csdn.net/download/weixin_36628778/11646963
  • 安装rosbridge,命令sudo apt-get install -y ros-kinetic-rosbridge-server
  • 启动roscore 命令roscore
  • 启动rosbridge 命令roslaunch rosbridge_server rosbridge_websocket.launch
  • 跨平台的python库。roslibpy,可以通过pycharm安装,或者用pip 命令pip install roslibpy
  • roslibpy的依赖 安装的时候提示缺啥,装啥就行

启动的样子
在这里插入图片描述

在这里插入图片描述

2.roslibpy 库例子

具体文档链接在这里:https://roslibpy.readthedocs.io/en/latest/examples.html#
这个是可以下载的pdf地址https://download.csdn.net/download/weixin_36628778/11644867

2.1连接ros
import roslibpy

client = roslibpy.Ros(host='localhost', port=9090)
client.run()
print('Is ROS connected?', client.is_connected)
client.terminate()
2.2 publish topic
import time

import roslibpy

client = roslibpy.Ros(host='localhost', port=9090)
client.run()

talker = roslibpy.Topic(client, '/chatter', 'std_msgs/String')

while client.is_connected:
    talker.publish(roslibpy.Message({'data': 'Hello World!'}))
    print('Sending message...')
    time.sleep(1)

talker.unadvertise()

client.terminate()
2.3 subscribe topic
from __future__ import print_function
import roslibpy

client = roslibpy.Ros(host='localhost', port=9090)
client.run()

listener = roslibpy.Topic(client, '/chatter', 'std_msgs/String')
listener.subscribe(lambda message: print('Heard talking: ' + message['data']))

try:
    while True:
        pass
except KeyboardInterrupt:
    client.terminate()

主要的见https://github.com/jinmenglei/rosbridgeUI_python_wxpython.git

发布了65 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_36628778/article/details/100184481