热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

无刷云台之坐标转换篇

坐标转换篇先上一张云台的图片根据上图云台的结构,定义电机1、2、3,定义欧拉角PRY此图为云台处于水平位置时的状态,此时欧拉角跟电机对应关系是电机3转动也对应着Y角转动,电机2转动

坐标转换篇

先上一张云台的图片
《无刷云台之坐标转换篇》
根据上图云台的结构,定义电机1、2、3,定义欧拉角P R Y
此图为云台处于水平位置时的状态,此时欧拉角跟电机对应关系是电机3转动也对应着Y角转动,电机2转动也对应着R角转动,电机1转动对应着P角转动。此时云台只需要P轴控制输出控制电机1,R轴控制输出控制电机2,Y轴控制输出控制电机3.
而实际上电机1跟电机2连接处有一个夹角a,Y角跟电机3并不是完全的一一对应,而是需要*sin(a).

开始坐标转换

电机转动过程,a角也在不断的变化,所以同时欧拉角跟三个电机之间的夹角也会一直改变,这时就要做相应的变换来使欧拉角跟电机实现一一对应。
欧拉角是始终相对重力方向作为参考的,所以云台电机的控制也需要相对重力而做相应的变换
转动电机1,P平衡始终有电机1控制,而电机2,电机3 跟R Y的关系有可能就会对调过来,所以公式如下:
M2 = COS(a) * M2 + sin(a)* M3;
M3 = COS(a) * M3 – sin(a)* M2;
a = 90°时计算就会发现电机2电机3的控制对调了。
这是完成了坐标转换的第一种情况,还有一种情况就是R角变化,R角接近90°也会引起电机之间的关系对调,M1,M3
M1 = COS® * M1 + sin®* M3;
M3 = COS® * M3 – sin®* M1;
好了,控制到这里,还是会有问题,到底什么问题呢:
两种情况都出现怎么办
我们首先考虑欧拉角的优先级,就是R变化时引起的坐标转换到底是什么样的。
当R = 90°是,电机1 跟电机3 的控制是对调了,而且无论a角怎么变化,他们的控制关系都不会改变。所以得出结论:
a角的坐标变换只限于R小于45°情况,所以程序需要加上这个作为判断条件。
云台调试过程中由于结构原因会出现共轴的现象,
《无刷云台之坐标转换篇》
是不是发现没办法控制了呢
不慌,这个需要做电机2的限值,就是电机2偏离其中间位置时变换为跟随电机角度的控制。
这几个坐标变换我花了好几个礼拜才做到360°无死角控制,由于坐标这块需要有实物才好讲解,这里可能说的比较模糊。
同时,如有不懂欢迎留言或扣我1836703877。共同探讨云台,电子稳定器的功能实现。


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 线性Kalman滤波器在多自由度车辆悬架主动控制中的应用研究
    本文探讨了线性Kalman滤波器(LKF)在不同自由度(2、4、7)的车辆悬架系统中进行主动控制的应用。通过详细的仿真分析,展示了LKF在提升悬架性能方面的潜力,并总结了调参过程中的关键要点。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
author-avatar
nnyoyo8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有