ROS/ROS2 与 LCM 的核心特性对比
ROS(Robot Operating System)和 LCM(Lightweight Communications and Marshalling)是两种广泛应用于机器人数据采集与通信的中间件。ROS 提供完整的机器人开发框架,包括节点管理、消息传递和工具链支持。ROS2 在此基础上优化了实时性和分布式架构,支持 DDS(Data Distribution Service)作为底层通信协议。
LCM 是一种轻量级通信库,专注于低延迟和高吞吐量场景,适用于嵌入式系统或对性能要求严格的场景。与 ROS 不同,LCM 不提供任务调度或节点管理功能,仅负责数据传输。
ROS2 示例代码(Python):
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class PublisherNode(Node):
def __init__(self):
super().__init__('publisher_node')
self.publisher = self.create_publisher(String, 'topic', 10)
timer_period = 0.5
self.timer = self.create_timer(timer_period, self.publish_message)
def publish_message(self):
msg = String()
msg.data = 'Hello ROS2'
self.publisher.publish(msg)
def main():
rclpy.init()
node = PublisherNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
LCM 示例代码(C++):
#include <lcm/lcm-cpp.hpp>
#include "example_t.hpp"
int main() {
lcm::LCM lcm;
if (!lcm.good()) return -1;
example_t msg;
msg.timestamp = 0;
msg.data = "Hello LCM";
lcm.publish("EXAMPLE_CHANNEL", &msg);
return 0;
}
工业总线协议(CAN、EtherCAT)的应用场景
工业总线协议(如 CAN、E
ROS/ROS2 与 LCM 的核心特性对比
ROS(Robot Operating System)和 LCM(Lightweight Communications and Marshalling)是两种广泛应用于机器人数据采集与通信的中间件。ROS 提供完整的机器人开发框架,包括节点管理、消息传递和工具链支持。ROS2 在此基础上优化了实时性和分布式架构,支持 DDS(Data Distribution Service)作为底层通信协议。
LCM 是一种轻量级通信库,专注于低延迟和高吞吐量场景,适用于嵌入式系统或对性能要求严格的场景。与 ROS 不同,LCM 不提供任务调度或节点管理功能,仅负责数据传输。
ROS2 示例代码(Python):
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class PublisherNode(Node):
def __init__(self):
super().__init__('publisher_node')
self.publisher = self.create_publisher(String, 'topic', 10)
timer_period = 0.5
self.timer = self.create_timer(timer_period, self.publish_message)
def publish_message(self):
msg = String()
msg.data = 'Hello ROS2'
self.publisher.publish(msg)
def main():
rclpy.init()
node = PublisherNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
LCM 示例代码(C++):
#include <lcm/lcm-cpp.hpp>
#include "example_t.hpp"
int main() {
lcm::LCM lcm;
if (!lcm.good()) return -1;
example_t msg;
msg.timestamp = 0;
msg.data = "Hello LCM";
lcm.publish("EXAMPLE_CHANNEL", &msg);
return 0;
}
工业总线协议(CAN、EtherCAT)的应用场景
工业总线协议(如 CAN、E

被折叠的 条评论
为什么被折叠?



