平衡小车设计_2_设计思路

平衡小车PID调参新思路:用合宙ESP32-C3的BLE功能实现无线数据收发(附完整Arduino代码) 本文介绍了利用合宙ESP32-C3的BLE功能实现平衡小车无线PID调参的创新方案。通过BLE技术,开发者可以摆脱有线连接的束缚,实现高效、低功耗的实时数据交互。文章详细解析了ESP32-C3 BLE通信框架搭建、双向数据协议设计及调参实战技巧,并附完整Arduino代码,显著提升调试效率。 阅读详情

平衡小车设计_2_设计思路

 

自平衡小车最基本的要求是小车能够站立,其核心在于电机的控制,本设计采用PID控制,不需要对控制系统建立精确的数学模型,只需要对小车运动机理稍作分析,适当选取被控量、控制规律以及控制器参数即可。

自平衡小车可以视为一个小车摆杆系统,小车摆杆系统的物理模型如下图。

小车摆杆系统物理模型

                  

当摆杆具有向右倒下的倾向,小车应加速向右运动,克服摆杆惯性,使摆杆回到竖直静止状态;反之,当摆杆具有向左倒下的倾向,小车应加速向左运动。

因此,在原理上只需要对系统施加角度环控制(原理图如下图):角度PD控制规律,选取适当的参数即可使小车直立,这里P参数主要用于消除误差,D参数主要用于减小、消除低频振荡(提高P参数的最大取值),而P越大,系统稳态误差越小,由于P无法取到无穷大,稳态误差一定存在,因而小车难以保持长时间静止直立,在直立一段时间后会向一个方向倒去,理想情况下,P参数适当,刚好抵消回复力作用,小车会匀速向前运动;如果P参数较小,回复力的作用较强,小车加速最终倒下;如果P参数较大,小车会经过振荡回到短时静止直立状态。而这里不施加I控制规律的原因有两点:第一,运动过程中姿态检测信号中混杂着较大的噪声,噪声会在积分环节中累加,产生控制误差;第二,车轮与地面的摩擦产生阻尼作用,抵消倾角误差的增加,积分环节无法对其进行无差控制。

角度环原理图

                                                             

 

经过上面的分析,小车能够保持直立,为了使小车保持静止,需要添加其它的辅助手段。上面的分析得出,在参数选择最理想的情况下,小车会匀速行驶。因此,引入转速环控制(原理图如下图):转速PI控制,选取适当的控制器参数即可使小车基本静止直立。控制机理:当小车匀速直线运动,在PI转速控制的作用下,小车的转速不断减小,可能经过一段振荡,转速达到设定值0,使小车站立的同时不向任一方向运动。但由于控制器参数不理想、电机存在死区等原因,小车难以保持真正意义上的静止直立,而是会在一个非常小的范围内缓慢振荡。这里,如果使用步进精度高的步进电机,能使小车看起来静止直立。为了使小车前后运动,可以在积分作用中人为加入误差,使小车转速产生偏差,在直立的同时向某一方向运动,由于两个电机、驱动电路参数并非完全对称等原因,小车无法保证直线行驶。

转速环原理图

 

 

经过上面的分析,小车能够保持静止直立或近似匀速直线运动,为了使小车走得更笔直、或者使其转向,可以引入转向环控制(原理图如下图):模糊PD控制,适当选取控制器参数使之基本符合设计要求。小车处于非转向状态下(静止直立、直行),使用小车转向角进行D调节,当小车偏离直线,小车在D控制器作用下抑制偏移角,达到短距离近似直行的效果;小车处于转向状态下,利用小车转速进行P调节 ,人为给定一个非0的转向速度,使左右两轮转速产生偏差,从而达到转向的目的,为了使转向更平滑,可以对设定值进行平滑处理,即使设定值按一定规律递增至阈值;为了行驶过程中转向更及时,可根据转向前的瞬时速度给定一个较大的递增值,使小车迅速转向。

转向环原理图

 

注意:为了保持小车直立,角度环应采用负反馈;而为了保持小车静止,转速环应采用正反馈:当小车向某一方向前进,为了使小车静止直立,应使之先加速向前,使倾角回复,再在角度环作用下减速至静止;而转向环为了保持直行、按给定偏差转向,应采用负反馈。

综上分析,自平衡小车完成静止直立、直行、转向等功能,控制算法上需要角度环、转速环、转向环分别对倾角进行负反馈PD控制、对转速进行正反馈PI控制、对转向角以及左右两电机转速差进行负反馈模糊PD控制。

