平衡车制作---原理篇

2023-05-16

平衡车制作—原理篇

文章目录

  • 平衡车制作---原理篇
    • 前言
    • 直立控制
      • 直观感受
      • 内部机理
    • 速度控制
    • 方向控制
    • 总结

前言

本篇教程内容主要来自于《直立平衡车模参考设计方案》,且这里是从概念层面讲述的并没有具体的控制理论方面的内容。有了这些概念方面的知识制作一个初级版的平衡车已经足够了。

在这里插入图片描述

直立控制

直观感受

悄悄告诉你个秘密:其实你天生就已经知道了直立控制的原理。不信的话,你用手指撑个木棍就知道了,这其中已经包含了直立控制原理。根据控制理论的知识可以将其抽象为一个负反馈系统

在这里插入图片描述

这样对于两轮车能够直立而言,我们有一个直观的感受:车模向前倾斜轮子向前加速,车模向后倾斜轮子向后加速,车模便可以完成直立。

在这里插入图片描述

这样的直观感受在我们后期的制作调试过程中是非常重要的。接下来稍微深入了了解下直立控制的原理。

内部机理

  • 重力场中使用细线悬挂着重物经过简化便形成理想化的单摆模型
  • 直立着的车模可以看成放置在可以左右移动平台上的倒立着的单摆(倒立摆)

在这里插入图片描述

单摆能够稳定在垂直位置需要两个条件:

  1. 受到与位移(角度)相反的回复力;
  2. 受到与运动速度(角速度)相反的阻尼力;

sdaa sdsds

(非惯性系,以车轮作为坐标原点)分析倒立摆受力,它就会受到额外的惯性力,该力与车轮的加速度方向相反,大小成正比。(假设a和θ成正比比例系数为k1)(θ较小,为便于分析此处进行了线性化)

F = mgsinθ - macosθ ≈ mgθ - mk1θ

如果比例 k1>g,那么回复力的方向便于位移方向相反了

sds

类比于单摆平衡的条件,为了使得倒立摆能够尽快地在垂直位置稳定下来,还需要增加控制阻尼力(方向与偏角的速度成正比方向成反比)。 则

𝐹=𝑚𝑔𝜃−𝑚k1𝜃−𝑚𝑘2𝜃’

只要保证在k1>g,k2>0的条件下,可以使得车模像单摆一样维持在直立状态。其中两个控制参数:

  • k1决定了车模是否能够稳定到垂直平衡位置,它必须大于重力加速度;

  • k2决定了车模回到垂直位置的阻尼系数,选取合适的阻尼系数可以保证车模尽快稳定在垂直位置

根据以上分析可以得到,控制车模直立的条件如下:

  1. 能够精确测量车模倾角θ 的大小和角速度θ ’ 的大小
  2. 可以控制车轮的加速度

通过惯性测量单元IMU可以测得车模倾角和角速度,通过改变施加在电机上的PWM值可以改变车轮的加速度,到此根据直立控制原理我们已经可以搭出可以直立的车模了,但该车模的抗干扰能力很弱:例如车模受到前进方向的轻微扰动,车模便会向前倾斜并一直向前加速直至最终倒下。为提高车模的抗干扰能力还需要添加速度控制。

速度控制

由于速度控制过程中需要始终保持车模的直立,平衡车的速度控制过程更加复杂,这里仅从直观感受上分析以下:假设车模开始保持静止,然后增加给定速度,为此需要车模往前倾斜以便获得加速度。在车模直立控制下,为了能够有一个往前的倾斜角度,车轮需要往后运动,这样会引起车轮速度下降(因为车轮往负方向运动了)。由于负反馈,使得车模往前倾角需要更大。如此循环,车模很快就会倾倒。原本利用负反馈进行速度控制反而成了**“正”反馈**。

dfs

速度控制实际是通过控制车模的倾角实现的,若采用此种方式会涉及到PID级联的一些知识(后面单独分析,若想实现速度恒定或站立在倾斜的平面上需要采用此种方式)。根据《直立平衡车模参考设计方案》速度控制章节的分析我们知道:经过一系列的简化改进,速度控制已经演变成的对电机的直接控制,但需要注意直立控制是平衡控制的核心,速度控制要尽可能减少对直立控制的干扰因此速度控制要平滑滤波(减小控制参数或将速度控制量分配到多个直立控制周期输出)。

