首页 > 其他分享 >NJOPT自控第三次积分赛--风力摆小结

NJOPT自控第三次积分赛--风力摆小结

时间:2023-05-24 14:11:40浏览次数:53  
标签:github NJOPT -- pid 风力 小结 角速度

NJOPT自控第三次积分赛--风力摆小结

题目

题目就不放了,百度一搜就有,就是2015国赛的风力摆。。

方案

我们队采用的主控是STM32F401CCU6(科协传统),性能完全够用;姿态传感器采用的是经典mpu6050,也是完全够用,甚至都没用dmp库;风机采用的是空心杯电机,型号不知道,队友买的,驱动是用mos管做的;然后其他就是蓝牙串口上位机啥的了,没啥好说的。我一开始是准备计算出激光点打在地面上的位置,然后用位置pid闭环控制的,结果发现电源功率不够,吹不动。。。卡了半天,试了不少方案,才准备用角速度闭环控制。

代码在github有,链接: https://github.com/tadises/Wind_Pendulum ,测试视频:NJUPT电赛积分赛--风力摆_哔哩哔哩_bilibili,整体下来还是挺稳的,我就简单介绍下控制思路:mpu读取两个轴的角速度,然后写个pid对角速度闭环控制,设置两个正交轴的目标角速度为两个正弦信号(就是李萨如图形),然后让他吹就完事了。。。。

至于pid啥的,调起来完全不费事,甚至可以说是完全没有调。因为这玩意就是纯P控制,Kp还是2,有啥可调的。。。

总结

其他就没啥了,github仓库里的PCB,工程代码,还有3D建模图纸都有(代码写的依托答辩,还没有注释,反正参考一下就行了),就不细嗦了,特此开贴纪念。

标签:github,NJOPT,--,pid,风力,小结,角速度
From: https://www.cnblogs.com/Asaka-QianXiang/p/17428129.html

相关文章

  • 直播系统搭建,Flutter实现圆形头像的几种方法
    直播系统搭建,Flutter实现圆形头像的几种方法Flutter实现圆形头像的几种方法使用ClipRRect实现child:ClipRRect( child: Image(  image:AssetImage('images/edge.png'),  fit:BoxFit.cover,  width:100,  height:100, ), borderRadius:BorderRadi......
  • 【技术】多端能力服务统一是一种关键的技术和架构
    ​多端能力服务统一是一种关键的技术和服务架构,旨在为不同终端设备提供一致的用户体验和功能。通过采用前端和后端技术的组合,如响应式Web设计、PWA、跨平台移动应用开发框架、RESTfulAPI、GraphQL、WebSocket、Serverless架构和微服务架构,可以实现多端能力服务统一的目标。......
  • 记录一下springboot配置filter之后后端获取不到Authorization问题
    fitler中的添加headers是用逗号隔开的,如content-type,Authorization .......原先代码:res.addHeader("Access-Control-Allow-Headers","content-type");修改后:res.addHeader("Access-Control-Allow-Headers","content-type,Authorization");......
  • java-向量(Vector)
     向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。和数组一样,Vector对象的元素也能通过索引访问。使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。https://www.lekaowang.com/glhjs/hty/......
  • java-字典(Dictionary)
     字典(Dictionary)类是一个抽象类,它定义了键映射到值的数据结构。当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary。由于Dictionary类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。https://www.lekaowang.com/zjzhuceanqua......
  • java-栈(Stack)
     栈(Stack)实现了一个后进先出(LIFO)的数据结构。你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。https://www.lekaowang.com/jszgz/ocv/......
  • 分糖果
    #include<stdio.h>intj=0;intjudge(inta[]){ for(inti=1;i<10;i++) { if(a[0]!=a[i]) { return1; } } return0;}voidput(inta[]){ printf("第%d次",++j); for(inti=0;i<10;i++) { printf("%d",a[i]);......
  • java 实验总结
    (1)前言:前三次的题目集,大概囊括了最基础的输入输出、类的创建;字符串的各种操作(定位某个特点字符在字符串中的下标、提取某段需要的子字符串、对于某个字符或某个子字符串的格式判断等等)、类的交互、函数的创建与使用以及正则表达式的运用等等。题量不大,除却第一次有9个题以外,第二次......
  • windows下搭建docker容器环境
    下载DockerDesktophttps://www.docker.com/安装DockerDesktop(软件默认安装c盘,若要安装到其他盘,在安装之前创建软连接再进行安装)在自定义磁盘中创建对应文件夹,使用mklink/j“原文件夹路径”“目标文件夹路径”进行软连接的创建mklink/j“C:\ProgramFiles\Doc......
  • 存钱问题
    #include<iostream>#include<cmath>usingnamespacestd;intmain(void){inta1,a2,a3,a4,a5,n1,n2,n3,n4,n5;floatmaxm=0,tem;for(a5=0;a5<3;a5++)for(a4=0;a4<(20-a5*8)/5;a4++)for(a3=0;a3<(20-a5*8-a4*5)/3;a3++)for(a2=0;a2<(20......