侵权投诉

机器人搭建过程中的坑和未来的改进方向

STM32嵌入式开发 ? 2021-09-26 10:59 ? 次阅读

将机器人整体开源,同时总结一下机器人搭建过程中遇到的坑和未来的改进方向。在分享的文件里包含了结构设计、程序控制、电路设计以及其他模块相关资料供大家参考。

机器人原理分析

该机器人根据陀螺仪的位姿数据,通过三个全向轮驱动底部球体调整自己在球上的位置,保持动态平衡的同时实现全向移动。

保持动态平衡过程需要对机器人进行运动学分析,这里参考了平衡小车之家的运动学方程:

自平衡控制问题转化为三步:输入X、Y角度—控制器计算—输出A、B、C电机转速的控制模型。

控制器设计

首先考虑参考平衡车控制,球上自平衡机器人本质上依然是一个一阶倒立摆问题。

这里参考了飞思卡尔直立车的控制方法,采用串级PID控制器,外环PD角度环,内环速度PI环。

由于我的驱动方案选择的是42步进电机,在速度闭环的时候有些问题。正常的直流电机+编码器的控制方案可以通过编码器将轮子的真实速度计算出来,从而和控制器的理想转速作差,实现速度控制。

而我这里的速度闭环是通过计算上一个时钟周期时给步进电机的控制量,通过运动学方程分解,得到机器人的虚拟速度,与理想转速作差控制。我认为这种速度闭环方式还是存在一定缺陷的,但是在网上查看论文的时候我发现有很多自平衡机器人都是用42步进电机来实现速度闭环的,不知道是什么方法。

这里还可以好好思考一下为什么角度环要用PD控制,速度环要PI控制,角度环的P部分和D部分对机器人控制有什么影响?在很多CSDN调试平衡车的博客中都有解释,这里就留给大家思考了。

硬件及结构设计

自平衡机器人的硬件清单有:

56mm全向轮 45元/个

42步进电机 25/个

42步进闭环模块 59.8元/个

LM2596S降压模块 20元

STM32F103C8T6-4飞控板 59.8元

GY-521六轴陀螺仪 25元

用到的模块大致如上所示,C8T6的价格随着最近芯片涨价直线上升,我白嫖了实验室的两块板子,现在买一块实在太贵,可以等芯片价格稳定一些再买。其余开关排针等常见元件不再赘述。

电路原理图如下所示:

7cbf0d6e-136a-11ec-8fb8-12bb97331649.png

机器人使用solidworks设计整体结构,底板可在某宝定制6050太空铝切割,蓝色件为正常3D打印件。

程序部分

keil 5中开发STM32

控制程序采用定时器0.5ms定时中断的方式进行计算,每触发两次中断计算对电机控制一次,这里还是推荐大家采用外部中断读取GY-521上的INT引脚的方式,控制计算周期。GY-521上的INT引脚每5ms触发一次跳变,采用外部中断的方式可以严格保证读取位姿数据与计算处理同步。

int TIM1_UP_IRQHandler (void) { u8 key_cal; if(TIM_GetITStatus(TIM1,TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM1,TIM_IT_Update); flag_target=!flag_target; key_cal=KEY_Scan(0); if(state_flag==1)//矫正结束 { if(flag_target==1)//每读取两次陀螺仪控制一次 { Read_DMP(); //===读取倾角 scope();

return 0; } } if(key_cal==1)//矫正按键 { Angle_Zero_X=Angle_Balance_X; Angle_Zero_Y=Angle_Balance_Y; key_cal=0; Flag_Stop=0; } if(key_cal==2||key_cal==3)//矫正按键 { Flag_Stop=1;//关闭速度环I积分 key_cal=0; } Angle_Bias_X =Angle_Balance_X-Angle_Zero_X;

//获取Y方向的偏差 Angle_Bias_Y =Angle_Balance_Y-Angle_Zero_Y; //获取Y方向的偏差 if(control_mode==0)//PID控制模式 { Encoder_Analysis(Motor_A,Motor_B,Motor_C); //正运动学分析,得到X Y方向的速度 Balance_Pwm_X= balance_X(Angle_Bias_X,Gyro_Balance_X);

