双轮自平衡智能送货机器人
实验题目:双轮自平衡智能送货机器人
课程简要信息
课程名称:单片机基础
课程学时:32个实验学时
项目学时:16个实验学时
适用专业:信息类
学生年级:大学二年级、第1学期
实验内容与任务(限500字,可与“实验过程及要求”合并)
双轮自平衡智能送货机器人以STM32为主控制器,使用姿态传感器“MPU6050”实时检测机器人的运动姿势,主控制器根据从传感器中获得的数据,经过PID算法处理之后,输出相应的控制信号到舵机驱动电路,实现对机器人的平衡控制。
实验任务分为两个,分别是单任务送货实验和多任务送货实验。
- 单任务送货实验内容
机器人单次只送一件货物,货物重量不小于10克,机器人需要从发货位置启动,自主走到收货位置,收件人取走货物后再自主返回到发货位置。
-
机器人在送货过程中需自主完成,不得利用外部辅助信息。
-
机器人到达收货位置侯,需短暂停留3秒钟,同时闪灯指示货物已送到,在此时间内收件人取走机器人运送的货物。
-
送完货物后,机器人自主返回到发货位置,等待下一次送货任务。
图 1单任务送货路径规划图
- 多任务送货实验内容
机器人单次运送两件货物,单件货物重量不小于10克,机器人需要从发货位置启动,依次将货物运到到收货位置1和收货位置2,然后自主返回到发货位置。
-
机器人在送货过程中需自主完成,不得利用外部辅助信息。
-
机器人到达收货位置1后,需短暂停留3秒钟,收件人取走机器人运送的货物1。
-
机器人到达收货位置2后,需短暂停留3秒钟,收件人取走机器人运送的货物2
-
送完货物后,机器人自主返回到发货位置,等待下一次送货任务。

