首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过ros2 -ros2桥将发布/订阅自定义消息发送到客户端应用程序

通过ros2 -ros2桥将发布/订阅自定义消息发送到客户端应用程序
EN

Stack Overflow用户
提问于 2021-08-13 10:53:32
回答 1查看 323关注 0票数 2

我想通过ros2-web-bridge发布ros2自定义消息到react应用程序。在react中,我已经订阅了发布的自定义消息。ros2-web-bridge在端口ws://localhost:9090上运行。我已经在ros2上创建了自定义消息接口。

代码语言:javascript
复制
   // this is client side web app subscribe method
   var example = new ROSLIB.Topic({
  ros: ros,
  name: "/sample",
  messageType: `tutorial_interfaces/msg/Num`,
});

// Subscribe a Topic
example.subscribe(function (message) {
  console.log("Subscribe data", message);
});


// This is ros2 publish python code
import rclpy
from rclpy.node import Node
from tutorial_interfaces.msg import Num    # CHANGE
class MinimalPublisher(Node):

def __init__(self):
    super().__init__('minimal_publisher')
    self.publisher_ = self.create_publisher(Num, 'sample', 10)     # CHANGE
    timer_period = 0.5
    self.timer = self.create_timer(timer_period, self.timer_callback)
    self.i = 0

// This is ros2 published class and method
def timer_callback(self):
    msg = Num()                                           # CHANGE
    msg.num = self.i                                      # CHANGE
    self.publisher_.publish(msg)
    self.get_logger().info('Publishing: "%d"' % msg.num)  # CHANGE
    self.i += 1
EN

回答 1

Stack Overflow用户

发布于 2021-08-13 14:12:36

如果您已经在React端创建并订阅了一个自定义消息,那么在这里您所要做的就是包含消息头,它将像std_msg一样工作。例如:如果您有包含自定义消息类型my_msg的包custom_interface,您的代码将如下所示:

代码语言:javascript
复制
// This is ros2 publish python code
import rclpy
from rclpy.node import Node
from custom_interface.msg import my_msg
class MinimalPublisher(Node):

def __init__(self):
    super().__init__('minimal_publisher')
    self.publisher_ = self.create_publisher(my_msg, 'sample', 10)
    timer_period = 0.5
    self.timer = self.create_timer(timer_period, self.timer_callback)
    self.i = 0

// This is ros2 published class and method
def timer_callback(self):
    msg = my_msg()
    my_msg.custom_field = self.i
    self.publisher_.publish(my_msg)
    self.get_logger().info('Publishing: "%d"' % my_msg.custom_field)
    self.i += 1

如果网桥已经像你说的那样设置好了,那就都可以工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68771051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档