在这里插入图片描述

方向控制

方向控制实际是通过对电机的差分控制实现的,方向控制也要尽可能减少对直立控制的干扰。

在这里插入图片描述

总结

三个分解后的任务各自独立进行控制。由于最终都是对同一个控制对象(车模的电机)进行控制,所以它们之间存在着耦合。

这三个任务中保持车模平衡是关键。由于车模同时受到三种控制的影响,从车模平衡控制的角度来看,其它两个控制就成为它的干扰。因此对车模速度、方向的控制应该尽量保持平滑,以减少对于平衡控制的干扰。

持车模平衡是关键。由于车模同时受到三种控制的影响,从车模平衡控制的角度来看,其它两个控制就成为它的干扰。因此对车模速度、方向的控制应该尽量保持平滑,以减少对于平衡控制的干扰。

sd

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

平衡车制作---原理篇 的相关文章

  • 基础操作之无线数传、电台的通讯机制设定

    1 心跳机制机制 外文名heartbeat mechanism 心跳机制是定时发送一个自定义的结构体 心跳包 xff0c 让对方知道自己还活着 xff0c 以确保连接的有效性的机制 心跳包之所以叫心跳包是因为 xff1a 它像心跳一样每隔固
  • 基础操作之按键消抖

    机械弹性开关 xff1a 当机械触点断开 闭合时 xff0c 由于机械触点的弹性作用 xff0c 一个按键开关在闭合时不会马上就稳定的接通 xff0c 在断开时也不会一下子彻底断开 xff0c 而是在闭合和断开的瞬间伴随了一连串的抖动 xf
  • 关于无人机的智能吊舱项目的开发小结

    智能吊舱是基于光电吊舱项目之上 xff0c 加入AI的深度学习算法的一种应用 xff1b 在巡检的各类使用将发挥重要作用 xff01 我要实现的操作是 xff1a 我在飞机地面站上预置好飞机的航线航点 xff08 就是飞机需要巡逻的航线和需
  • stm32的LWIP在无操作系统下TCP功能加入双路IP

    1 stm32f207 xff0c 无操作系统 xff0c LWIP 1 3 2 xff0c 开发TCP服务器下的双路ip xff1b 实现前提 xff1a 先调通 xff0c 实现单路IP xff1b 参考帖子 xff08 然而最后的感觉
  • linux 小项目开发-1-概括和start(linux-SPI驱动小结)

    项目的要求 xff1a 环境温度的检测和报警系统 系统介绍 xff1a 实时读取环境温度 读 写IIC接口的EEPROM 控制管显示 按键编程 串口 网口输出数据 LED显示闪烁报警 蜂鸣器响声告警 xff0c 本地GUI显示状态 xff0
  • 【Linux系统获取时间的函数】

    文章目录 前言Linux的API获取时间 time函数 gettimeofday函数 time函数 gettimeofday函数使用代码示例 时间转换 ctime函数 ctime函数使用代码示例 asctime函数 asctime函数使用代
  • docker: invalid reference format.

    不是 的问题的话 xff0c 就是这个问题 今天 xff0c 有一个网友在做毕业设计 xff0c 说是用用 docker xff0c 但是在执行 docker run 的时候 xff0c 报错了 xff0c 提示 docker invali
  • docker build 用法

    在包含Dockerfile 文件的目录下执行 xff1a docker build t nginx v3 即是创建了镜像 docker build 命令进行镜像构建 其格式为 xff1a docker build 选项 lt 上下文路径 U
  • Docker 镜像备份与迁移

    1 容器保存为镜像 docker commit pinyougou nginx mynginx pinyougou nginx 是容器名称 mynginx 是新的镜像名称 2 镜像导出 docker save o dockerdemo ta
  • android T 前台Service

    获取android 13 用户控制 用户在长时间运行的应用程序上获得更多透明度和控制权 xff1a 前台服务仍然需要包含通知 xff0c 并且应用程序必须请求权限才能显示通知 FGS 通知现在可以被用户关闭而不影响 FGS用户可以在任务管理
  • android 8.0+后台Service限制

    后台Service限制 背景 每次在后台运行时 xff0c 应用都会消耗一部分有限的设备资源 xff0c 例如 RAM 这可能会影响用户体验 xff0c 如果用户正在使用占用大量资源的应用 xff08 例如玩游戏或观看视频 xff09 xf
  • CMake入门(一)Ubuntu下使用和Window下使用

    引用一段知乎上关于 xff1a CMake 如何入门 xff1f 生态如此 xff0c 长久来看 xff0c 绕不开 就像Github 看了下 xff1a B站上的一个资源 cmake构建c 43 43 项目快速入门2 1 在Windows
  • 安装ubuntu成功后不能重启(nomodeset)躺坑记录acpi int3400:00:Unsupported event

    针对这篇文章的补充 xff1a 安装ubuntu成功后不能重启 xff08 nomodeset xff09 legalhighhigh的博客 CSDN博客 如果找不到 34 Boot Options ed boot 61 initrd 61
  • npm install 出现错误 unable to access ‘https://github.com/adobe-webplatform/eve.git/‘:

    前言 xff1a 输入命令 npm install registry 61 https registry npm taobao org xff0c 出现错误 unable to access 39 https github com adob
  • Kubernetes初识

    一 Kubernetes是什么 xff1f xff08 一 xff09 读音 了解一个新事物 xff0c 最先学会都是怎么读 xff0c 不然以后会一直读错下去 xff0c 到时候说出去可能就会被人嘲笑 Kubernetes xff0c 读
  • Linux操作系统基本代码

    1 xff08 ls xff09 list 列出目录的所有项 ls 查看当前目录 xff08 ls l 文件路径 xff09 以详细模式查看 xff08 ls xff5e xff09 展示主目录文件 xff08 ls xff09 展示当前目
  • C语言 const、static、volatile等关键字的作用

    目录 前言 const static volatile extern 总结 前言 C语言里面有许多关键字 xff0c 本文结合我自己的了解简单讲讲几个常用关键字的作用 const 问 xff1a const有什么用 xff1f 答 xff1
  • 函数调用,中断以及进程切换,的现场保护的区别

    注意以下过程描述了两种armv7指令集的内核的中断表现 xff08 cortex A7和cortex m3 xff09 xff0c 但是cortex A7和cortex m3表现很不一样 xff0c 因为Cortex m3只有用户级和特权级
  • Cortex-M3 PendSV 中断 系统调用 说明

    参考 Cortex M3权威指南中文版 PendSV异常是和系统调用有些类似 xff0c cpu 需要手动将往NVIC 的PendSV 悬起寄存器中写1 xff0c 然后产生中断 xff0c 系统调用 xff08 SVC xff09 是co
  • 微积分的直观理解

    在微积分中 xff0c 我们进行定积分计算的时候一般是用牛顿莱布尼兹公式 xff0c 不定积分计算也类似 xff0c 都需要寻找原函数F x xff0c 但是如果想直观的理解微积分 xff0c 我们需要顺着公式的反方向进行理解 xff0c

