英语词典,利用BST,AVL建立词典树
2021-12-14 21:08:21 1.66MB c++ mfc 二叉树 CUG
1
针对传统LQR最优控制器权重矩阵确定困难以及由此导致的响应速度慢等问题,以具有多变量、强耦合、非线性特点的两轮自平衡小车为被控对象,提出了一种通过遗传算法实现LQR控制器参数寻优的方法。选择线性二次型性能指标为目标函数,利用遗传算法的全局优化搜索能力,获取权阵Q的最优解,从而设计状态反馈控制率K,搭建系统动力学模型进行仿真实验。实验结果表明:该方法设计的最优控制器相对于传统的极点配置和LQR方法具有更好的控制效果,系统响应速度更快,超调更小。
2021-12-14 18:46:03 694KB 行业研究
1
主程序: #include "sys.h" u8 Flag_Left,Flag_Right; // u8 Flag_Stop=1,Flag_Zero=0,Flag_Show,Flag_Qian,Flag_Hou,Flag_Left,Flag_Right,Flag_OK; //停止标志位和 显示标志位 默认停止 显示打开 float Motor_X,Motor_Y,Motor_Z; long int Motor_A,Motor_B,Motor_C; //电机PWM变量 long int Target_A,Target_B,Target_C; //电机目标值 int Voltage; //电池电压采样相关的变量 float Show_Data1,Show_Data2,Show_Data3,Show_Data4; //全局显示变量,用于显示需要查看的数据 u8 delay_50,delay_flag; //延时相关变量 u8 PID_Send; //CAN和串口控制相关变量 float Pitch,Roll,Yaw,Move_X,Move_Y,Move_Z,Roll_Bias,Pitch_Bias,Roll_Zero,Pitch_Zero; float Balance_Kp=200,Balance_Kd=19,Velocity_Kp=55,Velocity_Ki=10; //位置控制PID参数 int main(void) { Stm32_Clock_Init(9); //=====系统时钟设置 delay_init(72); //=====延时初始化 JTAG_Set(JTAG_SWD_DISABLE); //=====关闭JTAG接口 JTAG_Set(SWD_ENABLE); //=====打开SWD接口 可以利用主板的SWD接口调试 LED_Init(); //=====初始化与 LED 连接的硬件接口 KEY_Init(); //=====按键初始化 OLED_Init(); //=====OLED初始化 uart_init(72,128000); //=====串口1初始化 uart2_init(36,9600); //=====串口2初始化 uart3_init(36,115200); //=====串口3初始化 Adc_Init(); //=====adc初始化 IIC_Init(); //=====IIC初始化 delay_ms(50); MPU6050_initialize(); //=====MPU6050初始化 DMP_Init(); //=====初始化DMP delay_ms(500); //=====延时等待初始化稳定 EXTI_Init(); //=====MPU6050 5ms定时中断初始化 CAN1_Mode_Init(1,2,3,6,0); //=====CAN初始化 MiniBalance_PWM_Init(7199,14); //=====初始化PWM 用于驱动电机 while(1) { if(Flag_Show==0) { DataScope(); //===上位机 delay_flag=1; //===50ms中断精准延时标志位 oled_show(); //===显示屏打开 while(delay_flag); //===50ms中断精准延时 主要是波形显示上位机需要严格的50ms传输周期 } else { APP_Show(); //===APP oled_show(); //===显示屏打开 delay_flag=
2021-12-14 18:04:26 4.43MB STM32F103 球轮机器人 平衡机器人
主程序: #include "gyro.h" #include "pid.h" #include "motor.h" #define dt 10 // in ms /* Object definitions and settings */ Gyro myGyro(dt); PIDControl pid(1.0,0,0.005,-255,255,dt); OmniMotorDriver omd; /* Deadzone definition. With a rotation of less than this value, * the robot will stand still */ double deadzone = 1.5; /* Buffers for timing, gyro data and PID outputs */ long lastMillis; double xAngle, yAngle; double xOut, yOut; /* Main setup call * Initializes Serial, the IMU and prepares the motor driver, * calbriates the IMU and enables the PID controller */ void setup() { pinMode(13, OUTPUT); Serial.begin(115200); if(!myGyro.init()) { while(1) { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(2000); } } myGyro.calibrate(); omd.init(); pid.enable(); } /* Main loop * The main loop connects all the libraries and classes together, * in that it describes the order of function calls that is necessary * for the function of the robot */ void loop() { /* Save the current point in time in lastMillis */ lastMillis = millis(); /* Get Data from Gyro */ myGyro.update(&xAngle, &yAngle); /* Compute PID Output with the data */ pid.compute(xAngle, yAngle, &xOut, &yOut); /* Plot Angle on Serial Plotter Serial.print(xAngle); Serial.print(" "); Serial.print(yAngle); Serial.println(" "); */ /* Plot Angle on Serial Plotter Serial.print(xOut); Serial.print(" "); Serial.println(yOut); */ /* If any calculated angle is larger than the deadzone */ if(abs(xAngle) > deadzone || abs(yAngle) > deadzone) { /* Actually drive the motors */ omd.drive(xOut, yOut); /* Otherwise, stop them */ } else omd.stop(); /* Wait until the next dt cycle * if processing took less than dt, wait for the remaining time, * otherwise wait for the next full cycle to start * This is needed for gyro and PID accuracy */ int pTime = millis() - lastMillis; int resttime = (dt > pTime
2021-12-14 18:04:26 66.38MB Arduino 球轮机器人 PID平衡 3D建模
两轮平衡车项目投资可行性研究报告.pdf
2021-12-14 14:00:08 1.56MB
求解交通平衡配流问题的新算法,张灿,杨永超,交通平衡配流问题是交通网络建模的基础问题. 本文以配流平衡为目标,通过深入分析交通平衡配流问题的数学性质,研究了求解交通分�
2021-12-14 10:29:36 422KB 首发论文
1
输入一组关键字序列,并以此顺序建立一棵平衡二叉树(提示:为简化运算,可采用含有左、右子树高度和指向父母的指针的三叉链表表示),并在建树过程中用逆中序法输出每次插入新结点后的平衡二叉树形状。
2021-12-14 07:49:53 4KB 平衡二叉树 数据结构
1
本文实例讲述了C语言数据结构之平衡二叉树(AVL树)实现方法。分享给大家供大家参考,具体如下: AVL树是每个结点的左子树和右子树的高度最多差1的二叉查找树。 要维持这个树,必须在插入和删除的时候都检测是否出现破坏树结构的情况。然后立刻进行调整。 看了好久,网上各种各种的AVL树,千奇百怪。 关键是要理解插入的时候旋转的概念。 // // AvlTree.h // HelloWorld // Created by feiyin001 on 17/1/9. // Copyright (c) 2017年 FableGame. All rights reserved. // #ifndef __H
2021-12-13 14:43:22 66KB const c语言 二叉树
1
平衡小车制作软硬件技术资料,AD设计的原理图+PCB,STM32源码,蓝牙,app CAD图及3D加工图.zip MCU源代码 原理图和PCB及BOM表格 安卓蓝牙遥控器APK及源码.zip 小车实物图.jpg 电路板3d图.png 电路板实物图.jpg 01 - 运动控制MCU源代码(STM32F103RCT6) 02 - 姿态解算MCU源代码(STM32F103C8T6) AHRS.SchDoc BlueTooth.SchDoc Camera.SchDoc FrameWork.SchDoc MicroController_AHRS.SchDoc MicroController_Main.SchDoc MotorDriver.SchDoc Power.SchDoc Socket&Hole.SchDoc WIFI2UART.SchDoc 自平衡小车主控板.PcbDoc 自平衡小车主控板.PrjPcb
smote的matlab代码不平衡数据问题 在机器学习中,我们经常会遇到不平衡的数据。 例如,在银行的信用数据中,97% 的客户可以按时还款,而只有 3% 的客户不能。 如果我们忽略 3% 无法按时付款的客户,模型的准确率可能仍然很高,但可能会给银行带来巨大的损失。 因此,我们需要适当的方法来平衡数据。 许多研究论文提供了许多技术,包括过采样和欠采样,以处理数据不平衡。 该存储库实现了其中一些技术。 要求 sklearn numpy SMOTE SMOTE 是 NV Chawla、KW Bowyer、LO Hall 和 WP Kegelmeyer 的论文中提到的一种合成少数过采样技术 Parameters ---------- sample 2D (numpy)array minority class samples N Integer amount of SMOTE N% k Integer number of nearest neighbors k k <= number of minority class samples Attributes ---------- newInde
2021-12-11 00:04:28 155KB 系统开源
1