Ros2-humble安装使用rosbridge

使用rosbridge需要引用的库是roslibpy,这样即可在win环境,或者在其他未安装ros2环境下,即可与ros2进行通讯。
之前用过rosbridge,这一波想用一下居然死活用不起来了,所以还是记录一下吧。

官方文档里也说了“使用本模块,必须在 ROS 环境中配置并运行rosbridge”,但是他这句不是太明显!所以我一开始就忽略了…

前置条件:需要先在ros2的环境里,安装rosbridge,即使用命令:
sudo apt-get install ros-<安装的ros版本>-rosbridge-server,例如
sudo apt-get install ros-humble-rosbridge-server
安装后,运行:
ros2 launch rosbridge_server rosbridge_websocket_launch.xml
即可。

然后在其他未安装ros2的环境下,可访问ros。源代码如下:
发布端:

import time

import roslibpy

# /* 默认端口9090
# */
client = roslibpy.Ros(host='192.168.120.126', 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()

订阅端:

from __future__ import print_function
import roslibpy

client = roslibpy.Ros(host='192.168.120.126', 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()

官方文档的安装建议:

实际上tf2-web-republisher我没有安装也可以通讯,应该是运行坐标变换需要的,我没有上手试过。

另,默认情况下,运行rosbridge会创建一个WebSocket在端口9090,可以通过在ros中设置port参数配置端口:

运行截图:
发布端

订阅端

posted @ 2024-09-20 10:10  博园呆呆  阅读(176)  评论(0)    收藏  举报