基于STM32的六足机器人系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
科教论坛 ScienceandEducationForum
234
教育前沿 Cutting Edge Education
基于STM32的六足机器人系统设计
文/刘飞
摘要:六足机器人在复杂环境中行走时,由于未知地形容易对机器人的控制系统引入不可预知的扰动,影响机器人的运行平稳性,为了减少机器人因运动的不稳定性对机器人机身结构造成的冲击。
需要采用合适的控制方式控制机器人各关节位姿适应复杂地形。
保证机器人系统具有良好的动态稳定性。
本文以处于复杂多变环境中的六足机器人为研究对象,设计了机器人机身结构,开发了其控制系统,并以其关节运动平稳性、响应快速性和位姿准确性的提高为目的,重点对机器人关节模糊PID控制算法进行了研究。
主要研究内容为:首先,对六足机器人的机身结构进行了优化设计,并对机器人样机进行了运动学分析,得出了机器人足部的运动范围以及关节变量与机器人足部位姿的关系。
其次,在机器人运动学分析的基础上,规划了机器人纵向和横向直行的三角步态,给出了当机器人采用三角步态直行时,能保持机器人静态稳定的步长计算方法,结合机器人行走步长分析了机器人纵向和横向直行步态的稳定性。
当机器人采用三角步态直行时,若其步长小于能保持步态静态稳定的临界步长,机器人的步态是静态稳定的,否则不是静态稳定的。
关键词:六足机器人;系统设计1 六足机器人结构
六足机器人的控制分为两大部分。
即硬件控制部分和软件部分。
其中硬控控制部分又分为三个部分。
电源、主控、通信。
软件部分分为原理和射程序设计。
1.1 结构简介
本文所研究的六足机器人,在机器人机构学上属于多支链拓扑运动机构。
机器人具有18个驱动关节,具有冗余驱动大于机构自由度6。
为了确定六足机器人关节变量和其足部末端点的位姿的关系,建立对应的运动学模型,得出它们关系的数学模型。
本文所研究六足机器人在运动过程中一种串并联机构交替的复合型机构型,要想精确的对机器人进行运动控制,需要对六足机器人足部末端的位姿以及其运动空间进行正反运动学分析。
六足仿生机器人腿部结构属于多支链串联机构,本文所研究控制系统主要针对的是机器人足部位姿的准确控制,故构建六足机器人足部D-H 坐标系,计算六足机器人足部末端的运动空间,解算六足机器人足部关节变量,为六足机器人控制机器人关节运动提供。
本文所设计的六足机器人以六足甲虫的结构、运动特性为基础采用结构仿生,实现在复杂环境下灵活行动。
通过观察六组昆虫的身体结构可知,机器人的机身为六边较好,同样面积的机器人机身,六边形机身能使机器人足部能获得较大的运动空间,而且机器人结构将更加紧凑。
关节机器人,其关节数目越多机器人越灵巧,能力越强。
同样,六足机器人的足部要想未知的复杂地形,其足部就需要更加灵活。
但是,足部关节数的增加,会使机器人结构变得更为复杂,稳定性差,机器人的控制也将更难更复杂。
根据现实中昆虫的基本特性,需要对其腿部结构做相应的简化,使其易于控制的同时具有较好的地形适应性,故机器人每条腿具备最“合适”的关节数目为3
个。
图1 六足机器人运动模型
1.2 相关运动学分析
六足机器人足部关节的正向运动学分析六足机器人正运动学分析可以验证机构功能实现的可行性、有效性,确保六足机器人的运动范围不会超过每条腿运动范围,保证机器人在运动过程中不会发生机械碰撞。
六足机器人的足部,认为是多支链的串联机械臂,其末端对应六足机器人足部末端。
设六足机器人本体坐标系为{Ob},原点Ob 位于六足机器人机械结构的几何中心上。
为了方便对机器人足部关节进行运动学研究,六足机器
人每个足部的基坐标系建立在机器人各个足部髋关节的几何中心上,第i 足基坐标系原点为Oi0,其在机器人本体坐标系{Ob}中的坐标为。
以六足机器人第i 个足建立基于D-H(Denavit-Hartenberg)方法的连杆坐标系,并对他们进行齐次坐标变换矩阵,确定足部关节变量范围,求出足部末端
的运动空间。
图2 六足机器第i 人足的D-H 法连杆坐标系
图2是对六足机器人足部三关节建立的基于D-H 的连杆坐标系。
坐标系{Oi0}为六足机器人足端的基础坐标系,坐标系{Oi1}、{Oi2}和{Oi3}分别为六足机器人足部髋关节1部、髋关节2部以及膝关节连杆坐标系之间的位置关系。
o i 1,O i 2,O i 3,分别表示第i 足的三个关节坐标系的原点,,l i 1,l i 2,l i 3第i 足三个连杆的杆长,θi 1,θi 2,θi 3分别表示第i 足三个连杆的运动角度,确定逆时针为关节变量正方向。
2 六足机器人控制系统设计2.1 硬件设计
控制系统硬件电路主要有3部分组成:电源部分、主控部分和通信部分。
运动控制器处于六足机器人系统的中间层,是运动控制系统信息传输的纽带,图为硬件电路总体设计框图,系统共分为个模块:最小系统电路模块、信号驱动电路模块、编码器接口电路模块、串口通信电路模块和
电源模块。
所有电路原理图是在相关软件中进行设计与实现的。
图3 控制电路硬件设计框图
2.2 STM32最小系统设计
保证控制芯片的正常工作,为芯片提供时钟和复位电路;PWM 信号驱动电路:对产生的信号进行放大,输送至驱动器,控制电机的转速;编码器接口电路:将电机反馈差分信号转换为单端信号,并输送至STM32串口通信电路:将TTL 电平转换为232电平,实现与机的通信。
ScienceandEducationForum
科教论坛
Cutting Edge Education 教育前沿 235
电源电路:将输入电压转换为电路所需要的5V 电压和3.3V 电压STM32最小系统模块STM32F103一共有3种复位模式,分别为系统复位、电源复位和备份区域复位。
1.系统复位是指除了时钟控制器的RCC_CSR 寄存器中的复位标志位和备份区域中的寄存器以外,将所有的寄存器复位。
有5种方式可以实现系统复位:NRST 引脚上的低电平、窗口看门狗计数终止、独立看门狗计数终止、软件复位和低功耗管理复位。
系统复位可以通过软件实现,也可以通过外部手动复位,就是将NRST 引脚拉至低电平,并至少保持20us。
2.电源复位较为简单,STM32内部集成有电源管理电路,会自动检测内部电路电压。
上电或掉电时,系统实现复位。
从待机模式返回时,也会实现电源复位。
备份区域有两种复位,且只影响备份区域寄存器的复位。
备份区域可以采用软件复位和VDD 和VBAT 掉电复位。
对于一个单片机系统来说,CPU 和总线以及外设的时钟设置都是非常重要的,因为没有时钟就没有时序。
STM32F103有3个不同的时钟源可以用来驱动系统时钟:HIS 振荡器时钟、HSE 振荡器时钟、PLL 时钟。
当不被使用时,每一个时钟源都可以被独立地启动或关闭,降低系统功耗。
从硬件设计的角度来看,需要提供两种频率的时钟:32.768KHz 和8MHz。
STM32最小系统的设计主要包括时钟电路和复位电路的设计,电源电压的滤波电路以及程序下载电路](本系统采用SWD 下载方式)。
图4为STM32
最小系统的电路图。
图4 STM32最小系统
2.3 电源部分设计
电源部分是负责为机器人的舵机和硬件系统整体部分供电。
电源部分负责给机器人控制系统的硬件和舵机供电。
在舵机驱动过程中,为了避免电流波动影响机器人运动稳定性,将舵机驱动和控制系统分开供电。
机器人使用的舵机型号是:EKS -05-08,每个舵机的工作电流是30mA,18个舵机同时工作时需要0.6A 的电流,可以使用LM2575S -5产生5V 电压为舵机单独供电,电路如图2所示。
STM32F103VET6控制系统需要为I/O 引脚和内部调压器供电,可用AMS1117-3.3产生3.3V 的稳压电源,电路如图2
所示。
图5
机器人舵机电源电路
图6 控制系统电源电路
2.4 PWM 信号驱动电路
STM32的脉冲输出电压峰峰值为3.3V,而本系统所采用的交流伺服电机驱动器内部为CMOS 电平,要求控制信号的峰峰值为5V,且采用光耦隔离,必须进行电平转换并提高信号的驱动能力才能控制电机的运转。
电平转换电路由三极管组合设计,利用NPN 型三极管和PNP 型三极管极性不同B 设计成推挽电路。
二者以推挽方式在电路中工作,各负责正负半周的波形放大任务,正常工作时,两个三极管始终一个处于导通状态、一个处于截止状态,可以减少导通损耗,提高效率,但必须选择两个参数相同、极性相反的三极管2]。
其电路原理图如图4-3所示
:
图7 PWM 信号驱动电路
当系统输入为低电平时,Q3截止,Q8导通,推挽电路输出低电平;当输入为高电平时,Q3导通,Q8截止,推挽电路输出为高电平。
其中R4的作用是限流,防止电路的电流过大烧毁STM32的I/O 口。
推挽电路的优点是电路设计简单,可靠性高,波形失真度小,但受三极管自身数据参数的限制,无法承受高频率的脉冲。
本系统PWM 最大输出频率为333KHz,小于所选用的三极管的最大开关频率(1MHz),推挽电路满足系统的要求,增大了脉冲的驱动能力以及抗干扰能力。
本电路只是其中一支PWM 信号的驱动电路,系统共需输出6路控制信号:两路PWM 信号控制左右侧电机的转速;两路信号控制左右侧电机的正反转;两路信号控
制左右侧驱动器的使能端。
3 控制系统软件设计
在机器人控制系统中,通过STM32丰富的外设处理,配置需要用到的时钟、IO 口、串口、定时器等信息。
详细过程如下:无线接收模块收到信号后,相应的I/O 引脚电平会发生变化,由已存于数组中的步态数据,经过STM32的定时器模块共使用4个通用定时器,每个定时器有4路通道再加上一个高级定时器的2路通道,可产生18路变占空比、频率不变的PWM 波[7-10];GPS 通过USA RT2中断处理接收到的GP RMC 数据后,经过STM32的数据解析后,再通过USA RT1在上位机上显示已解析过的数据;加速度计和陀螺仪则通过操作相应的寄存器将比力和角速度数据经IIC 传输到STM32后用USA RT1在上位机上显示;超声波传感器利用定时器产生相应的触发条件,再利用定时器的溢出中断捕获到数据,经过处理后用USA RT1在上位机上显示。
3.1 软件设计原则
软件是运动控制系统的灵魂,本文采用软件设计也采用模块化设计的思想,对各个模块进行分析,并给出软件设计的流程图和关键程序。
在进行软件设计过程中,必须遵循以下软件设计原则:
(1)可靠性。
系统规模越大,其可靠性就越难以保证。
在进行软件设计时,必须保证设计的可靠性,防止程序在运行中发生“跑飞”或“死
机”的现象。
科教论坛 ScienceandEducationForum
236
教育前沿 Cutting Edge Education
(2)容易理解,便于修改。
软件设计中,要考虑的因素比较多,设计应当尽可能简甲。
程序不是一次便能设计成功的,需要在调试和测试中不断地发现和改正错误,这样就更需要设计者编写代码时尽量保持语句简单整洁,同时也方便他人阅读。
(3)可移植性强,能够扩展升级。
在一个规模比较大的软件系统设计中,一般采用模块化的设计思路,每个设计者负责其中的一部分,各个模块之间以及模块内部之间往往需要相互调用,因此要求软件设计的可移植性强,即使更改控制芯片,也不需要重新编写代码,可以提高效率。
(4)准确性和标准化。
系统需要进行大量的计算,算法的正确性和语言的标准化会大大提高代码编写的效率。
系统程序设计全部采用嵌入式C 语言来完成的。
嵌入式C 语言和C 语言区别是两者的CPU 不一样,所以编译器也不一样,生成的可执行程序也是不一样的,但二者没有本质的区别。
STM32固件库包括了微控制器所有外设的性能参数,可以大大减少用户的程序编写时间,降低开发成本有的软件程序代码都是在嵌入式IAREmbeddedWorkbenchIDE6.3集成开发环境下设计完成的,它集成程序编写、编译和仿真于一体。
系统软件根据功能划分为加减速算法软件模块、运动控制功能软件模块、速度计算软件模块、串口通信软件模块。
各个软件功能模块构成了系统控制电路的整体软件,主要包括3个方面的内容:输入命令处理、系统计算和速度分配、反馈信息的处理。
各个软件并不是孤立存在的,而是彼此间有密切的联系,如系统运动控制功能软件设计中,就多次调用了加减速算法程序,简化了代码,提高了编程的效率,软件功能模块的划分如图8
所示。
图8 控制系统软件流程图
3.2 软件功能模块
系统程序设计全部采用嵌入式C 语言来完成的。
嵌入式C 语言和C 语言区别是两者的CPU 不一样,所以编译器也不一样,生成的可执行程序也是不一样的,但二者没有本质的区别。
STM32固件库包括了微控制器所有外设的性能参数,可以大大减少用户的程序编写时间,降低开发成本。
所有的软件程序代码都是在嵌入式IAREmbeddedWorkbenchIDE6.3集成开发环境下设计完成的,它集成程序编写、编译和仿真于一体。
系统软件根据功能划分为加减速算法软件模块、运动控制功能软件模块、速度计算软件模块、串口通信软件模块。
各个软件功能模块构成了系统控制电路的整体软件,主要包括3个方面的内容:输入命令处理、系统计算和速度分配、反馈信息的处理。
各个软件并不是孤立存在的,而是彼此间有密切的联系,如系统运动控制功能软件设计中,就多次调用了加减速算法程序,简化了代码,提高了编程的效率,软件功能模块的划分如图9所示。
各个模块的功能如下:运动控制功能模块:对左右轮速度进行计算,协调左右轮之间的速度,完成机器人运动状态的改变,如前进、后退、左转弯、右转弯、原地转弯灯;加减速算法模块:实现S 曲线加减速算法,将算法离散化处理,嵌入系统中,在运动控制功能模块中多次被调用;速度计算模块:将定时器配置成编码器接口模式,分别对左右轮当前的运行速度进行计算,便于及时调整机器人的运行速度。
串口通信模块:该模块遵循一定的通信协议,分为命令接收和数据反馈,实现与PC 机的实时通信。
3.3 调试和实验
PCB 板上电后,系统准备就绪,通过读取遥控器的接收端电平状态,从而执行前进、后退,左行,右行,左转,右转,准备等动作;同时实时
采集超声波传感器、加速度计、陀螺仪、GPS 的数据。
当发送的PWM 信号的频率最大为333KHz 时,反馈信号的频率为84.35KHz,反馈信号频率刚好为发送信号频率的1/4。
可以由编码器反馈信息得出六足机器人当前的速度信息,完成系统的闭环控制。
3.3.1 直线功能的测试
当六足机器人以最大速度前进时,两侧车轮的PWM 信号的发送频率为333KHz,根据理论计算,编码器反馈频率应为83.25KHz,且A 信号应超前B 信号90°。
测试方法为:发送命令让机器人以最大速度前进,通过示波器查看PWM 信号的发送情况和AB 反馈信号的波形情况,结果是否与理论情况一致。
有实验可知,当六足机器人以最大速度前进时,左右侧电机的PWM 发送频率大小一样,且占空比为50%,基本为333KHz,编码器反馈频率基本为PWM 信号发送频率的1/4,且A 信号超前B 信号90°。
测试结果说明:当向左右侧车轮发送频率相同的PWM 信号时,机器人能够实现直线运行功能。
3.3.2 转弯功能的测试
根据第前文可知,当机器人左右轮转速不同时能够实现机器人的转弯功能。
现令六足机器人的测试转弯半径为1m,根据计算公式,若左侧车轮发送脉冲频率为53KHz,则右侧车轮的发送脉冲频率应为166KHz。
测试方法:分别向机器人左右侧车轮发送频率为53KHz 和166KHz 的脉
冲,然后用卷尺测量其转弯半径的长度。
测试结果表明,当分别向机器人左右侧车轮发送频率为53KHz 和166KHz 的脉冲时,机器人进行左转弯,经卷尺测量,其转弯半径基本为1m。
测试结果说明,当分别向机器人左右侧车轮发送不同频率的PWM 信号时,机器人能够实现转弯功能,其转弯半径的大小可通过相关计算公式获得。
4 结论
本文通过对六足机器人的研究,分析了当前六足机器人技术的发展情况。
本文通过对六足机器人特性和运动环境的分析,设计了六足机器人运动控制系统。
经过试验,本文设计的运动控制系统性能可靠,实现了对六足机器人运动控制系统的实时控制,达到系统设计要求。
本文主要开展了以下工作:根据系统设计的具体要求,给出了系统的总体设计方案:确定了控制芯片并对其进行介绍,对控制的功能模块进行设计,选择适用于本系统的驱动设备并进行相关计算。
设计了六足机器人运动控制系统的硬件电路,给出了硬件总体方案,对硬件总体方案中的各个模块进行具体的电路设计。
釆用模块化的编程思想,对软件功能模块进行了分析,具体设计了运动控制系统。
借助于一定的测试工具,对整个系统进行了测试。
通过对测试结果的分析,表明所设计的六足机器人运动控制系统满足系统性能指标。
参考文献:
[1] 李满宏,张明路,张建华,etal.六足机器人关键技术综述[J].机械设计,2015(10).
[2] 赵小川,罗庆生,韩宝玲,etal.基于GPS的仿生六足机器人实时导航定位[J].计算机工程,2009(12).
(作者单位:
烟台工程职业技术学院)
图9 软件功能模块划分。