# cyber **Repository Path**: pengspace/cyber ## Basic Information - **Project Name**: cyber - **Description**: This is a light-weight ROS library, called Cyber. - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-11-15 - **Last Updated**: 2024-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cyber - Linux C++ Robot Middleware ```text ██████╗██╗ ██╗██████╗ ███████╗██████╗ ██╔════╝╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗ ██║ ╚████╔╝ ██████╔╝█████╗ ██████╔╝ ██║ ╚██╔╝ ██╔══██╗██╔══╝ ██╔══██╗ ╚██████╗ ██║ ██████╔╝███████╗██║ ██║ ╚═════╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ``` **特点**: - 简单易用 - 高性能 - 实时 - 高通用性 **Cyber包含了**: - 话题通信模型 - 服务通信模型 - 参数模型 - C++ Web服务器(支持WebSocket) - libusb库的封装 - Serial串口通信库的封装 - CSV格式读写 - 简易标记语言SML ## Hello World ```cpp #include "cyber.hpp" cyber::domain n("Node1"); void topic_test1(cyber::message *data) { std::cout << "Recv:" << data->to_string() << std::endl; } int main(){ auto pub1 = n.advertise("test1", 100); auto sub1 = n.subscribe("test1", 100, topic_test1); cyber::rate rate(50); while(cyber::ok()){ pub1->publish("Hello, World"); sub1->spin(); rate.sleep(); } return 0; } ``` ## 开发工作 - [x] 话题模型 - [x] 服务模型 - [x] 参数模型 - [x] UDP发现服务 - [x] Web服务端 - [x] libusb封装 - [x] CSV封装 - [x] SML - [x] 工具链-cyber domain - [x] 工具链-cyber topic - [x] 工具链-cyber bag ## 功能 ### Domain `domain`是Cyber程序的最小单位。 每个域都有个名字,用户可以通过`domain`发布和订阅主题或提供服务和调用服务。 ### Topic `Topic` 是基于 TCP 的点对点通信方式。 `发布者`(publisher)可以发布一个 `主题`(topic),而 `订阅者`(subscriber)可以订阅这个 `主题`。用户可以先发布主题,也可以先订阅主题,两种方式都可以! `Topic` 适用于 `高速` 和 `实时` 通信。 ### Service `Service` 类似于 HTTP,但它不是 HTTP,可以看作是简化版的 HTTP。 `Service` 的速度并不快。它适用于远程过程调用(Remote Procedure Call,RPC)。 ### Parameter 主节点拥有一个全局的`参数空间(parameter space)`。每个域都可以向主节点设置参数,也可以从主节点获取参数。 `parameter`存储在主节点进程中。