基于stm32的两轮自平衡小车2(原理篇) 该篇为原理篇,是理论分析的部分,本人水平有限,有些地方还没能理解透彻,如有不足的地方恳请指出,非常感谢!内容详见目录。 目录 硬件框图 运动分析 PID算法 定时器PWM输出 定时器编码器模式 六轴传感器获取角度 ... 阅读详情

相关推荐

从零开始写STM32平衡小车代码,从0到1

从零开始写STM32平衡小车代码,从0到1教你从零开始写STM32平衡小车代码前言:本人也是学生,只是分享一下自己的设计思路与代码教学。这次STM32平衡小车是基于STM32CubeMX软件生成HAL库代码编写。第一部分:前期准备这部分主要是关于组装基本平衡小车需要的零件1.小车车架以及电机固定架轮子和联轴器(我是通过淘宝上购买的)2.带有编码器的直流电机3.直流电机驱动电路(也可以通过网上购买推荐大鱼电子的电机驱动价格:30+)4.一个STM32最小系统板(本人芯片型号为STM32F103ZET6)5.一

专注单片机实战教学,分享单片机学习资料 8647

平衡小车转向环分析与代码实现

前言 本文将对平衡小车转向环控制方式进行分析并用代码实现,平衡小车基于STM32。

微光feng的博客 1万+

《平衡小车控制系统》电子设计大赛校赛感悟

《平衡小车控制系统》电子设计大赛校赛的方案与感悟。

2301_79578379的博客 2030

两轮自平衡车系统的模型构建

当检测到车体向前倾斜时,内部电机加速旋转产生一个向前的加速度,这个加速度使得在双轮轴心上方的重心向后摆动,这就抵消了车体的向前倾斜,使车体的重心回到两轮中心轴的正上方,从而在竖直方向保持平衡。图1 平衡车系统平衡原理图。输出变量:​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​。其中,M——小车质量 m——摆杆质量 b——小车的摩擦系数。(1)y与x1(x)之间的传递函数为:​​​​​​​​​​​​​​。(2)y与x3(φ)之间的传递函数为: ​​​​​​​。

qq_54808408的博客 6006

14、基于STM32的平衡小车设计

在科技不断发展进步的今天,对平衡小车的研究具有很重要的意义,现如今各高校在对小车平衡小车的研究上也在不断的投入资源,更是每一年的电子设计竞赛都会选择这类控制类的设计来刺激同学们对其相关控制策略的研究。这不仅提高了学生的学习积极性,更是提高了同学们对科学的认识。本文介绍一下基于STM32单片机的平衡小车系统的设计。系统基于陀螺仪等传感器利用PID平衡算法对小车的速度倾斜角度平衡状态来进行检测并通过单片机来控制电机来实现双轮小车自如平衡地运动。

行走的皮卡丘 1626

毕业论文 | 基于STM32的双轮平衡小车设计(基于Keil5的完整注释版代码工程,原器件清单)

博主github:https://github.com/MichaelBeechan 博主优快云:https://blog.youkuaiyun.com/u011344545 预告:代码及文档下载 方案分析 1、基于STM32F103C8T6 单片机的双轮自平衡小车系统; 2、以 MPU6050 三轴陀螺仪加速计为传感器的姿态感知系统; 3、通过卡尔曼滤波对传感器的数据进行滤波融合; 4、采用PID算法实现小车两轮自平衡; 5、使用 TB6612电机驱动模块实现小车的驱动电机,综合实现小车的直立行走。 零、目的与意

尘世冰封的专栏 6870

我现在发现平衡小车之家里的平衡车,角度环和速度环直接相加,在数学表达式上是和串级PID一样的!

我现在发现平衡小车之家里的平衡车,角度环和速度环直接相加,在数学表达式上是和串级PID一样的!!!!!!!!! 这也是为什么它说没有直接使用串级PID,意思是间接使用了。 不过速度环变成正反馈,好好思考下。 ...

自主无人机 PX4 ROS SLAM 路径规划 MVS等技术分享 6657

基于嵌入式系统的平衡循迹小车设计与实现

平衡循迹小车是一种集机械结构、传感器技术、自动控制理论和嵌入式系统于一体的典型智能移动机器人。其核心功能在于实现动态自平衡与路径追踪的双重控制目标,广泛应用于教学实践、科研验证与工程原型开发。本章将从整体系统角度出发,阐述平衡循迹小车的基本工作原理与模块化架构设计。

