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)上运行

架构

 src=

  • Geckocore是一个跟踪计算机发布主题和打印内容的中心 节点CPU/内存使用率
    • 实际上,当gecko进程启动时,它们会告诉geckocore它们的pid 使用psutillibrary可以跟踪使用情况的数字
    • 显然,这只适用于与geckocore位于同一台机器上的进程
    • Geckocore只显示信息并跟踪发布者主题/地址
  • 任何数量的酒吧都可以和任何数量的酒吧…这不是一对一的关系
  • Pubs/Subs可以存在于远程计算机上
    • 如果发布/订阅位于远程计算机上,则不会显示其性能数据
    • 当前没有获取远程性能数据的机制

geckocore.py

 src=

  1. 活页夹为数据打开一个随机端口
    1. 注意:发布者或订阅者都可以绑定到端口
    2. < > >
    3. 活页夹告诉geckocore主题和地址/端口
    4. 壁虎公司承认活页夹
    5. 连接器希望连接到某个主题,并要求Geckocore提供地址/端口
    6. 壁虎:
      1. 如果找到主题,请返回地址/端口和OK状态
      2. 如果topic isnotfound,则返回none
      3. < > >
      4. 连接器用给定的地址/端口连接到活页夹
        1. 活页夹:每个端口只能有一个,可以是pub或sub
        2. 连接器:每个端口可以有多个,可以是pub或sub
        3. < > >< > >

          这是主消息中心。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文件夹以查看它的运行情况。

          • 初始化节点:这设置了与壁虎公司通信的过程
          • 日志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()

          基本用户API

          • 壁虎。*
            • 初始节点(kwargs)
            • logx(测试,topic='log')
              • X:错误,调试,信息,警告
            • 是否关闭()
            • 发布者(主题,地址=无,队列大小=10,绑定=真)
            • 订阅者(topics,callback=none,addr=none,bind=false)

          更改日志

          <表><广告>日期 版本 注释< /广告><正文>2019年5月18日1.3.0用C++ +/td>工作 2019年3月2日1.2.0将多播设置为查找节点的默认方法2018年10月28日1.1.0简化并移除壁虎作为主枢纽2018年9月16日1.0.3实现了多播连接过程2018年9月16日1.0.2不再支持Python2.7,只有3.7+2018年9月11日1.0.1正在工作,但仍需要再冲洗一些2018年7月28日1.0.0完全用核弹从轨道上起飞 2017年5月14日0.8.3更新和重构2017年4月2日0.8.2修复pypi文档和重构2017年3月19日0.7.0重构2017年3月12日0.6.0将消息从dict更改为classes2016年12月26日0.5.0重构2016年10月9日0.4.1发布给PYPI2010年3月10日 0.0.1初始值

          麻省理工学院许可证

          版权所有(C)2010 Kevin J.Walchko

          兹免费准许任何人取得 本软件和相关文档文件("软件"),用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,必须满足以下条件:

          上述版权公告及本许可公告须包括在 软件的副本或大部分。

          本软件按"原样"提供,无任何形式的保证,明示或 默示的,包括但不限于适销性、适用性的保证 为了一个特殊的目的和非侵犯。在任何情况下,作者或 版权持有人应对任何索赔、损害或其他责任负责,无论 在合同诉讼、侵权诉讼或其他诉讼中,由 与本软件的连接、本软件的使用或其他交易。

          欢迎加入QQ群-->: 979659372 Python中文网_新手群

          推荐PyPI第三方库


热门话题
tomcat Java条带错误   java OPENTSDB fsck修复程序不更正重复点   java JavaFX在控制器内切换自身的可见性   java maven surefire插件未并行执行运行程序   读取导致Freemarker模板引擎中TemplateException的Java对象   无法使Java库与我的Android应用程序一起工作   安卓 java。lang.IllegalStateException游标   使用Java检索XML文件中的XSL URL和名称   java如何从文本文件集合中提取特定值   电子邮件java mail gmail   java为什么finalize()只被垃圾收集器调用一次?   java方法findViewById(int)对于Json类型是未定义的。蛇形   java在安卓中尝试从brother打印机打印位图时遇到以下异常   java在颤振中支持Kotlin的优势   java从后面编写文本   java制作列表。第一个列表可以有相同的数字,第二个将是价格,尝试制作第三个列表,如果它们是相同的数字,它将添加价格