图 1 多任务送货路径规划图
实验过程及要求(限300字)
-
领取实验器材,学习结构框架和印制电路板的功能特性和各个元器件的电气参数;
-
学习并安装STM32单片机的开发环境Keil5,通过相关示例工程快速熟悉Keil5开发环境的开发和调试功能;
-
利用STM32系统板,完成按键控制LED、串口通信、外部中断、定时中断、等基础实验内容;
-
利用STM32系统板和外围扩展电路,完成PWM输出控制舵机、定时器控制编码器、ADC采集电池电压、蓝牙无线通信等扩展实验内容;
-
按照实验指导书,组装并调试双轮自平衡智能机器人;
-
在基础实验和扩展实验的基础上完成双轮自平衡智能机器人的自主单任务送货实验和多任务送货实验;
-
现场汇报答辩,简述实验原理并回答老师提问;
-
撰写实验报告。
相关知识及背景(限150字)
结合《单片机基础》课程的教学大纲,设计一个综合性实验-双轮自平衡智能机器人,覆盖《单片机基础》课程中的GPIO、串口通信、中断系统、指令系统、定时器/计数器、AD模数转换等知识点。实验案例使用STM32控制器、陀螺仪传感器、舵机转动模块、舵机驱动模块、模数转换匹配电路、显示模块电源管理等电路模块构建了一个自平衡机器人,学生可以在此平台上添加各种传感器实现不同的功能,应用于不同的工程场景。
实验环境条件
实验套件一套,数字电源一台、示波器一台、万用表一台。实验套件具体包括以下内容:
-
配件包1,包括铜柱、螺钉、电源线
-
程序下载线
-
金属板1个,作为小车底盘
-
配件包2,包括排线、螺钉
-
系统底板,包括XL2596S稳压模块、TB6612电机驱动模块、MPU6050模块、电子测量模块。之前发的单片机系统板插在本底板上,组装时注意单片机系统板方向。
-
12V锂电池
-
黑色塑料板1个
-
车轮2个
-
L型车轮支架2个
-
电机2个
-
充电器
-
透明塑料板
图 1 实验套件
教学目标与目的(限150字)
知识方面:
-
掌握数字电源、示波器、万用表等仪器的使用;
-
学习并理解STM单片机的工作原理与开发流程;
-
掌握扩展电路设计与电路调试的基本方法;
能力方面
-
解决工程问题的综合能力
-
工程科学基础知识应用于分析电子信息系统的能力
-
拓展学习空间,促进差异化、个性化培养,实现理论与实践同步互补、学生实验与课外科技活动同步互补。
教学设计与实施进程
充分调研了相关专业需求和兄弟高校单片机实验案例课程的经验,结合本学院课程“单片机基础”的教学大纲,设计实现了“双轮自平衡智能机器人”实验;购置了相关实验设备和实验器材,完成了实验指导书的撰写。
本教学设计分为了七个子实验:
- 机器人状态指示实验
状态指示采用发光二极管或者数码管显示,实验内容对应单片机课程中的GPIO知识点,General Purpose Input Output (通用输入/输出)简称为GPIO,单片机的每个GPIO端口可配置成输入或输出模式。通过单片机的GPIO控制多个发光二极管或者数码管,不同的发光组合标识机器人不同的工作模式。
- 机器人姿态数据获取实验
本实验中的姿态传感器选用的是MPU6050,与单片机之间的数据交互接口为IIC,对应单片机课程中的串口通信知识点。MPU6050为全球首例整合性6轴运动处理器,整合了3轴陀螺仪和3轴加速度计,能够准确的对机器人的姿态进行实时检测。在本实验中MPU6050作为从机使用,使用SDA和SCL端口和主控器STM32进行串口通信,将MPU6050检测的姿态数据传输给主控模块。
- 机器人姿态稳定控制实验
姿态稳定控制的依据是姿态传感器MPU6050输出的数据,根据姿态数据进而判断姿态控制的方法与力度,对应单片机课程中的中断系统知识点。当机器人的姿态发生变化时,会触发单片机的中断相应函数,进而控制相应电机的转动方向和转动速度,达到姿态稳定控制的目的。
- 舵机转速控制实验
舵机转速是由PWM信号控制的,不同占空比的PWM信号可控制舵机转速的大小,对应单片机课程中的扩展接口部分。单片机通过扩展接口产生PWM信号,输出给舵机转速控制接口,实现舵机转速的控制。
- 机器人动作设计实验
机器人需要设计的基本动作包括:前进、后退、左转、右转等,每个动作都对应单片机多个舵机的转动和姿态的平衡,这就需要设计一系列的指令组合,该部分实验对应单片机课程中的指令系统知识点。由于实验套件之间的工艺差别和组装方法不同,每个动作对应的指令组合需要根据实际调试情况进行修正。
- 机器人路径规划实验
机器人要行走固定的路径,固定路径可以根据具体情况划分为前进、后退、左转、右转等动作的组合,前进或者后退的时间需要精确计算,该部分实验对应单片机课程中的定时器/计数器知识点。同样,由于实验套件之间的工艺差别和组装方法不同,每个固定路径对应的动作组合需要根据实际调试情况进行修正。
- 机器人电池电量监控实验
机器人电池电量需要实时监测,并根据电池电量判断是否发出充电预警的指示,电池电量与电池输出的电压有一定的对应关系,这就需要采集电池输出电压的具体数值,该部分实验对应单片机课程中的AD模数转换知识点。单片机内部集成有AD模数转换器,利用AD模数转换器将电池输出的电压值转换为数字信号,进而得到电池电量信息。
本实验是一个比较完整的实践类典型案例,涉及多个知识点,需要经历学习研究、电路方案论证、实现调试、设计总结等过程。在教学设计上采用工程分解的方法,将工程分解为四个功能相对独立的部分,在实验指导中采用分阶段设置目标,循序渐进,引导学生自主调研、搜索,解决问题。在实验教学中,应在以下几个环节加强对学生的引导:
实验原理及方案
- 机器人平衡原理
将平衡小车的物理模型简化为一个倒立摆,当小车向一边倾斜时,我们分析它的受力情况。可以看到小车受到自身的重力作用,还有沿杆向上的支持力,如图所示,把重力分解,可以得出合力为mgsinθ,与倾斜的方向相同,小车将加速倒下。为了让小车静止在中立位置,需要给小车一个与合力的方向相反的外力。
假设小车往前倾斜时,控制小车车轮使小车作加速运动,加速度大小为 a。以小车车轮为参考系,分析小车上方圆球的受力情况:F=mgsinθ - macosθ 。若θ很小,那么可认为比例系数sinθ = θ, cosθ = 1。且假设小车的反馈系统中加速度a与小车的倾角成比例关系,比例系数为k1,那么有F = mgθ - mk1θ。当k1 > g时,回复力 F 的方向就与倾斜方向相反了,此时小车会回复到平衡的位置。
图 2 平衡机器人的物理模型
若小车不能准确地到达中立位并稳定下来,必然会使小车在中立位置振荡,增大了平衡的时间。为了减少振荡,尽快稳定在平衡位置,还需要增加额外的阻尼力,增加的阻
尼力大小与角速度成正比,方向相反,比例系数设为k2。加上阻尼力后,小车的
回复力为: F = mgθ - m(k1θ + k2θ’), θ’为角速度,令a = k1θ + k2θ’,给小车加速度a,只要k1 > g , k2 > 0就可以实现小车的平衡。
图 3 舵机转速模型
- 角度与角速度测量
(1)MPU6050模块介绍
为了实现小车的直立控制,需要获取小车的角度和角速度。本系统使用 MPU6050 作为姿态传感器,集成一个加速度传感器和一个陀螺仪,可以输出三轴的加速度与角速度。角速度的获取可以通过陀螺仪来直接读取,角度的获取可以有两种方法来测量:一是通过加速度计的加速度分量来计算,二是通过陀螺仪输出的角速度进行积分获得。
图 4 MPU6050模型
当传感器的正方向 Z 轴垂直指向天空,此时加速度计 Z 轴读数在理想情况下为g。正因为物体自身的运动加速度与重力加速度大小相等方向相反,芯片才能保持静止。
图 5 方向控制分析
当传感器静止不动时,我们仅绕 X 轴旋转一定的角度θ,此时加速度方向一直与 X 轴垂直,X 轴并无加速度分量,忽略 X 轴,把加速度分解,即可得出传感器绕 X 轴的角度。
物体的旋转运动就是绕三轴旋转角度的叠加,我们读取加速度计的数据,根据公式进行处理就可以获取相应的姿态角。故小车绕 X 轴与 Y 轴的角度可用以下公式算出:
(2)滤波方法介绍
在实际应用中,小车因为车身摆动等情况会产生加速度,它叠加在测量信号上会无法准确地反映出车模的倾角,如下图所示。
图 6 加速度控制分析
而且获取的数据通常参杂噪声,需要进行滤波处理。通常有三种得到准确的角度的算法:1.DMP 算法 2.互补滤波算法 3.卡尔曼滤波算法。实验中我们以卡尔曼滤波来实现降噪。卡尔曼滤波原理是指一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。数据滤波是去除噪声还原真实数据的一种数据处理技术,卡尔曼滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中,估计动态系统的状态。
- PID参数调节
小车能否稳定地运行或者快速地调整需要精心地调试 PID 参数,我们需要
调试平衡小车的直立环、速度环和转向环。
(1)确定小车的机械中值
把平衡小车放在地面上,绕电机轴旋转平衡小车,记录能让小车接近平衡的角度,一般都是 0 度附近。
(2)PID参数极性与大小调节
若向前倾斜小车,小车也向前前进,那么极性就是对的,反之为错误的。把 Balance_Kp 值设置为 0,设置 Balance_Kd为-100(实际为-1),然后把小车放在角度中值,向前倾斜小车,可以发现小车也向前行进,说明此时极性是对的。最终我们小组经过不断调试运行,得到的值为:Balance_Kp=35000, Balance_Kd=108, Velocity_Kp=16000, Velocity_Ki=80, Turn_Kp=2110, Turn_Kd=100;
- 运动模块方案
(1)直线运动与距离调节
为了让小车能够前进,利用速度函数int Velocity(int encoder_left,int encoder_right),并在中断函数int EXTI15_10_IRQHandler(void)中对Flag_front和Flag_back变量进行赋值,再调用速度函数,从而实现小车的直行控制。
为了满足实验一的要求,我们在中断函数里加了一个计数静态变量:static int Time_Cnt = 0;并根据小车的速度和目标距离来不断修改Time_Cnt的值。
(2)转向运动
要让小车转动90度,就需要利用z轴陀螺仪,进行角度测量,而角度的换算公式为turn=Turn_Target*Kp/100+gyro*Kd/100,因此,我们需要调节Turn_Amplitude,Turn_Kp,Turn_Kd的大小,不断修正能满足90度转向的合适参数。最终我们得到的值为:Turn_Kp=2110,Turn_Kd=100,Turn_Amplitude=60。由于小车在前进时有少量偏转误差,当前进的距离过大时,误差累积就较多了,此时要让小车再沿原路返回时就会最终偏离原路线,因此,我们针对不同阶段,给出了不同的Turn_Kp的值,以让小车前后互补,极大地减少送货与返回过程累计的误差,完成了最终完美的修正,即针对前进阶段的直角转弯:Turn_Kp=2110,而针对返回时直角转弯:Turn_Kp=2310。
- 软件总体设计原理
图 7 软件总体架构
首先给各模块初始化,本实验中使用的模块有:MPU6050,直流电机,TB6612电机驱动模块,电子测量模块,XL2596S稳压模块等。初始化后,中断通道开启,进入while(1)死循环,每达到一定时间进入一次由MPU6050触发的中断,在中断中通过调用各个函数,获取小车状态数据,并通过计算得出合理数据,再调用电机模块等,将参数传递进去,实现小车保持平衡的同时也能按相应的指令前进与转向。
实验报告要求
实验报告需要反映以下工作:
-
实验需求分析:明确实验目的、实验内容、实验任务以及最终需要达到的实验效果;
-
实验原理分析:结合实验需求分析,阐述单片机系统、各种外围控制电路和传感器的工作原理;
-
设计方案介绍:结合实验原理分析,描述设计方案,给出电路设计思路和电路设计功能框图;
-
实验过程及结果记录:记录每个实验部分的实验步骤和实验现象;
-
实验结果总结:结合实验过程中遇到的问题和解决方法,总结实验,进一步加深对实验的理解,锻炼独立思考的能力,并回答课后思考题,学生之间进行充分的交流讨论。
考核要求与方法(限300字)
- 课前预习
实验检查之前检查学生对实验中用到的各个知识点理解是否到位,包括实验套件组装、功能实现思路等方面,此环节占总分的10%;
- 实验过程
实验电路设计是否正确,操作是否规范,任务1和任务2是否能够正常完成,此环节占总分的50%;
- 汇报答辩
讲解自己的设计思路,实验过程中遇到了什么问题,怎么解决的,必要情况下要求讲解部分设计思路,此环节占总分的10%;
- 学生互评
汇报答辩阶段,根据汇报小组的具体表现,每个学生对汇报小组进行评价,此环节占总分的10%;
- 实验报告
实验报告是否具有规范性与完整性,实验原理的理解是否透彻,是否能根据实验现象独立思考做出总结,此环节占总分的20%。
项目特色或创新(可空缺,限150字)
-
**实际应用牵引:**以人工智能应用为背景,实用性强,能够解决实际应用问题。
-
**知识点串联:**案例涵盖课程主要知识点,帮助学生建立知识体系。
-
逻辑思维培养:对电子信息系统提出整体解决方案,培养了学生逻辑思维能力。;
-
团队协作精神:团队合作自主解决故障问题,增强了同学间的沟通协调能力。