//X方向的倾角控制 Balance_Pwm_Y=-balance_Y(Angle_Bias_Y,Gyro_Balance_Y); //Y方向的倾角控制// if(++flag_target_2==4)//速度环频率慢于加速度环 但是还没加速度环 // { Velocity_Pwm_X=velocity_X(compute_X);

//X方向的速度控制 Velocity_Pwm_Y=velocity_Y(compute_Y); //Y方向的速度控制 // flag_target_2=0;// } Move_X =Balance_Pwm_X+Velocity_Pwm_X;

//===X方向控制量累加 Move_Y =Balance_Pwm_Y+Velocity_Pwm_Y; //===Y方向控制量累加 Move_Z=0; Kinematic_Analysis(Move_X,Move_Y,Move_Z);//逆运动学分析得到ABC电机控制量 } Motor_A=Target_A;//直接调节PWM频率 Motor_B=Target_B;//直接调节PWM Motor_C=Target_C;//直接调节PWM//以下都是为了速度连续化处理防止突变

if(Motor_A==0) Motor_A=motor_a_last; if(Motor_B==0) Motor_B=motor_b_last; if(Motor_C==0)

Motor_C=motor_c_last; Xianfu_Pwm(2000); Set_Pwm(Motor_A,Motor_B,Motor_C);

Gyro_Balance_X_last=Gyro_Balance_X; Gyro_Balance_Y_last=Gyro_Balance_Y;

Gyro_Balance_Z_last=Gyro_Balance_Z; Angle_Balance_X_last=Angle_Balance_X;

Angle_Balance_Y_last=Angle_Balance_Y; Angle_Balance_Z_last=Angle_Balance_Z;

motor_a_last=Motor_A; motor_b_last=Motor_B; motor_c_last=Motor_C; } return 0;}

对于电机控制,由于采用的驱动方案是步进电机,调速的方式是改变驱动步进电机的脉冲频率。我这里选择了三个定时器,动态调节定时器的频率,具体方式是在初始化时设定好定时器的预分频系数psc的值,然后在程序里动态更改ARR寄存器的值,从而改变定时器的定时频率。

//这里以A电机的速度控制为例 输入为 电机方向和电机速度void set_motorA_speed(u8 dir,u16 speed){ u32 arr; arr=speed; TIM_ARRPreloadConfig(TIM3,DISABLE); TIM3-》ARR=arr;//计数到10000在归零重新计数 TIM3-》CCR4=arr/2;//保持占空比为50% TIM_ARRPreloadConfig(TIM3,ENABLE); TIM_Cmd(TIM3,ENABLE);

if(dir==0) { GPIO_SetBits(GPIOA,GPIO_Pin_1); } else { GPIO_ResetBits(GPIOA,GPIO_Pin_1); }}

小车的运动学分解代码实现如下,参考了平衡小车之家的代码:

/**********************************************************函数功能:小车运动数学模型入口参数:X Y Z 三轴速度或者位置返回 值:无***********************************************************/void Kinematic_Analysis(float Vx,float Vy,float Vz)

{ Target_A = Vx + L_PARAMETER*Vz; Target_B = -X_PARAMETER*Vx + Y_PARAMETER*Vy + L_PARAMETER*Vz; Target_C = -X_PARAMETER*Vx - Y_PARAMETER*Vy + L_PARAMETER*Vz;}/*****************************************************************函数功能:小车运动 正运动学分析 入口参数:A B C三个电机的速度返回 值:无******************************************************************/void Encoder_Analysis(float Va,float Vb,float Vc){ compute_X=(Va*2-Vb-Vc); compute_Y=((Vb-Vc)*sqrt(3)); compute_Z=(Va+Vb+Vc); }

其余代码不全放出,可在文末点击“阅读原文”下载查看。

总结与展望

球上自平衡机器人可以作为算法试验平台, 输入输出固定,更换不同控制器,将数据导入MATLAB进行分析即可比较控制器性能。

个人认为结构有两个改进方向,一方面参考以下论文:余义。 单球驱动自平衡机器人位姿解算与控制系统研究[D]。武汉科技大学,2019。论文中采用的四足式驱动结构更有利于机器人自平衡控制。