weixin_42418754的博客 1389

【平衡小车制作】(一)硬件原理图讲解(超详解)

  大家好,之后的一系列文章我将介绍我玩平衡小车的过程以及遇到的一些问题,将这些内容记录下来分享给大家,也让大家少走一些弯路。接下来我将从硬件框架选择、软件编程、PID算法、PID调参这四个部分向大家讲解平衡小车的制作过程。   本系列平衡小车文章适合于刚刚学习STM32但感觉没有玩透,想找个项目练练手,那么平衡小车绝对适合你。同时也适合于对于平衡小车感兴趣但编程和硬件基础较差,没有关系,跟随作者将让你轻松学会制作一个属于自己的平衡小车。   

weixin_44270218的博客 7万+

使用 git一个仓库管理多个项目

我们需要在 git 里面创建一个空分支,该分支不继承任何提交,没有父节点,完全是一个干净的分支,这时候就需要使用 orphan。该命令会创建一个新的分支,并且该分支有前一个分支下的所有文件,我们不想提交任何内容,所以我们需要把当前内容全部删除。此时 master 分支已经有一个项目了,下面我们创建新的分支管理另一个项目。此时可以在该分支目录上初始化你的项目,在执行 git 命令提交代码。此时我们就完成了在同一个仓库管理不同项目的需求了。下载仓库到本地之后,进入项目目录,查看分支信息。

xrs151的博客 2027

STM32解析航模遥控器的PPM信号

使用STM32对航模遥控器的PPM信号进行解析

qq_44343584的博客 9734

平衡小车设计_5_参数整定

平衡小车设计_5_参数整定 整定顺序:角度环=>转速环=>转向环; P => I => D 整定原则: 先定极性、再定大小; 从小到大 1、角度环整定: 参数P: 1、定极性:给一个较小的值,观察小车倒下时车轮旋转方向,若小车行进方向与倒下方向相同,极性正确 2、定大小:从小到大,调至小车刚开始出现低频振荡 参数D: 1、定极性:P参...

floatinglong的博客 1329

CESM2 实验笔记

文章目录1. 重新启动1.1 关于重启文件2. RUN_TYPE 初始化运行方式startupbranchhybrid3. branch 或者 hybrid运行的示例4. 其他声明5. 关于RESUBMIT 1. 重新启动 参考: https://bb.cgd.ucar.edu/cesm/threads/how-to-restart-cesm2-1-3-fhist-from-a-backup.5245/#post-36275 适用情况:模型运行因时间不足或其它原因中断,需要继续运行 方法1:将CONTIN

qq_38607066的博客 1万+

手把手教学,平衡小车详细教程,平衡车

0、前 言原谅我起这么猛的标题,但看完,你不会来打我的。如果此项目有朋友已经做过,可以越过不看。回归正题,平衡小车,这个开源项目已经出来很多年了,虽然是...

张巧龙的博客 1万+

OmniDrive(2):环境搭建

项目中使用的是全量的数据集(full dataset v1.0), 数据量比较大,训练验证(trainval) + test 总计200多G的数据,单独一个个下载会比较慢。参数,否则安装的时候会自动卸载已安装好的torch,重新安装最新版本的torch,这是不允许的。在cuDNN官网下载,默认下载的是最新版本的cuDNN,我们这里点击。,== 博文中详细介绍了完整的cuda和cudnn的安装过程==分析: 这是因为yapf 安装的版本不对,需要安装特定的版本。出现训练的loss变化,就说明可以正常训练了。

@bangbang的博客 623

Openclaw 错误分析 与 解决方案 之:Selected model is at capacity. Try a different model, or wait and retry.

Openclaw 错误分析 与 解决方案 :Selected model is at capacity. Try a different model, or wait and retry.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 6421

自平衡小车制作

一、介绍 1、控制输入:加速度传感器和陀螺仪测得的小车倾角。当加速度传感器水平放置时,Z轴会测量到重力加速度,大小为g。当加速度传感器倾斜时,Z轴上测量的g就会变小,根据变小之前的值和之后的值,就可以算得倾角值。 这样一看似乎只需要加速度就可以获得小车的倾角,再对此信号进行微分便可以获得倾角速度。但在实际小车运行过程中,由于小车本身的摆动所产生的加速度会在Z轴上有分量,它叠...

qlexcel的专栏 6320

2024年03月CCF-GESP编程能力等级认证Python编程五级真题解析

