0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

玩转OpenHarmony PID:教你打造两轮平衡车

OpenAtom OpenHarmony 来源:未知 2022-12-15 21:15 次阅读

点击蓝字 ╳ 关注我们


开源项目 OpenHarmony
是每个人的 OpenHarmony

王维平

OpenHarmony知识体系工作组


以下内容来自嘉宾分享,不代表开放原子开源基金会观点

简介

此次为大家带来的是OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统与PID控制算法相结合并落地的平衡车项目。
PID控制算法是一种经典的,并被广泛应用在控制领域的算法。类似于这种:需要将某一个物理量保持稳定的场合,比如维持平衡,稳定温度、转速等,PID都会适用。在四轴飞行器,平衡小车、汽车定速巡航、温度控制器等场景均有应用。


通过本样例的学习,开发者能够对OpenHarmony系统设备端开发有进一步的认识,还能够掌握PID控制算法的使用。本样例使用OpenHarmony 3.2 Beta1操作系统硬件平台采用小熊派BearPi-HM Nano(Hi3861)开发板。
本样例效果动图:


硬件配置资源

两轮平衡小车主要硬件资源:
主控CPU:小熊派BearPi-HM Nano(Hi3861)开发板;
陀螺仪:MPU6050六轴陀螺仪传感器
左右轮:带有霍尔传感器的直流电机
小车平台及结构件资源可以自行在相关网站获得。

原理概括


小时候都玩过上图游戏吧:木杆立在手指上,尽量保持木杆直立不倒。
当木杆向前倾斜时,我们会往前行走,以用来抵消木杆的前倾;往后倾斜时,我们会往后倒退。对的!没错!你猜对了。平衡车的控制原理就是这样:


PID算法介绍

平衡车的控制离不开对PID算法的应用。那么什么是PID算法?它能解决什么问题?
PID算法:就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种常见的“保持稳定”控制算法。


结合两轮平衡车的场景,对PID参数的认识如下:
P比例参数:该参数能够快速让小车达到平衡状态,但是由于控制是滞后的,以及是惯性系统,容易带来超调,即小车会出现前后摇摆的现象。所以P参数不能太大;
I积分参数:小车由于摩擦力或者风阻力,并且P不能太大,只靠P控制有可能达不到稳定状态,所以需要加入I积分参数,消除稳态误差;
D微分参数:平衡小车维持的是倾斜角度要为平衡角度,由于PI参数使小车振荡,小车会出现前后摇摆现象,加入D微分参数能够消除小车的振荡。

两步搭建样例工程

在OpenHarmony源码基础上,两步构建平衡小车代码。(OpenHarmony源码下载路径及BearPi-HM Nano(Hi3861)开发板代码烧录,请参考文章末尾相关链接)
第一步:
拷贝Balance_car文件夹到源码路径下:deviceoardearpiearpi_hm_nanoapp (Balance_car文件获取路径,请参考文章末尾相关链接)
如图文件夹目录:


第二步:
修改BUILD.gn,在源码路径下:deviceoardearpiearpi_hm_nanoappBUILD.gn
添加编译依赖:"Balance_car:balance_car",如下图:


关键算法讲解

两轮平衡车的控制主要涉及三个PID环的串联使用,它们分别是直立环(平衡控制)、速度环(速度控制)、转向环(方向控制)。三个控制效果合成,控制轮子运行。


直立环控制算法:
直立环控制算法是平衡小车维持平衡的主要算法。直立环采用了PD算法环节,即只有比例与微分环节。
倾斜角度大小以及角加速度大小决定了轮子的速度大小。可以理解为倾斜角度越大,控制轮子顺着倾斜的方向的速度越大;倾斜的角加速度越大,控制轮子速度也要越大。
float g_middleAngle = 1.0;//平衡角度
float g_kpBalance = -85800.0;
float g_kdBalance = -400;


static int ControlBalance(float angle, short gyro)
{
int outpwm = 0;
float angleBias = 0.0;
float gyroBias = 0.0;
float tempAngle = 0.0;
float tempGyro = 0.0;


tempAngle = 0 - angle;//极性控制
tempGyro = 0 - gyro;


angleBias = g_middleAngle - tempAngle;
gyroBias = 0 - tempGyro;
outpwm = (g_kpBalance / 100 * angleBias + g_kdBalance
* gyroBias / 100);


return outpwm;
}
速度环控制算法:
速度环控制的目的是让机器以恒定速度前进或后退,该恒定速度可以为0速度,即要让平衡车静止。速度环采用了PI环控制,只有比例与积分环节。
float g_kpSpeed = 95800.0;
float g_kiSpeed = 200;


