角动量守恒原理:

对于单个转动物质:角动量L=I*w(I:转动惯量,w:转动角速度)

一般形状的物体转动惯量计算如下:

1、对于细杆

(1)当回转轴过杆的中点(质心)并垂直于杆时,其中m是杆的质量,L是杆的长度,则转动惯量计算公式如下:

(2)当回转轴过杆的端点并垂直于杆时,其中m是杆的质量,L是杆的长度,则转动惯量计算公式如下:

2、对于圆柱体

当回转轴是圆柱体轴线时,其中m是圆柱体的质量,r是圆柱体的半径,则转动惯量计算公式如下:

3、对于细圆环

当回转轴通过环心且与环面垂直时,则转动惯量计算公式如下:

当回转轴通过环边缘且与环面垂直时,则转动惯量计算公式如下:

沿环的某一直径,R为其半径,则转动惯量计算公式如下:

4、对于薄圆盘

当回转轴通过中心与盘面垂直时,则转动惯量计算公式如下:

当回转轴通过边缘与盘面垂直时,R为其半径,则转动惯量计算公式如下:

5、对于空心圆柱

当回转轴为对称轴时,R1和R2分别为其内外半径,则转动惯量计算公式如下:

6、对于球壳

当回转轴为中心轴时,R为球壳半径,则转动惯量计算公式如下:

当回转轴为球壳的切线时,则转动惯量计算公式如下:

7、对于实心球体

当回转轴为球体的中心轴时,R为球体半径,则转动惯量计算公式如下:

当回转轴为球体的切线时,则转动惯量计算公式如下:

8、对于立方体

当回转轴为其中心轴时,L为立方体边长,则转动惯量计算公式如下:

当回转轴为其棱边时,则转动惯量计算公式如下:

当回转轴为其体对角线时,则转动惯量计算公式如下: :

9、对于长方体,则转动惯量计算公式如下:

当回转轴为其中心轴时,式中l1和l2是与转轴垂直的长方形的两条边长:

转动惯量的相对转动轴平移计算公式如下

I1=I0+m*S^2     其中I0是物体平移前转动惯量,S是转动轴平移距离,I1是物体平移后转动惯量

对于一个系统,里面包含有多个单一物体,则系统的角动量为:

     是系统内物体n的转动惯量,是物体n的转动速度。

我们知道对一固定点o,质点所受的合外力矩为零,则此质点的角动量矢量保持不变。这一结论叫做质点角动量守恒定律。因此对于一个合外力矩为零的系统,系统内的角动量守恒,即Ls保持不变。

如果此时系统内物体n的角动量发生变化,必有系统内其他物体合成一个与物体n相反的角动量,已维持角动量守恒。


两个转动体组成的系统角动量守恒分析:

结构如下图:蓝色圆柱体1和黄色圆柱体2,中间灰色的联动杆。

其中蓝色圆柱体内有一电机,中间灰色部分为电机输出轴,输出轴和黄色圆柱体固定。

分析这个整体系统的角动量:

t=0时,电机转速为0,蓝色L1和黄色L2的角动量都为零

t=1时,电机转速不为0,角速度为w2,此时黄色圆柱体L2=I2*W2;因为角动量守恒因此有L1=-L2=I1*W1。即w1=I2*W2/I1

因此可以通过电机控制黄色圆柱体的转动速度,来反作用控制蓝色圆柱体的转动速度和方向。


自平衡结构与控制:

简易自平衡结构如下:蓝色手柄状立在桌面,黄色圆柱体连接电机安装在蓝色手柄上。

如上图

(1)到达平衡点时,蓝色圆柱体垂直立在桌面,黄色圆柱体为顺时针角速度w2(即电机转速)

(2)蓝色圆柱体发生扰动时

2.1蓝色圆柱体向左边扰动倾斜,此时蓝色圆柱体需要一个顺时针的转动(相对电机中心点)来抵消这个扰动。因为黄色蓝色物体组成系统在一个轻扰动作用下是角动量守恒,通过上面的两个转动体组成的系统角动量守恒分析可以知道自平衡的原理,让蓝色圆柱体产生一个顺时针的转动,需要黄色物体逆时针转动或者顺时针的转动速度减小。

2.2蓝色圆柱体向右边扰动倾斜,分析如同2.1


控制代码与算法:

由上面角动量守恒式子知道,需要知道系统内黄色和蓝色物体的转动惯量以及角速度,通过计算角速度的变化,计算出需要补偿的反向角速度变化。

结合输入变化和闭环反馈计算,可以使用PID算法,快速响应输出。

PID计算出电机的转速(实际是用PWM控制)

float PWM_Control(float Angle,float Gyro)
{  float Bias;int PWM;Bias=Angle-Middle;  //===求出平衡的角度中值 和机械等重心分布相关PWM=Balance_KP*Bias+Gyro*Balance_KD;   //===计算平衡控制的电机PWM  PD控制   kp是P系数 kd是D系数 return PWM;
}

下面是定时中断中执行,更新扰动位置,更新PID输入与输出(控制电动转速)

       Encoder=Read_Encoder(3);         //===Balance为了保证M法测速的时间基准,首先读取编码器数据Encoder_Walk=Read_Encoder(2);     Read_DMP();                                       //===更新姿态      Adjust=Get_Adc(Adjust_Ch); Middle=(Adjust-POTENTIOMETER)/392+3-Encoder/35;       //+Motor_TurnGet_RC(Flag_Direction);   Motor_Walk=Walk_Control(Encoder_Walk,Target_Walk),           //直立Motor_PWM=Balance_Control(Pitch,gyro[1])+Position_Control(Encoder);   //动量  //Xianfu_Pwm(7000,110);                                 //===PWM限幅if(Turn_Off(Pitch,Voltage)==0)     Set_Pwm(-Motor_PWM,Motor_Walk,Motor_Turn);                   //===赋值给PWM寄存器    