另一方面可以增加球体和机器人固定装置,利用机械结构将机器人与底部驱动球结合成一个整体防止机器人跳轮等问题。同时驱动球对于机器人平衡的影响较大,最好还是定制空心钢球,然后喷漆增大摩擦力,最有利于机器人自平衡控制。

控制部分的改进,首先是控制原理,本文是针对建立好的运动学方程进行分析,通过串级PID算法来实现自平衡运动。该机器人的控制问题本质上是一阶倒立摆问题,可以采用动力学建模的方式,通过动力学分析算出平衡需要的虚拟力矩,再对电机进行力矩控制。

其次是控制器,PID控制算法应用广泛但也有一定的缺点,可以考虑采用模糊PID,ADRC自抗扰控制器,强化学习等智能控制算法对机器人自平衡进行控制。

原文链接:https://blog.csdn.net/qq_42823167/article/details/118085368

责任编辑:haq

原文标题:STM32自平衡机器人项目,附代码、电路图等资料

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

墨影科技单/双臂移动协作机器人 诠释全新一代机器人
随着时代发展,制造业进一步向着敏捷制造、柔性制造、精益制造的方向发展,工业机器人进行更新升级成为行业....
的头像 移动协作机器人 发表于 10-15 17:51 ? 92次 阅读
墨影科技单/双臂移动协作机器人 诠释全新一代机器人
越疆科技发布首款自研遥操作机器人,突破人机协作新高度!
越疆遥操作系统 Matrix.OS 由操作端、障碍段、远程端三部分构成,通过力反馈主手及计算机进行感....
发表于 10-15 15:26 ? 565次 阅读
越疆科技发布首款自研遥操作机器人,突破人机协作新高度!
国辰机器人与您相约第二届电力人工智能大会
2021年10月19日-20日,第二届电力人工智能大会暨2021发电人工智能及数字化转型技术交流会将....
发表于 10-15 15:03 ? 363次 阅读
STM32的最小系统主要由哪几个部分组成
STM32的最小系统主要由哪几个部分组成? stm32有哪几种复位方式? ...
发表于 10-15 09:34 ? 0次 阅读
如何去实现一种基于STM32开发板的DHT11温湿度采集呢
如何去实现一种基于STM32开发板的DHT11温湿度采集呢?...
发表于 10-15 09:31 ? 0次 阅读
如何利用stm32最小系统去制做一个红外测温仪呢
stm32最小系统是由哪些部分组成的? 如何利用stm32最小系统去制做一个红外测温仪呢?...
发表于 10-15 08:16 ? 0次 阅读
怎样去设计一种基于STM32的人体检测系统
怎样去设计一种基于STM32的人体检测系统? 如何将测得数据通过zigbee传输到坏境检测系统中去?...
发表于 10-15 07:51 ? 0次 阅读
如何利用tb6612fng来驱动stm32制作的巡线小车?
如何利用tb6612fng来驱动stm32制作的巡线小车?
发表于 10-15 07:45 ? 0次 阅读
STM32的命名有哪些规则
什么是STM32? STM32可分为哪几类? STM32的命名有哪些规则? ...
发表于 10-15 07:44 ? 0次 阅读
STM32的闪存模块是由哪几个部分组成的
STM32的闪存模块是由哪几个部分组成的? SD卡可分为哪几类? UCOSII是什么?有何优点? ...
发表于 10-15 07:03 ? 0次 阅读
STM32程序的执行过程是怎样的
STM32程序的执行过程是怎样的? 怎样将STM32程序下载到flash区呢? ...
发表于 10-15 06:34 ? 0次 阅读
ARM与STM32之间有什么关系
ARM是什么?STM32又是什么?ARM与STM32之间有什么关系? ...
发表于 10-15 06:04 ? 0次 阅读
移植STM32F有哪些注意事项
怎样去移植STM32F工程? 移植STM32F有哪些注意事项?...
发表于 10-15 06:01 ? 0次 阅读
stm32mp1 Cortex M4开发篇2:通过GPIO点亮LED灯详解
写在前面:本文章为《ARMCortex-M4裸机开发篇》系列中的一篇,,全系列总计14篇。笔者使用的....
的头像 刘洋其 发表于 10-14 18:37 ? 25次 阅读
stm32mp1 Cortex M4开发篇2:通过GPIO点亮LED灯详解
AI安防巡逻机器人是什么,有哪些功能
随着机器人产业持续升温,中国机器人市场需求不断扩大,AI安防巡逻机器人逐渐走进人们的视野中。近些年来....
发表于 10-14 16:44 ? 57次 阅读
多关节四轴机器人码垛机的详细介绍
多关节四轴机器人码垛机是腾阳为生产线后端包装码垛研发的机器人码垛系统,该码垛系统硬件与专门控制软件相....
发表于 10-14 14:54 ? 17次 阅读
华为5G+TSN智能仓储物流系统助力工业OT网端到端网络高稳定性
近日,PT EXPOCHINA(中国(北京)国际信息通信展览会)在北京召开。中国移动联合华为、固高科....
的头像 华为云核心网 发表于 10-14 11:44 ? 943次 阅读
“常高新杯”华为云工业互联网应用创新大赛二等奖,斯坦德AMR赋能制造业转型升级
10月10日,由常州国家高新区管委会、华为技术有限公司主办的“常高新杯”首届华为云工业互联网应用创新....
发表于 10-14 10:47 ? 60次 阅读
“常高新杯”华为云工业互联网应用创新大赛二等奖,斯坦德AMR赋能制造业转型升级
共同解锁每年价值550亿美元的财富密码
UiPath客户使用RPA软件所带来的全球经济预期效益将以极快的速度增长,将从2021年的70亿美元....
的头像 西西 发表于 10-14 10:38 ? 872次 阅读
共同解锁每年价值550亿美元的财富密码
stm32mp1 Cortex M4开发篇1:stm32CubeIDE开发环境搭建
写在前面:本文章为《ARMCortex-M4裸机开发篇》系列中的一篇,,全系列总计14篇。笔者使用的....
的头像 刘洋其 发表于 10-13 17:53 ? 20次 阅读
stm32mp1 Cortex M4开发篇1:stm32CubeIDE开发环境搭建
大族机器人:智进未来,新一代多感知智能机器人助手
9月29-30日,以“赋能新产业、构建新生态”为主题的OFweek 2021中国机器人系统集成商峰会....
发表于 10-13 16:53 ? 36次 阅读
大族机器人:智进未来,新一代多感知智能机器人助手
2021华南激光行业盛会精彩内容大盘点!
2021华南华南先进激光及加工应用技术展览会开幕在即,镭Sir和他的伙伴们也正在有条不紊地筹备着为期....
发表于 10-13 16:28 ? 928次 阅读
2021华南激光行业盛会精彩内容大盘点!
智能扫地机器人哪个牌子好?选对能给生活减负!
智能技术的进步给我们的生活带来了全新的体验,许多传统的工具搭载了智能科技技术后都发生了天翻地覆的变化....
的头像 话说科技 发表于 10-13 16:21 ? 175次 阅读
智能扫地机器人哪个牌子好?选对能给生活减负!
变电站设备巡检机器人的作用是什么
这段时间以来,“电”成了最火热的话题。我国江苏、湖南、浙江、广东、云南等10余省份在“能耗双控”的目....
发表于 10-13 16:03 ? 21次 阅读
全自动纸箱码垛机器人的详细介绍
纸箱码垛机是一种用来码放纸箱的设备,全自动纸箱码垛机器人是将装有物料的箱子按照排列码放在托盘上面,便....
发表于 10-13 13:24 ? 18次 阅读
浅析机器人认路的技术SLAM
SLAM (simultaneous localization and mapping),也称为CM....
的头像 新机器视觉 发表于 10-13 10:38 ? 180次 阅读
本科生只会焊收音机?南航大二学生自制火箭成功升空,获知名UP主“稚晖君”点赞
近日,B站科技频道发布了两集重磅视频,先是知名UP主稚晖君的自制机械臂,然后是名为Shang001的....
的头像 Felix分析 发表于 10-13 09:22 ? 1851次 阅读
本科生只会焊收音机?南航大二学生自制火箭成功升空,获知名UP主“稚晖君”点赞
STM32MP157开发板评测:华清远见FS-MP1A开发板初体验!
华清远见FS-MP1A开发板使用(STM32MP1开发)1.1FS_MP1A硬件资源介绍FS-MP1....
的头像 刘洋其 发表于 10-12 18:21 ? 65次 阅读
STM32MP157开发板评测:华清远见FS-MP1A开发板初体验!
腾阳码垛机器人的性能特点介绍
相比传统的人工搬运低产低效成本高,全自动搬运码垛机器人作为生产制造业装备中自动化产品,越来越多地被应....
发表于 10-12 13:31 ? 438次 阅读
学习嵌入式linux为什么推荐stm32mp157开发板?
stm32mp157是ST推出的一款双A7+M4多核异构处理器,既可以学习linux,又可以学习st....
的头像 刘洋其 发表于 10-11 18:21 ? 33次 阅读
学习嵌入式linux为什么推荐stm32mp157开发板?
国辰挂轨巡检机器人解决方案
挂轨机器人可以在恶劣和特殊环境下执行特巡和定制性巡检任务的机器人。可实现自主定位与导航,搭载特定摄像....
发表于 10-11 17:11 ? 43次 阅读
激光焊接机器人的应用领域介绍
激光焊接机器人的应用领域有哪些?随着智能制造领域的不断发展,焊接机器人成为工业化生产中重要的自动化生....
发表于 10-11 16:52 ? 490次 阅读
意法半导体扩大STM32生态系统,加快基于STM32U5 极低功耗微控制器的应用开发
意法半导体推出新的STM32Cube 软件包和开发工具以及评估板,加快使用最新的 STM32U5微控....
发表于 10-11 16:12 ? 389次 阅读
意法半导体扩大STM32生态系统,加快基于STM32U5 极低功耗微控制器的应用开发
华为联手湖南移动将5G+智慧天车投入生产应用
2019年开始,华菱湘钢、中国(湖南)移动、华为联手共建智慧工厂;将5G+智慧天车投入生产应用。这是....
的头像 华为 发表于 10-11 15:14 ? 728次 阅读
奥比中光在VALSE 2021上展示最新的3D智能抠图算法
10月8日至10日,“CV界”盛宴VALSE 2021(视觉与学习青年学者研讨会)在杭州国际博览中心....
的头像 互联网科技 发表于 10-11 11:29 ? 221次 阅读
奥比中光在VALSE 2021上展示最新的3D智能抠图算法
基于STM32的多功能口袋仪器
用STM32F072实现的示波器、频谱仪、波形发生器、PWM发生器和直流电压源,虽然只是一个STM3....
的头像 电子森林 发表于 10-11 09:13 ? 1699次 阅读
NVIDIA宣布即将举办全球线上GTC大会
GTC大会将于11月8日至11日举办,重量级演讲嘉宾包括来自斯坦福大学的李飞飞、Epic Games....
的头像 NVIDIA英伟达企业解决方案 发表于 10-09 14:42 ? 234次 阅读
维谛技术Vertiv智能巡检机器人推动数据中心运营智能化发展
近期,2021数据中心高质量发展大会在国家会议中心召开,并发布了“DC-Tech创新先锋”评选结果。....
的头像 话说科技 发表于 10-09 13:32 ? 1658次 阅读
维谛技术Vertiv智能巡检机器人推动数据中心运营智能化发展
STM32 USB-FS设备库V4.1.0免费下载
STM32 USB-FS设备库V4.1.0免费下载
发表于 10-08 15:06 ? 21次 阅读
全自动高位砂浆腻子粉颗粒物袋装码垛机介绍
全自动高位砂浆腻子粉颗粒物袋装码垛机,通常和自动称重、包装、缝合一体自动化完成。通常经过物料提升设备....
发表于 10-08 14:35 ? 26次 阅读
来也科技RPA机器人,助力企业降本增效
在大数据时代,数字化转型是企业发展的关键。许多企业将数字化转型作为一项长期的发展战略。而来也科技作为....
的头像 话说科技 发表于 10-08 11:32 ? 163次 阅读
码垛机器人的维护与保养注意事项
随着物流、食品和化工等行业的不断发展,码垛机器人发挥着越来越重要的作用,它不只可以准确、有效地完成码....
发表于 10-08 10:47 ? 68次 阅读
国产码垛机器人的特点及应用领域
随着国产机器人的加速崛起,工业机器人的主要部件已经开始国产化,这就意味着机器人在不久的将来会批量化生....
发表于 10-08 10:45 ? 28次 阅读
码垛机器人工作站的特点及工作过程
机器人码垛工作站系统,包括工业机器人、控制器、编程器、机器人手爪、自动拆/叠盘机、托盘输送及定位设备....
发表于 10-08 10:44 ? 77次 阅读
智能小车机器人制作大全人教版pdf.02
智能小车机器人制作大全人教版pdf.02
发表于 10-08 10:34 ? 21次 阅读
智能小车机器人制作大全人教版pdf.01
智能小车机器人制作大全人教版pdf.01
发表于 10-08 10:31 ? 51次 阅读
影响焊接机器人焊接质量的因素
影响焊接机器人焊接质量的因素有哪些?焊接机器人凭借焊接效率高、成本低、焊接精度高等优势在焊接行业中迅....
发表于 10-08 10:29 ? 27次 阅读
跟随同茂线性马达走进科博会
近期,2021中关村论坛于北京隆重召开
发表于 10-08 10:06 ? 34次 阅读
跟随直线电机生产厂家走进武汉科技成果转化对接活动“双智”专场
2021智慧城市与智能建造高峰论坛暨武汉科技成果转化对接活动于9月24日在武汉隆重举行。
发表于 10-08 09:59 ? 46次 阅读
移动底盘在服务机器人中的应用
随着进入企业的日益增多,不少行业人士都对机器人底盘的发展前景表示看好。一方面企业的增多所带来的竞争,....
发表于 09-30 17:29 ? 62次 阅读
STM32F10xxx参考手册
STM32F10xxx参考手册
发表于 09-30 16:33 ? 43次 阅读
焊接机器人的编程流程及技巧介绍
焊接机器人的编程流程是怎样的?焊接编程有哪些技巧?焊接机器人能够在重复动作中实现稳定焊接,完成批量产....
发表于 09-30 16:18 ? 239次 阅读
51、STM32和Linux点灯有什么区别
从入门到放弃是一个煎熬的过程,一旦入门,这个煎熬过程就会慢慢得到缓解,那么,怎样才算入门了呢? 嵌入....
的头像 strongerHuang 发表于 09-30 10:19 ? 381次 阅读
普渡机器人亮相2021花椒大连餐饮发展论坛
9月29日,以“进化升级,穿越周期”为主题的花椒大连餐饮发展论坛盛大开幕。在本届花椒大连餐饮发展论坛....
发表于 09-29 18:30 ? 46次 阅读
普渡机器人亮相2021花椒大连餐饮发展论坛
生态系统新特性助力无线设计
扩展后的STM32Cube 生态系统可支持 STM32WB 无线 MCU 新的 STM32CubeW....
的头像 MCU开发加油站 发表于 09-29 17:31 ? 591次 阅读
华为mate50pro最新消息
华为mate50pro最新消息:华为Mate 50 Pro可能会在今年的10月份即将推出,新一代 M....
的头像 lhl545545 发表于 09-29 16:15 ? 4260次 阅读
Linux系统移植开发篇2:烧写linux镜像
本文章为《STM32MP157 Linux系统移植开发篇》系列中的一篇,笔者使用的开发平台为华清远见....
发表于 09-29 16:00 ? 16次 阅读
Linux系统移植开发篇2:烧写linux镜像
自动封箱机的特点及作用介绍
自动封箱机在纸箱包装领域受到广泛使用,其主要用于纸箱封箱,使用时对于纸箱的规格变化不能太频繁,在对规....
发表于 09-29 14:15 ? 42次 阅读
面向ROS开发者的NVIDIA AI Perception
NVIDIA这一最新宣布,向ROS开发者社区提供整套感知技术。
发表于 09-29 10:36 ? 1479次 阅读
面向ROS开发者的NVIDIA AI Perception
为政务系统提速,来也科技RPA+AI行政审批机器人来助力
相信很多人都去过各种窗口办事,每次办事的时候,总能看到工作人员忙里忙外,经过一项项复杂的流程,才能够....
的头像 话说科技 发表于 09-29 09:39 ? 247次 阅读
为政务系统提速,来也科技RPA+AI行政审批机器人来助力