下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入( )。 A. (yr % 400 == 0) or (yr % 4 == 0) B. ( yr % 400 == 0) or (yr % 4 == 0 and yr %100 != 0) C. ( yr % 400 == 0) and ( yr % 4 == 0) D. (yr % 400 == 0) and (yr % 4 == 0 and yr % 100 != 0)

人生就是一个不断学习的过程 746

平衡小车总结

stm32平衡小车

qq_41746574的博客 5999

强化学习算法案例——一个经典的走迷宫任务。

作者:禅与计算机程序设计艺术 1.简介 在强化学习(Reinforcement Learning, RL)中,有一个经典的任务——走迷宫,其原理简单易懂,但它的实际意义却深远,它让计算机学习如何通过策略网络(policy network),以最佳的方式解决复杂的任务。本文将介绍如何用强化学习解决这个经典

AI天才研究院 3216

# YOLOv11-seg改进系列 | 引入CVPR MetaFormer的C3k2_PoolingFormerCGLU模块,池化Token混合+CGLU门控MLP

本文引入 CVPR 2022 论文(MetaFormer/PoolFormer)提出的 MetaFormer 元架构设计,以Pooling Token 混合器 + ConvolutionalGLU(CGLU)MLP构成,将其封装为,用于替换 YOLOv11-seg 的 C3k2 块。对比维度C3k2(基线)C3k2_PoolingFormerCGLU(本文)参数量(n scale)2.46M≈2.49M9.6≈9.69.7(+1.0%)架构范式单阶段卷积MetaFormer 双阶段。

qq_44224801的博客 845

从零开始速通一台多方式控制的STM32自平衡小车【1平衡小车篇】

这个学期有个嵌入式课程设计的任务,要求用战舰V3开发板整点活出来。毫无嵌入式底子但是想搞点花头的我思来想去,最终决定搞一台多方式控制的STM32自平衡小车。整个设计可以简单的分为遥控器部分和小车部分。遥控器用的是正点原子的STM32F1战舰V3开发板;小车底盘、主控板用的是大鱼电子家的。目前已经实现:用战舰V3的按键控制;游戏手柄连接战舰V3控制;MPU6050连接战舰V3实现体感控制;键盘控制(电脑蓝牙连接小车然后键盘控制小车运动)。

qq_58979750的博客 3578

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

基于PID控制算法的自平衡机器人平衡小车设计

随着机器人研究的进一步深入,在工业生产、安防系统、智能家居、物流网等领域的应用更加广泛,在实际应用中,可能遇到复杂的任务环境。相比多轮的轮式机器人,两轮自平衡机器人体积小,运动灵活,能够在比较狭窄、需要大转角的场合中运动。这种机器人两轮共轴,可以通过运动保持自身平衡,能实现前进、后退、转向、原地静止等基本运动功能,由于其结构特殊,能适应不同的地形环境,研究两轮自平衡机器人,具有重要的意义。本设计以两轮车模为研究平台,以恩智浦公司32位微处理器MK60FX512VLQ15为控制核心。通过加速度传感器和陀螺仪,

叶绿体不忘呼吸 2049

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【STM32+HAL】二轮平衡小车

偶然获得轮趣的二轮平衡小车一套,翻阅官方资料感觉内容较为杂糅,故写下此文旨在实现简洁的二轮平衡功能。

缺积分下载资源的可以私信我或在评论区留言邮箱号 2836

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

平衡小车设计_4_PID实现

平衡小车设计_4_PID实现 参考平衡之家的算法实现 首先明确三个环的PID都是位置式PID 1、角度环:PD g_tPidA.actual=roll; g_tPidA.err=g_tPidA.actual-g_tPidA.set; g_tPidA.delta=gyrox; g_tPidA.out=g_tPidA.kp*g_tPidA.err+g_tPidA.kd...

floatinglong的博客 1480

【STM32】【HAL库】平衡小车(PID实战2)(三)PID调参

平衡车作为经典PID设计项目,非常热门,也非常适合 PID/单片机 初学的项目没有看起来那么难,愿每个人都可做出自己的平衡车本系列文章,从硬件到软件,带领大家制作平衡小车分为三节硬件设计软件设计PID调参本节是PID调参部分。

m0_57585228的博客 3778
上一篇: 平衡小车设计_1_系统组成
下一篇: 平衡小车设计_3_测速原理
floatinglong
博客等级 码龄9年 90粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值