javascript - ros2 pub/sub 自定义消息通过 ros2-web-bridge 到客户端应用程序
问题描述
我想通过 ros2-web-bridge 发布 ros2 自定义消息来响应应用程序。在反应中,我订阅了已发布的自定义消息。ros2-web-bridge 在端口 ws://localhost:9090 上运行。我在 ros2 上创建了自定义消息接口。
// 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
解决方案
如果你已经在 React 端创建并订阅了一条自定义消息,你所要做的就是包含消息头,它就像一个std_msg
. 例如:如果您有custom_interface
包含自定义消息类型的包,my_msg
您的代码将如下所示:
// 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
如果网络桥已经像你说的那样设置好了,那一切都会奏效。
推荐阅读
- java - 当我键入数字键时,Java Swing 按右键
- html - 如何在输入文本字段旁边放置自定义图标?
- build - 发布中的 Visual Studio 命令行构建总是在调试中生成 DLL
- java - 使用 JShare API 时,如何获取特定文件的字段值?
- reactjs - React Router NavLink 映射时不呈现 activeClassName
- c# - 如何在不使用 ItemSource 的情况下以编程方式从 WPF 中的 DataTable 填充 dataGrid
- android - X 轴标签未显示在 LineChart (MpAndroidChart) 中
- swift - Mapbox + Swift:更改图层图像
- java - java日历中的未来日期给出了一个奇怪的行为
- javascript - 意外的 Chrome 自动填充行为 [禁用 chrome 自动填充]