[灯哥开源—四足机器人]程序算法讲解与STM32移植——运行框架(两个主线程)
写在前面(核心思想!!!)
之前有幸参加过国内的机器人比赛,对阅读机器人控制算法有自己一定的心得。
在我看来控制机器人的程序是由一个主循环(主线程)和多个“次”循环(子线程)组成
主循环负责实时监测机器人的姿态数据反馈,并经过一步一步的算法计算,得出相应的值输出到执行器件。
次循环有多个,他们的作用往往是负责实时接收传感器或者遥控器传入的数据,并将此数据反馈到主循环的某个环节。
找到了主循环之后,我们的需要了解一份程序的第一次循环是怎样开始的?中间的循环是怎样重复的?最后一个循环是怎样停止的
以下是我认为实现控制机器人的一般框架,如图所示:
我们如果要阅读一份程序,所要做的东西就非常清楚了
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移植——运行框架(两个主线程)相关推荐
- 运动学逆解,VMC算法,计算舵机角度输出文件PA_IK和PA_VMC讲解——[灯哥开源—四足机器人]程序算法讲解与STM32移植
目录 写在前面 运动学逆解原理 运动学逆解PA_IK代码实现 VMC算法原理 VMC代码实现 引用文献: 写在前面 本篇文章介绍的是,运动控制线程padog.py的逻辑顺序这篇文章中如红框所示的部分 ...
- [灯哥开源—四足机器人]程序算法讲解与STM32移植——PA_TROT和PA_WALK讲解和trot步态,walk步态,步态规划
关键词:trot步态,walk步态,步态规划 目录 步态基础概念介绍 TROT步态原理 TROT代码实现 WALK步态原理 WALK代码实现 引用文献: 写在前面 这篇文章介绍的是,这篇文章https ...
- 【灯哥开源四足机器人】推荐一个开源四足机器狗项目,8自有度,两个舵机控制一个腿,apache开源协议的,已经迭代了好多个版本了,设计的非常好。有官方淘宝店,没有3D打印机的可以购买散装零件自己组装
目录 前言 1,关于[灯哥开源四足机器人] 2,使用py-apple 3,总结 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/detail ...
- 开源四足机器人 附设计图及代码
斯坦福学生机器人俱乐部(Stanford Student Robotics club)Extreme Mobility 团队最近迎来了一名新成员--一个名为 Stanford Doggo 的四足机器人 ...
- 【ROS-Gazebo】开源四足机器人仿真模型pig_dog
2019.6.23更新 本项目是基于ubuntu16.04,ROS kinect,在新版本上需要修改pid配置的yaml文件最后一部分的命名空间,在前面加上/pig_dog,否则无法找到路径. 我将写 ...
- 白泽六足机器人_arduino_v1——3D打印开源六足机器人程序
导航在这里:白泽六足机器人_ros_v1 趁着五一帮忙做了一个六足机器人的程序,可以实现前后左右和超声波避障. 图片如下,可以避障,感兴趣的可以去抖音看具体运行视频. 1.打印结构并组装 这个结构在网 ...
- MIT Mini Cheetah开源四足机器人仿真环境20211130
Mit Mini Cheetah相关: 1. 实验室官网 MIT Biomimetic Robotics Lab 2. Mini Cheetah作者硕士论文 A low cost modular a ...
- 斯坦福大学开源四足机器人pupper腿部组装(上)
上一篇:3D打印件嵌铜螺母. 本文的主题:组装pupper的腿部. 第一步:准备胯部的材料(左右腿同时进行组装),材料如下图所示,左右各一个舵盘,各4个m36内六角平头螺丝,各一个m36内六角杯头螺丝 ...
- 【菠萝狗四足机器人】二次开发教程--第一章 【简介与开发环境搭建】
Py-apple Dynamics 简介与开发环境搭建 1 简介 1.1 何为 菠萝狗 和 Py-Apple Dynamics 1.2 目前支持的功能 2 开发环境搭建 2.1 硬件的搭建 2.1 软 ...
- Arduino白泽四足机器人——matlab逆运动学求解
基于"白泽"四足机器人足端轨迹的插值方法 目录 1 应用背景 2 模型建立 3 MATLAB对足端轨迹进行拟合插值 4 结果与分析 5 matlab逆运动学程序 1 应用背景 近年 ...
最新文章
- python 链式比较 2._特色的Python序列解包、链式赋值、链式比较
- (四)系统虚拟化关键技术
- 阿里云OSS上传文件demo
- java单例模式7种_Java 单例模式的7种写法
- 七种武器武装.NET(常用开发工具介绍)(转)
- HTML布局是外边距咋表示,布局 页面设置百分比 子元素如何设置外边距?
- C# 7.0特性与vs2017
- css3的高级而有用且很少人知道的属性和样式
- python 爬虫抓取网页数据导出excel_如何用excel实现网页爬虫
- testbed笔记:头文件里的函数
- Excel表格常用函数
- Pycharm画图中文显示报错:UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
- linux光盘游戏,Linux下五个好玩的即时战略游戏
- AURIX TC397 Multicore 多核
- SSM 前台AJax传递参数和controller后台接收的方法
- 【习题5】用Python完成新建文档写古诗+复制
- Android自动伸展动画,Android:展开/折叠动画
- 使用 ABAP 代码制作手机能够扫描的二维码(QRCode)试读版
- 电脑预装linux系统,电脑预装Linux第三方系统怎么破?看外行人重装Win10系统的精准攻略...
- 三七互娱2019秋招Java后端开发工程师
热门文章
- k8s节点加入master节点时超时:Initial timeout of 40s passed
- 人类首次捕获到反物质 500克能量可超过氢弹
- 访达前往文件夹_MacOS实用技巧之Finder(访达)的使用
- NAudio:MP3转WAV和Wav转Mp3
- java nio wakeup_Java NIO的wakeup剖析
- java 暴露接口_Java基于spring暴露接口供外部调用
- java math.min_Java Math.min() 方法
- Android WebView 进价高级使用
- 边缘化(marginalization )和稀疏化(sparsification)---ceres-solver
- c++中获取蓝图组件_C++和蓝图