写在前面(核心思想!!!)

之前有幸参加过国内的机器人比赛,对阅读机器人控制算法有自己一定的心得。

在我看来控制机器人的程序是由一个主循环(主线程)和多个“次”循环(子线程)组成

主循环负责实时监测机器人的姿态数据反馈,并经过一步一步的算法计算,得出相应的值输出到执行器件。

次循环有多个,他们的作用往往是负责实时接收传感器或者遥控器传入的数据,并将此数据反馈到主循环的某个环节。

找到了主循环之后,我们的需要了解一份程序的第一次循环是怎样开始的?中间的循环是怎样重复的?最后一个循环是怎样停止的

以下是我认为实现控制机器人的一般框架,如图所示:

我们如果要阅读一份程序,所要做的东西就非常清楚了

1.弄清主循环,次循环分别是什么?

2.主循环里的每个模块的功能分别是什么?它所用的算法背后的物理数学基础?

3.主循环里的每个模块的输入量和输出量是什么?

4.全局变量,形参和实参的“生命周期”?

V6.0版本的main.py

在有了上述的方向指引之后,我们便可以开始阅读整份程序,我们都知道main.py是一份文件的开始的地方。因此,我们首先将目光放在main.py文件中。

在此文件中,除了一些库的引入,就是以下这几段代码,注释如下:

#函数功能:执行打开并阅读web_c.py的操作
#变量作用:None
#返回值:None
def app_1():exec(open('web_c.py').read())#函数功能:执行打开并阅读web_c.py的操作
#变量作用:None
#返回值:None
def loop2(t):padog.mainloop()#打开第一个线程,执行函数app_1
_thread.start_new_thread(app_1, ())
#打开第二个线程(循环),执行函数loop2
t.init(period=10,mode=Timer.PERIODIC,callback=loop2)

当我们点进web_c.py,可以发现整个文件的可以分成三块,头部的引入,变量的定义和一个while循环程序。

我们可以暂且不去理会while循环里面的内容(它的主要功能是接收遥控器的数据,具体哪篇文会讲到),只要明白这是进入了一个循环的程序即可,也即是对应开头框架图中的一个次循环。

而main.py里t.init(period=10,mode=Timer.PERIODIC,callback=loop2)这句话的作用是每10毫秒调用一次padog.py文件里面的mainloop这个函数,此函数是整个狗姿态控制的核心,也是整份程序的主循环。狗狗能稳定不倒,能按预期行走全依赖于这个不断自我检测,自我调整的主循环。

综上所述,我们可以明白main.py里面有一个不断调整狗姿态的主循环,和一个接受遥控数据的次循环。保持狗姿态的主循环是弄懂四足机器人原理的基础,所以下一篇文章会按照这条主线,将主循环中的每一个环节弄清楚,再讲述次循环部分。