在自平衡中角动量守恒的原理分析相关推荐

  1. SpringBoot中事务执行原理分析(一)

    关联博文: SpringBoot中事务执行原理分析(一) SpringBoot中事务执行原理分析(二) SpringBoot中事务执行原理分析(三) SpringBoot中事务执行原理分析(四) Sp ...

  2. Android 中的dm-verity原理分析

    [-] Android 中的Verified Boot之dm-verity 相关原理 为什么要使用dm-verity Dm-verity的工作流程 Dm-verity的实现 接口 Deveice Ma ...

  3. List中subList方法抛出异常java.util.ConcurrentModificationException原理分析

    1.首先从测试代码开始: public class Test {public static void main(String[] args) {List<Integer> list = n ...

  4. common-collections中Java反序列化漏洞导致的RCE原理分析

    2019独角兽企业重金招聘Python工程师标准>>> common-collections中Java反序列化漏洞导致的RCE原理分析 隐形人真忙 · 2015/11/11 22:4 ...

  5. 《PHP与MySQL程序设计(第四版)》中第73页4.2.6节分期还贷计算器数学原理分析

    -----------------------------<PHP与MySQL程序设计(第四版)>中第73页4.2.6节分期还贷计算器数学原理分析. <PHP与MySQL程序设计(第 ...

  6. android中so文件格式详解,[原创]一 Android ELF系列:ELF文件格式简析到linker的链接so文件原理分析...

    Android ELF系列:ELF文件格式简析和linker的链接so文件原理分析 Android ELF系列:实现一个so文件加载器 Android ELF系列:手写一个so文件(包含两个导出函数) ...

  7. 【Kotlin】Kotlin 中使用 Lambda 表达式替代对象表达式原理分析 ( 尾随 Lambda - Trailing Lambda 语法 | 接口对象表达式 = 接口#函数类型对象 )

    文章目录 一.尾随 Lambda - Trailing Lambda 语法 二.Kotlin 中使用 Lambda 表达式替代对象表达式原理 1.Lambda 替换对象表达式 2.原理分析 3.示例分 ...

  8. python运算结果是浮点数_Python中的浮点数原理与运算分析 python中浮点数等于整数?为什么?...

    python的浮点数运算是不是精度有问题阿 python中浮点数的处理女生啊,平时要好好护肤,保持身材,多看书,多旅行,有自己的想法,去做自己喜欢的事,培养自信,不要把精力全部用在一个男人身上,成天胡 ...

  9. JDK 中的 BIO 实现原理分析(二十)

    今天对JDK 中的 BIO 实现原理进行分析 一.简介 对比 Linux 上网络编程,我们会发现 JDK Socket 的编程逻辑是一模一样的.实际上也是这样,JDK 网络编程也没有做很多事,主要还是 ...

  10. C++中虚析构函数的作用及其原理分析

    参考http://blog.csdn.net/xiamentingtao/article/details/55517203 C++中的虚析构函数到底什么时候有用的,什么作用呢. 一.虚析构函数的作用 ...

最新文章

  1. matlab 仿真步长,MATLAB Simulink变步长仿真与固定步长仿真简单对比
  2. 华为技术面试编码题_最佳技术编码面试准备书
  3. linux kernel中cache代码解读
  4. 读取CSV内容,根据不同的图片标签放到指定文件夹
  5. 使用Android Studio打Andorid apk包的流程
  6. 最新成果!超越AlphaZero!DeepMind让AI制霸「元宇宙」
  7. OpenCV3学习(11.8) FREAK描述符提取器
  8. AVFoundation 之数字媒体(音频)
  9. BiquadFilterNode
  10. android 两列菜单,【Android】实战开发之ListView同一个item显示2列的实现方法(仿2列商品列表)...
  11. DSP之时钟与定时器之一时钟发生器
  12. C++数据库编程 ODBC简介
  13. phpstudy php redis,phpstudy拓展redis
  14. Linux下移动硬盘,创建windows,ntfs分区并挂载
  15. 本地.m3u8播放器实现
  16. 开关量模块在报警系统中的应用
  17. 【阿旭机器学习实战】【15】人脸自动补全(多目标回归),并比较5种不同模型的预测效果
  18. 搅局者周鸿祎圆梦:忆往昔凶猛斗狠轮战群雄
  19. 苹果或正秘密研发LiFi技术
  20. UE4 安卓打包失败“Build-tool 31.0.0 is missing DX”

热门文章

  1. 量子计算机采用量子力学原理,量子力学原理及其应用.docx
  2. 常用元器件封装的命名规范-002
  3. 网页右下角弹出窗体实现代码
  4. PostgreSQL shapefile 导入导出
  5. qq群发 java_qq聊天机器人 群发工具 (java版) (三)
  6. Pr 添加字幕与自动字幕时间轴
  7. linux系统32位镜像下载,深度Linux Deepin镜像下载
  8. jquery audio在微信或者客户端需要点击两次才能正常播放的问题解决方案
  9. cdlinux中minidwep的使用
  10. teamtalk mysql.h_TeamTalk安装测试