python机器人框架和工具
pygecko的Python项目详细描述
:蜥蜴:壁虎
我的机器人软件。
- 不使用ros,ros的安装和维护很麻烦
在macos和各种linux系统上
- 使用一些相同的思想、构造、架构思想、api,但是 不严格遵守
- 使用0 mq作为进程间通信
(同时使用TCP和UDS)而不是RPC-XML
- 看了google的protobuf,但比我需要的要复杂得多
- 使用
msgpack
对当前数据进行序列化, 但可以换成不同的东西 - 使用geckocore.py作为消息中心而不是roscore
- 生成性能数据(见下文)
- 不要使用geckolaunch.py来代替roslaunch
json
-配置和启动文件- 所有这些都运行在树莓皮3上。
- 也在MacOS(Unix)上运行
架构
- Geckocore是一个跟踪计算机发布主题和打印内容的中心
节点CPU/内存使用率
- 实际上,当gecko进程启动时,它们会告诉geckocore它们的pid
使用
psutil
library可以跟踪使用情况的数字 - 显然,这只适用于与geckocore位于同一台机器上的进程
- Geckocore只显示信息并跟踪发布者主题/地址
- 实际上,当gecko进程启动时,它们会告诉geckocore它们的pid
使用
- 任何数量的酒吧都可以和任何数量的酒吧…这不是一对一的关系
- Pubs/Subs可以存在于远程计算机上
- 如果发布/订阅位于远程计算机上,则不会显示其性能数据
- 当前没有获取远程性能数据的机制
geckocore.py
- 活页夹为数据打开一个随机端口
- 注意:发布者或订阅者都可以绑定到端口 < > >
- 活页夹告诉geckocore主题和地址/端口
- 壁虎公司承认活页夹
- 连接器希望连接到某个主题,并要求Geckocore提供地址/端口
- 壁虎:
- 如果找到主题,请返回地址/端口和OK状态
- 如果topic isnotfound,则返回none < > >
- 连接器用给定的地址/端口连接到活页夹
- 活页夹:每个端口只能有一个,可以是pub或sub
- 连接器:每个端口可以有多个,可以是pub或sub < > >
< > > - 初始化节点:这设置了与壁虎公司通信的过程
- 日志xxx:打印日志消息
frompygeckoimportgeckopygeckopy.loginfo('this is a info message')# just send a stringgeckopy.logwarn('this is a warning message')geckopy.logerror('this is a error message')geckopy.logdebug('this is a debug message')
- 订阅者:创建订阅者并将回调函数附加到 壁虎阵
- 发布者:创建并返回发布服务器
- 速率:给定循环运行频率(即10Hz),则
返回的对象将动态设置睡眠间隔以达到该速率。前任:
frompygeckoimportgeckopyrate=geckopy.Rate(20)# run loop at 20 HzwhileTrue:rate.sleep()
- 壁虎。*
- 初始节点(kwargs)
- logx(测试,topic='log')
- X:错误,调试,信息,警告
- 是否关闭()
- 发布者(主题,地址=无,队列大小=10,绑定=真)
- 订阅者(topics,callback=none,addr=none,bind=false)
这是主消息中心。Geckocore还通过了 本地机器并打印每个进程的性能数据:
+========================================| Processes Performance |[24790] GeckoCore............. cpu: 0.3% mem: 0.0% |[24793] pub_ryan.............. cpu: 0.1% mem: 0.0% |[24795] pub_mike.............. cpu: 0.1% mem: 0.0% |[24796] sub_mike.............. cpu: 20.5% mem: 0.0% |[24797] pub_sammie............ cpu: 0.1% mem: 0.0% |[24798] sub_sammie............ cpu: 20.5% mem: 0.0% +------------------------------ | ESTABLISHED Connections | pub_mike............ 192.168.86.22:50551 --> 192.168.86.22:50557 | sub_mike............ 192.168.86.22:50557 --> 192.168.86.22:50551 | pub_sammie.......... 192.168.86.22:50554 --> 192.168.86.22:50558 | sub_sammie.......... 192.168.86.22:50558 --> 192.168.86.22:50554 +------------------------------ | LISTEN Connections | GeckoCore........... 192.168.86.22:11311 | pub_ryan............ 192.168.86.22:50548 | pub_mike............ 192.168.86.22:50551 | pub_sammie.......... 192.168.86.22:50554 +========================================| Published Topics <topic>@tcp://<ip>:<port> |1: ryan@tcp://192.168.86.22:50548 |2: mike@tcp://192.168.86.22:50551 |3: sammie@tcp://192.168.86.22:50554 +========================================
======================================== Geckocore [65975] ------------- Key: local Host IP: 10.0.1.57 Listening on: 224.3.29.110:11311 ------------- Known Services [6] * hello:........................ tcp://10.0.1.57:65303 * hey there:.................... tcp://10.0.1.57:65304 * ryan:......................... tcp://10.0.1.57:65310 * mike:......................... tcp://10.0.1.57:65311 * sammie:....................... tcp://10.0.1.57:65312 * scott:........................ tcp://10.0.1.57:65313 Binders [6][65993] hello................. cpu: 0.0% mem: 0.0% [65994] hey there............. cpu: 0.0% mem: 0.0% [66008] ryan.................. cpu: 0.1% mem: 0.0% [66010] mike.................. cpu: 0.1% mem: 0.0% [66012] sammie................ cpu: 0.1% mem: 0.0% [66014] scott................. cpu: 0.1% mem: 0.0% Connections [8][65995] hello................. cpu: 20.7% mem: 0.0% [65996] hello................. cpu: 20.9% mem: 0.0% [65997] hey there............. cpu: 21.0% mem: 0.0% [65998] hey there............. cpu: 20.8% mem: 0.0% [66011] mike.................. cpu: 19.0% mem: 0.0% [66013] sammie................ cpu: 19.0% mem: 0.0% [66015] scott................. cpu: 19.4% mem: 0.0% [66009] ryan.................. cpu: 18.7% mem: 0.0%
geckolaunch.py
geckolaunch.py
允许您使用启动快速启动一系列进程
文件。启动文件只是一个简单的json文件,其中每一行的格式如下:
[文件、函数、夸格斯]
。下面是一个示例:
{"processes": [["process", "publish", {"topic": "hello"}], ["process", "publish", {"topic": "hey there"}], ["process", "subscribe2", {"topic": "hello"}], ["process", "subscribe2", {"topic": "hello"}], ["process", "subscribe2", {"topic": "hey there"}], ["process", "subscribe2", {"topic": "hey there"}], ["process", "subscribe2", {"topic": "cv"}], ["process", "subscribe2", {"topic": "cv"}], ["process", "pcv", {"topic": "cv"}]], "geckocore": {"host": "localhost"# or hostname.local}}
壁虎
请参见示例,但这就像一个rospy
并有助于编写
酒吧/酒吧流程简单。请参见/examples
文件夹以查看它的运行情况。
基本用户API
更改日志
<表><广告>麻省理工学院许可证
版权所有(C)2010 Kevin J.Walchko
兹免费准许任何人取得 本软件和相关文档文件("软件"),用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,必须满足以下条件:
上述版权公告及本许可公告须包括在 软件的副本或大部分。
本软件按"原样"提供,无任何形式的保证,明示或 默示的,包括但不限于适销性、适用性的保证 为了一个特殊的目的和非侵犯。在任何情况下,作者或 版权持有人应对任何索赔、损害或其他责任负责,无论 在合同诉讼、侵权诉讼或其他诉讼中,由 与本软件的连接、本软件的使用或其他交易。