随机推荐

  • Makefile中调用make命令,-C和-f选项的区别

    C选项 Makefile中 C是递归调用子目录中的Makefile xff0c C选项后跟目录 xff0c 表示到子目录下执行子目录的Makefile xff0c 顶层Makefile中的export的变量还有make默认的变量是可以传递给
  • 卡尔曼滤波

    标准卡尔曼滤波推导相关 预测 predict 更新 update 注意 xff0c 以下对于时间的下标 xff0c 有的时候用t有的时候用k xff0c 它们其实是一样的 xff0c 因为参考不同的资料 xff0c 所以写的比较乱 其中是隐
  • EM算法原理

    Notion The all in one workspace for your notes tasks wikis and databases
  • Android ko module compile 简介

    Notion The all in one workspace for your notes tasks wikis and databases
  • volatile c语言关键字 / cache / 内存一致性

    Notion The all in one workspace for your notes tasks wikis and databases
  • Qt中的QWidget::move函数

    QWidget move函数 原型 xff1a void move int x int y void move const QPoint amp 其中move的原点是父窗口的左上角 xff0c 如果没有父窗口 xff0c 则桌面即为父窗口
  • 欧拉角和万向节死锁

    一 什么是欧拉角 欧拉角就是物体绕坐标系三个坐标轴 xff08 x xff0c y xff0c z轴 xff09 的旋转角度 xff0c 在这里坐标系可以是世界坐标系 xff0c 也可以是物体坐标系 xff0c 旋转顺序也是任意的 xff0
  • 【freeRTOS内存管理策略详解】

    内存管理对应用程序和操作系统来说都非常重要 现在很多的程序漏洞和运行崩溃都和内存分配使用错误有关 FreeRTOS操作系统将内核与内存管理分开实现 xff0c 操作系统内核仅规定了必要的内存管理函数原型 xff0c 而不关心这些内存管理函数
  • NGFF、M.2、PCIe、NVMe概念区分以及PCIEx1 x4 x8 x16区别

    对于NGFF M 2 PCIe NVMe等概念的说明 解决方案 NGFF Next Generation Form Factor xff0c 顾名思义 xff0c 是物理外形 Form Factor 的标准 与 NGFF 并列的是 2 5
  • 二重积分和雅可比行列式

    我们以二重积分为例进行说明 xff0c 首先说结论 xff1a 一 结论 若x 61 x u v y 61 y u v 存在偏导数 xff0c 则二阶雅可比行列式为 61 61 dxdy 61 J2 dudv J2的绝对值 且 其中积分区域
  • 雅可比行列式和雅可比矩阵

    接触雅可比行列式是在二重积分的变量变换中 xff0c 参见我的另一篇文章https blog csdn net xiaoyink article details 88432372 下面我们来详细说明一下雅可比行列式和雅可比矩阵 雅可比矩阵
  • jlink-v8 固件修复

    一 先说 jlink v8 v9 v10区别 v8基本价格在40左右 xff0c 芯片是atml的 xff0c 但是很多反应是掉固件和提示盗版问题 v9现在主流 xff0c 盗版价100左右 xff0c 主控芯片stm32 做的比较成熟 x
  • kubernetes学习-快速上手速查手册

    目录 使用k3s快速搭建k8s安装k8s dashboard使用Helm部署K8S资源k8s核心命令一切推倒重来资源创建方式NamespacePodDeploymentServiceIngress解决官网Ingress安装不了问题使用方式
  • 作为一个4年程序员至少需要掌握的专业技能

    一名3年工作经验的程序员应该具备的技能 xff0c 在机缘巧合之中 xff0c 看了这篇博客 感觉自己真的是很差 xff0c 一直想着会写if else 就已经是一名程序员了 xff0c 在工作之余也很少学习 于是 xff0c 自己的cod
  • C语言与C++的区别

    一 C 43 43 简介 本贾尼 斯特劳斯特鲁普 于1979年4月在贝尔实验室负责分析UNIX系统的内核的流量情况 于1979年10月开始着手开发一种新的编程语言 在C语言的基础上增加了面向对象机制 这就是C 43 43 的来历 在1983
  • 我的2011-当梦想照进现实

    我的2011年 xff0c 之所以是现在的样子 xff0c 始缘于我三年前的一个决定 离职考研 对于工作了两年的我来说 xff0c 离职考研是人生的一场博弈 我的2011年 xff0c 结束了研究生期间对三维骨骼动画渲染的相关研究 xff0
  • Dockerfile RUN 同时执行多条命令

    Dockerfile RUN 同时执行多条命令 Dokcerfile中的命令每执行一条即产生一个新的镜像 xff0c 当前命令总是在最新的镜像上执行 如下Dockerfile xff1a RUN span class hljs built
  • HC-SR04超声波模块使用记录

    文章目录 HC SR04超声波模块使用记录轮询测量方式一 模块使用中的问题二 应对方法三 注意 分时测量利用输入捕获测量利用输入捕获测量 HC SR04超声波模块使用记录 具体使用方法见HC SR04使用手册 xff0c 本文重点记录该模块
  • 【C语言冒泡排序、选择排序和快速排序】

    文章目录 前言一 冒泡排序二 选择排序三 快速排序四 代码设计与实现代码设计代码实现 调试结果冒泡排序改良 延伸思考总结 前言 本文简单介绍了C语言的冒泡排序 选择排序 快速排序 xff0c 结合本人的理解与使用做一下记录 一 冒泡排序 思
  • 平衡车制作---原理篇

    平衡车制作 原理篇 文章目录 平衡车制作 原理篇前言直立控制直观感受内部机理 速度控制方向控制总结 前言 本篇教程内容主要来自于 直立平衡车模参考设计方案 xff0c 且这里是从概念层面讲述的并没有具体的控制理论方面的内容 有了这些概念方面