[灯哥开源—四足机器人]程序算法讲解与STM32移植——运行框架(两个主线程)相关推荐

  1. 运动学逆解,VMC算法,计算舵机角度输出文件PA_IK和PA_VMC讲解——[灯哥开源—四足机器人]程序算法讲解与STM32移植

    目录 写在前面 运动学逆解原理 运动学逆解PA_IK代码实现 VMC算法原理 VMC代码实现 引用文献: 写在前面 本篇文章介绍的是,运动控制线程padog.py的逻辑顺序这篇文章中如红框所示的部分 ...

  2. [灯哥开源—四足机器人]程序算法讲解与STM32移植——PA_TROT和PA_WALK讲解和trot步态,walk步态,步态规划

    关键词:trot步态,walk步态,步态规划 目录 步态基础概念介绍 TROT步态原理 TROT代码实现 WALK步态原理 WALK代码实现 引用文献: 写在前面 这篇文章介绍的是,这篇文章https ...

  3. 【灯哥开源四足机器人】推荐一个开源四足机器狗项目,8自有度,两个舵机控制一个腿,apache开源协议的,已经迭代了好多个版本了,设计的非常好。有官方淘宝店,没有3D打印机的可以购买散装零件自己组装

    目录 前言 1,关于[灯哥开源四足机器人] 2,使用py-apple 3,总结 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/detail ...

  4. 开源四足机器人 附设计图及代码

    斯坦福学生机器人俱乐部(Stanford Student Robotics club)Extreme Mobility 团队最近迎来了一名新成员--一个名为 Stanford Doggo 的四足机器人 ...

  5. 【ROS-Gazebo】开源四足机器人仿真模型pig_dog

    2019.6.23更新 本项目是基于ubuntu16.04,ROS kinect,在新版本上需要修改pid配置的yaml文件最后一部分的命名空间,在前面加上/pig_dog,否则无法找到路径. 我将写 ...

  6. 白泽六足机器人_arduino_v1——3D打印开源六足机器人程序

    导航在这里:白泽六足机器人_ros_v1 趁着五一帮忙做了一个六足机器人的程序,可以实现前后左右和超声波避障. 图片如下,可以避障,感兴趣的可以去抖音看具体运行视频. 1.打印结构并组装 这个结构在网 ...

  7. MIT Mini Cheetah开源四足机器人仿真环境20211130

    Mit Mini Cheetah相关: 1. 实验室官网 MIT Biomimetic Robotics Lab 2.  Mini Cheetah作者硕士论文 A low cost modular a ...

  8. 斯坦福大学开源四足机器人pupper腿部组装(上)

    上一篇:3D打印件嵌铜螺母. 本文的主题:组装pupper的腿部. 第一步:准备胯部的材料(左右腿同时进行组装),材料如下图所示,左右各一个舵盘,各4个m36内六角平头螺丝,各一个m36内六角杯头螺丝 ...

  9. 【菠萝狗四足机器人】二次开发教程--第一章 【简介与开发环境搭建】

    Py-apple Dynamics 简介与开发环境搭建 1 简介 1.1 何为 菠萝狗 和 Py-Apple Dynamics 1.2 目前支持的功能 2 开发环境搭建 2.1 硬件的搭建 2.1 软 ...

  10. Arduino白泽四足机器人——matlab逆运动学求解

    基于"白泽"四足机器人足端轨迹的插值方法 目录 1 应用背景 2 模型建立 3 MATLAB对足端轨迹进行拟合插值 4 结果与分析 5 matlab逆运动学程序 1 应用背景 近年 ...

最新文章

  1. python 链式比较 2._特色的Python序列解包、链式赋值、链式比较
  2. (四)系统虚拟化关键技术
  3. 阿里云OSS上传文件demo
  4. java单例模式7种_Java 单例模式的7种写法
  5. 七种武器武装.NET(常用开发工具介绍)(转)
  6. HTML布局是外边距咋表示,布局 页面设置百分比 子元素如何设置外边距?
  7. C# 7.0特性与vs2017
  8. css3的高级而有用且很少人知道的属性和样式
  9. python 爬虫抓取网页数据导出excel_如何用excel实现网页爬虫
  10. testbed笔记:头文件里的函数
  11. Excel表格常用函数
  12. Pycharm画图中文显示报错:UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
  13. linux光盘游戏,Linux下五个好玩的即时战略游戏
  14. AURIX TC397 Multicore 多核
  15. SSM 前台AJax传递参数和controller后台接收的方法
  16. 【习题5】用Python完成新建文档写古诗+复制
  17. Android自动伸展动画,Android:展开/折叠动画
  18. 使用 ABAP 代码制作手机能够扫描的二维码(QRCode)试读版
  19. 电脑预装linux系统,电脑预装Linux第三方系统怎么破?看外行人重装Win10系统的精准攻略...
  20. 三七互娱2019秋招Java后端开发工程师

热门文章

  1. k8s节点加入master节点时超时:Initial timeout of 40s passed
  2. 人类首次捕获到反物质 500克能量可超过氢弹
  3. 访达前往文件夹_MacOS实用技巧之Finder(访达)的使用
  4. NAudio:MP3转WAV和Wav转Mp3
  5. java nio wakeup_Java NIO的wakeup剖析
  6. java 暴露接口_Java基于spring暴露接口供外部调用
  7. java math.min_Java Math.min() 方法
  8. Android WebView 进价高级使用
  9. 边缘化(marginalization )和稀疏化(sparsification)---ceres-solver
  10. c++中获取蓝图组件_C++和蓝图