static int ControlSpeed(long int left, long int right)
{
int outpwm = 0;
int speedBias = 0;
int speedBiasLowpass = 0;
static int speed_i = 0;
float a = 0.68;
static int speedBiasLast = 0;


speedBias = 0 - left - right;
speedBiasLowpass = (1 - a) * speedBias
+ a * speedBiasLast;
speedBiasLast = speedBiasLowpass;


speed_i += speedBiasLowpass;
speed_i = limit_data(speed_i, SPEED_H, SPEED_L);


outpwm = (g_kpSpeed * speedBiasLowpass / 100 +
gkiSpeed * speed_i / 100);


return outpwm;
}
转向环控制算法:
转向环的目的是控制小车以恒定速度转向。在本次场景为了控制小车平衡静止,所以只做了限制转向的操作。
static int ControlTurn(short gyro)
{
int outpwm;


outpwm = g_kpTurn * gyro;
return outpwm;
}
以上详细代码,请参考文章末尾的相关链接(Balance_car文件获取路径)。

总结

本文呈现了两轮平衡小车的大致原理。简单介绍了一下PID算法的效果:P比例参数,能够快速让系统达到稳定值,但是P太大容易超调,带来振荡;I积分参数,消除稳态误差,让系统达到稳定值;D积分参数,能消除振荡,但是会使系统时效性变慢。开发者可以根据现场情况,合理调节PID三个参数。
本样例是OpenHarmony知识体系工作组(相关链接在文章末尾)为广大开发者分享的样例。同时知识体系工作组结合日常生活,给开发者规划了各种场景的Demo样例,如智能家居场景、影音娱乐场景、运动健康场景等;欢迎广大开发者一同参与OpenHarmony的开发,更加完善样例,相互学习,相互进步。

相关链接

OpenHarmony源码下载路径:

https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.2-beta1.md

Balance_car文件获取路径:

https://gitee.com/openharmony-sig/vendor_oh_fun

BearPi-HM Nano(Hi3861)开发板代码烧录参考链接:

https://gitee.com/bearpi/bearpi-hm_nano/tree/master/applications/BearPi/BearPi-HM_Nano/docs/quick-start

OpenHarmony知识体系共建开发仓:

https://gitee.com/openharmony-sig/knowledge/blob/master/docs/co-construct_demos/README_zh.md

小熊派开发板学习路径:

https://growing.openharmony.cn/mainPlay/learnPathMaps?id=19

OpenHarmony知识体系工作组智慧家居开发样例

https://gitee.com/openharmony-sig/knowledge_demo_smart_home


参考资料
第七届全国大学生“飞思卡尔”杯智能汽车竞赛
电磁组直立行车参考设计方案



原文标题:玩转OpenHarmony PID:教你打造两轮平衡车

文章出处:【微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    57

    文章

    2301

    浏览量

    42663
  • OpenHarmony
    +关注

    关注

    25

    文章

    3627

    浏览量

    16026

