spirems


Namespirems JSON
Version 0.4.6 PyPI version JSON
download
home_pageNone
SummarySpire message system, a lightweight message publishing and subscription software package similar to ROS.
upload_time2025-02-07 03:13:24
maintainerNone
docs_urlNone
authorjario
requires_python>=3.8
licenseApache-2.0
keywords message-system lightweight computer-vision spirems
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <img src="spirems/res/spirems_logo.jpg" alt="SpireMS logo" align="right" height="70" />

# SpireMS

## 介绍

**Spire消息系统,一个类似ROS的轻量化消息发布、订阅软件包,支持图像、雷达等传感器话题。**

1. 完美适配 Windows 和 Linux 系统,以及 C++、Python、Anaconda 的各类版本
2. 一键部署安装,轻量化
3. 可预先定义基础数据类型,也可以灵活适应新的类型
4. 有中心模式,内置防崩溃机制,通信稳定可靠,没有订阅者不占用带宽
5. 支持内存共享机制

    ![数据分发性能测试](spirems/res/5600G_test_cn.png "SpireMS-ShareMem为使用memory_msgs::RawImage类型共享内存传输")

**具体内容请参考:**[SpireMS使用手册](https://www.wolai.com/duBWkKUCYQJCVSGPwueCrx)

## 安装教程

### Python安装

1. 安装(命令行执行)

```Bash
pip install spirems
```

2. 引入(Python代码)

```Python
from spirems import Subscriber, Publisher, def_msg
```

### C++安装(Ubuntu系统)

1. 依赖项安装,如果已经安装cmake、opencv则可以忽略以下2行

```Bash
sudo apt update
sudo apt -y install cmake libopencv-dev
```

2. 源码安装

```Bash
git clone https://gitee.com/jario-jin/spirems.git
cd spirems/spirems_cpp
mkdir build && cd build
cmake ..
sudo make install
```

3. 在自己项目的CMakeLists.txt中引入SpireMS

```
find_package(SpireMS REQUIRED)
include_directories(${SpireMS_INCLUDE_DIRS})
target_link_libraries(YourAppName ${SpireMS_LIBS})
```

## 使用说明

### Python使用说明
1. 启动Core服务

```Bash
smscore
```

2.  发布话题
```Python
from spirems import Publisher, def_msg
import time
pub = Publisher('/topic/hello', 'std_msgs::String')
msg = def_msg('std_msgs::String')
while True:
    msg['data'] = 'hello world!'
    pub.publish(msg)
    time.sleep(1)
```

3.  订阅话题
```Python
from spirems import Subscriber

def callback_f(msg):
    print(msg['data'])

sub = Subscriber('/topic/hello', 'std_msgs::String', callback_f)
```

### C++使用说明

1. 启动Core服务(命令行方式,也可以用Python中的启动方式,启动一次即可)

```Bash
smscore
```

2. 发布话题
```C++
#include <sms_core.h>

int main(int argc, char *argv[])
{
    sms::Publisher pub("/topic/hello", "std_msgs::String");
    nlohmann::json msg = sms::def_msg("std_msgs::String");
    
    while (true)
    {
        msg["data"] = "hello world!";
        pub.publish(msg);
        sleep(1);
    }
}
```

3. 订阅话题
```C++
#include <sms_core.h>

void callback(nlohmann::json msg)
{
    std::cout << msg["data"] << std::endl;
}

int main(int argc, char *argv[])
{
    sms::Subscriber sub("/topic/hello", "std_msgs::String", callback);
    sub.join();
    return 0;
}
```

### 命令行控制

1. 显示所有话题

```Bash
sms list
```

2. 打印话题

```Bash
sms echo /topic/hello
```

3. 打印话题频率

```Bash
sms hz /topic/hello
```

4. 打印参数服务器所有参数

```Bash
smsparam list
```

5. 在线更新参数

```Bash
smsparam set param_key param_value
```

6. 导出所有参数

```Bash
smsparam export output.json
```

## 参与贡献

1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "spirems",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "jario <renjin@bit.edu.cn>",
    "keywords": "message-system, lightweight, computer-vision, SpireMS",
    "author": "jario",
    "author_email": "jario <renjin@bit.edu.cn>",
    "download_url": null,
    "platform": null,
    "description": "<img src=\"spirems/res/spirems_logo.jpg\" alt=\"SpireMS logo\" align=\"right\" height=\"70\" />\r\n\r\n# SpireMS\r\n\r\n## \u4ecb\u7ecd\r\n\r\n**Spire\u6d88\u606f\u7cfb\u7edf\uff0c\u4e00\u4e2a\u7c7b\u4f3cROS\u7684\u8f7b\u91cf\u5316\u6d88\u606f\u53d1\u5e03\u3001\u8ba2\u9605\u8f6f\u4ef6\u5305\uff0c\u652f\u6301\u56fe\u50cf\u3001\u96f7\u8fbe\u7b49\u4f20\u611f\u5668\u8bdd\u9898\u3002**\r\n\r\n1. \u5b8c\u7f8e\u9002\u914d Windows \u548c Linux \u7cfb\u7edf\uff0c\u4ee5\u53ca C++\u3001Python\u3001Anaconda \u7684\u5404\u7c7b\u7248\u672c\r\n2. \u4e00\u952e\u90e8\u7f72\u5b89\u88c5\uff0c\u8f7b\u91cf\u5316\r\n3. \u53ef\u9884\u5148\u5b9a\u4e49\u57fa\u7840\u6570\u636e\u7c7b\u578b\uff0c\u4e5f\u53ef\u4ee5\u7075\u6d3b\u9002\u5e94\u65b0\u7684\u7c7b\u578b\r\n4. \u6709\u4e2d\u5fc3\u6a21\u5f0f\uff0c\u5185\u7f6e\u9632\u5d29\u6e83\u673a\u5236\uff0c\u901a\u4fe1\u7a33\u5b9a\u53ef\u9760\uff0c\u6ca1\u6709\u8ba2\u9605\u8005\u4e0d\u5360\u7528\u5e26\u5bbd\r\n5. \u652f\u6301\u5185\u5b58\u5171\u4eab\u673a\u5236\r\n\r\n    ![\u6570\u636e\u5206\u53d1\u6027\u80fd\u6d4b\u8bd5](spirems/res/5600G_test_cn.png \"SpireMS-ShareMem\u4e3a\u4f7f\u7528memory_msgs::RawImage\u7c7b\u578b\u5171\u4eab\u5185\u5b58\u4f20\u8f93\")\r\n\r\n**\u5177\u4f53\u5185\u5bb9\u8bf7\u53c2\u8003\uff1a**[SpireMS\u4f7f\u7528\u624b\u518c](https://www.wolai.com/duBWkKUCYQJCVSGPwueCrx)\r\n\r\n## \u5b89\u88c5\u6559\u7a0b\r\n\r\n### Python\u5b89\u88c5\r\n\r\n1. \u5b89\u88c5\uff08\u547d\u4ee4\u884c\u6267\u884c\uff09\r\n\r\n```Bash\r\npip install spirems\r\n```\r\n\r\n2. \u5f15\u5165\uff08Python\u4ee3\u7801\uff09\r\n\r\n```Python\r\nfrom spirems import Subscriber, Publisher, def_msg\r\n```\r\n\r\n### C++\u5b89\u88c5\uff08Ubuntu\u7cfb\u7edf\uff09\r\n\r\n1. \u4f9d\u8d56\u9879\u5b89\u88c5\uff0c\u5982\u679c\u5df2\u7ecf\u5b89\u88c5cmake\u3001opencv\u5219\u53ef\u4ee5\u5ffd\u7565\u4ee5\u4e0b2\u884c\r\n\r\n```Bash\r\nsudo apt update\r\nsudo apt -y install cmake libopencv-dev\r\n```\r\n\r\n2. \u6e90\u7801\u5b89\u88c5\r\n\r\n```Bash\r\ngit clone https://gitee.com/jario-jin/spirems.git\r\ncd spirems/spirems_cpp\r\nmkdir build && cd build\r\ncmake ..\r\nsudo make install\r\n```\r\n\r\n3. \u5728\u81ea\u5df1\u9879\u76ee\u7684CMakeLists.txt\u4e2d\u5f15\u5165SpireMS\r\n\r\n```\r\nfind_package(SpireMS REQUIRED)\r\ninclude_directories(${SpireMS_INCLUDE_DIRS})\r\ntarget_link_libraries(YourAppName ${SpireMS_LIBS})\r\n```\r\n\r\n## \u4f7f\u7528\u8bf4\u660e\r\n\r\n### Python\u4f7f\u7528\u8bf4\u660e\r\n1. \u542f\u52a8Core\u670d\u52a1\r\n\r\n```Bash\r\nsmscore\r\n```\r\n\r\n2.  \u53d1\u5e03\u8bdd\u9898\r\n```Python\r\nfrom spirems import Publisher, def_msg\r\nimport time\r\npub = Publisher('/topic/hello', 'std_msgs::String')\r\nmsg = def_msg('std_msgs::String')\r\nwhile True:\r\n    msg['data'] = 'hello world!'\r\n    pub.publish(msg)\r\n    time.sleep(1)\r\n```\r\n\r\n3.  \u8ba2\u9605\u8bdd\u9898\r\n```Python\r\nfrom spirems import Subscriber\r\n\r\ndef callback_f(msg):\r\n    print(msg['data'])\r\n\r\nsub = Subscriber('/topic/hello', 'std_msgs::String', callback_f)\r\n```\r\n\r\n### C++\u4f7f\u7528\u8bf4\u660e\r\n\r\n1. \u542f\u52a8Core\u670d\u52a1\uff08\u547d\u4ee4\u884c\u65b9\u5f0f\uff0c\u4e5f\u53ef\u4ee5\u7528Python\u4e2d\u7684\u542f\u52a8\u65b9\u5f0f\uff0c\u542f\u52a8\u4e00\u6b21\u5373\u53ef\uff09\r\n\r\n```Bash\r\nsmscore\r\n```\r\n\r\n2. \u53d1\u5e03\u8bdd\u9898\r\n```C++\r\n#include <sms_core.h>\r\n\r\nint main(int argc, char *argv[])\r\n{\r\n    sms::Publisher pub(\"/topic/hello\", \"std_msgs::String\");\r\n    nlohmann::json msg = sms::def_msg(\"std_msgs::String\");\r\n    \r\n    while (true)\r\n    {\r\n        msg[\"data\"] = \"hello world!\";\r\n        pub.publish(msg);\r\n        sleep(1);\r\n    }\r\n}\r\n```\r\n\r\n3. \u8ba2\u9605\u8bdd\u9898\r\n```C++\r\n#include <sms_core.h>\r\n\r\nvoid callback(nlohmann::json msg)\r\n{\r\n    std::cout << msg[\"data\"] << std::endl;\r\n}\r\n\r\nint main(int argc, char *argv[])\r\n{\r\n    sms::Subscriber sub(\"/topic/hello\", \"std_msgs::String\", callback);\r\n    sub.join();\r\n    return 0;\r\n}\r\n```\r\n\r\n### \u547d\u4ee4\u884c\u63a7\u5236\r\n\r\n1. \u663e\u793a\u6240\u6709\u8bdd\u9898\r\n\r\n```Bash\r\nsms list\r\n```\r\n\r\n2. \u6253\u5370\u8bdd\u9898\r\n\r\n```Bash\r\nsms echo /topic/hello\r\n```\r\n\r\n3. \u6253\u5370\u8bdd\u9898\u9891\u7387\r\n\r\n```Bash\r\nsms hz /topic/hello\r\n```\r\n\r\n4. \u6253\u5370\u53c2\u6570\u670d\u52a1\u5668\u6240\u6709\u53c2\u6570\r\n\r\n```Bash\r\nsmsparam list\r\n```\r\n\r\n5. \u5728\u7ebf\u66f4\u65b0\u53c2\u6570\r\n\r\n```Bash\r\nsmsparam set param_key param_value\r\n```\r\n\r\n6. \u5bfc\u51fa\u6240\u6709\u53c2\u6570\r\n\r\n```Bash\r\nsmsparam export output.json\r\n```\r\n\r\n## \u53c2\u4e0e\u8d21\u732e\r\n\r\n1.  Fork \u672c\u4ed3\u5e93\r\n2.  \u65b0\u5efa Feat_xxx \u5206\u652f\r\n3.  \u63d0\u4ea4\u4ee3\u7801\r\n4.  \u65b0\u5efa Pull Request\r\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Spire message system, a lightweight message publishing and subscription software package similar to ROS.",
    "version": "0.4.6",
    "project_urls": {
        "Bug Reports": "https://gitee.com/jario-jin/spirems/issues",
        "Changelog": "https://gitee.com/jario-jin/spirems/releases",
        "Documentation": "https://www.wolai.com/duBWkKUCYQJCVSGPwueCrx",
        "Homepage": "https://www.wolai.com/duBWkKUCYQJCVSGPwueCrx",
        "Source": "https://gitee.com/jario-jin/spirems"
    },
    "split_keywords": [
        "message-system",
        " lightweight",
        " computer-vision",
        " spirems"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7fa1524cb068bce6933a65151f8a1c2dc418390cccdc0f41921f0b424d570cd9",
                "md5": "a065d873d796bd2421794aac7fa561ad",
                "sha256": "fd3976324f6cea46ca641332161a76f5c020712d8833d928d203983b1ca1ef03"
            },
            "downloads": -1,
            "filename": "spirems-0.4.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a065d873d796bd2421794aac7fa561ad",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 1288905,
            "upload_time": "2025-02-07T03:13:24",
            "upload_time_iso_8601": "2025-02-07T03:13:24.711956Z",
            "url": "https://files.pythonhosted.org/packages/7f/a1/524cb068bce6933a65151f8a1c2dc418390cccdc0f41921f0b424d570cd9/spirems-0.4.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-07 03:13:24",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "spirems"
}
        
Elapsed time: 2.53471s