原文标题:玩转OpenHarmony PID:教你打造两轮平衡车

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    两轮电动系统介绍与THVD8000在两轮电动车上的应用

    电子发烧友网站提供《两轮电动系统介绍与THVD8000在两轮电动车上的应用.pdf》资料免费下载
    发表于 09-27 11:12 0次下载
    <b class='flag-5'>两轮</b>电动<b class='flag-5'>车</b>系统介绍与THVD8000在<b class='flag-5'>两轮</b>电动车上的应用

    LTE-CAT1模组在两轮电池中的应用

    随着城市交通拥堵问题的加剧和环保意识的提升,两轮电动成为越来越多人的首选出行工具。作为其核心部件,电池的性能和安全性直接影响到两轮电动的整体使用体验。为了提升电池管理系统的智能化水
    的头像 发表于 09-14 16:56 1385次阅读
    LTE-CAT1模组在<b class='flag-5'>两轮</b><b class='flag-5'>车</b>电池中的应用

    常见的电动两轮BMS架构应用说明

    电子发烧友网站提供《常见的电动两轮BMS架构应用说明.pdf》资料免费下载
    发表于 09-12 09:28 0次下载
    常见的电动<b class='flag-5'>两轮</b><b class='flag-5'>车</b>BMS架构应用说明

    安朔科技ble5.2蓝牙模块+两轮蓝牙钥匙方案

    在现代生活中,智能科技已深入我们的每一个角落,比如在电动两轮领域,传统钥匙总是容易遗忘或丢失,给用户带来诸多不便,蓝牙钥匙应运而生,则彻底解决了这一问题。只需在手机上安装相关应用程序,通过蓝牙
    的头像 发表于 06-25 14:06 496次阅读
    安朔科技ble5.2蓝牙模块+<b class='flag-5'>两轮</b><b class='flag-5'>车</b>蓝牙钥匙方案

    两轮电动遥控解锁方案

    两轮电动遥控解锁方案
    的头像 发表于 05-09 09:33 868次阅读
    <b class='flag-5'>两轮</b>电动<b class='flag-5'>车</b>遥控解锁方案

    两轮蓝牙无感匙开锁(PEPS)方案介绍

    近几年来,随着科学技术的不断进步,两轮的市场销售量也在连续不断的向上增长。产品性能、智能也有了一个很大的突破,预示着传统的机械式、指针式仪表在逐渐淘汰。在此基础上,为了使人们出行更方便,一些敏锐
    的头像 发表于 04-28 14:17 757次阅读

    比亚迪创新突破,或将在6月实现钠电池试点两轮

    在第二届钠电池产业峰会上,比亚迪公司的弗迪电池产品线总监张剑带来了一项重磅消息。他透露,比亚迪计划于6月在深圳开始一项划时代的试点项目:实现大圆柱钠离子电池在电动两轮领域的充换电综合应用。这不
    的头像 发表于 04-08 16:17 475次阅读
    比亚迪创新突破,或将在6月实现钠电池试点<b class='flag-5'>两轮</b><b class='flag-5'>车</b>

    基于ACM32 MCU的两轮充电桩方案,打造高效安全的电池管理

    随着城市化进程的加快、人们生活水平的提高和节能环保理念的普及,越来越多的人选择了电动作为代步工具,而两轮电动的出行半径较短,需要频繁充电,因此在城市中设置两轮
    发表于 03-06 15:10

    两轮事故频发,什么才是解决之道?

    长期存在电动乱停乱充的消防隐患。……近年来,我国两轮电动车市场快速增长。截至2022年末,两轮电动保有量已达3.5亿辆,与此同时,电动
    的头像 发表于 03-05 08:17 286次阅读
    <b class='flag-5'>两轮</b><b class='flag-5'>车</b>事故频发,什么才是解决之道?

    比亚迪旗下弗迪电池将加大两轮电池的研发投入

    2月25日,比亚迪旗下弗迪电池表示,经探讨决定,弗迪电池将把乘用车的研发成果应用到两轮领域,加大两轮电池的研发投入,协同各方正能量,开发出更安全的电池。
    的头像 发表于 02-26 14:46 1113次阅读

    控制器在两轮中的位置和作用

    两轮,又称摩托车或电动自行车,是一种常见的交通工具。在两轮中,控制器起着至关重要的作用,它负责控制整车的运行状态,包括电机的转速、方向和制动等。本文将详细介绍控制器在
    的头像 发表于 01-15 16:12 2600次阅读

    新国标红利过后,智能网联化能否带动电动两轮的下一增长?

    电子发烧友网报道(文/周凯扬)作为新一代的代步工具,电动两轮发展至今已经形成了完整的产业链条。国内以及其他地区的电动两轮车市场在政策推动下,也纷纷迎来了一波增长。尽管东盟、印度等地仍在享受这一
    的头像 发表于 12-20 09:05 2383次阅读
    新国标红利过后,智能网联化能否带动电动<b class='flag-5'>两轮</b><b class='flag-5'>车</b>的下一<b class='flag-5'>轮</b>增长?

    APM32F035电动两轮电机控制器方案介绍

    电动两轮以其便捷、灵活、节能环保等优势,承载了大部分短途出行需求。随着智能技术的引进,电动两轮在安全性、可靠性、舒适性、远程控制、数据传输等方面有更高升级需求。
    的头像 发表于 11-09 10:09 1127次阅读
    APM32F035电动<b class='flag-5'>两轮</b><b class='flag-5'>车</b>电机控制器方案介绍

    MOSFET在电动两轮车上的应用

    电动两轮,按照行驶速度和续航标准分为电动自行车和电动摩托车大类。电动两轮具有经济、环保、便捷等优势,已成为主要的短距离交通工具之一,在
    的头像 发表于 11-06 14:17 579次阅读
    MOSFET在电动<b class='flag-5'>两轮</b>车上的应用

    基于i.MX RT1170的两轮数字仪表盘参考设计 全面的技术解读

    采用i.MX RT1170跨界MCU构建的两轮仪表盘;全包式参考平台:实现更快、更轻松的开发。恩智浦的互联数字仪表盘参考平台使车辆制造商能够为两轮提供基本的仪表盘功能,同时还支持各
    的头像 发表于 11-03 08:15 1762次阅读
    基于i.MX RT1170的<b class='flag-5'>两轮</b><b class='flag-5'>车</b>数字仪表盘参考设计 全面的技术解读