这段时间在实验室做一个两轮差速驱动的机器人,控制机器人运动的程序框架在此记录一下。
机器人的两个轮子分别由两个直流电机驱动,电机上带有编码器,可以测量轮子的转速和计算机器人的行程。机器人电机的控制由STM32来完成,STM32要根据上位机发送的命令控制机器人完成前进、后退和转弯等动作。STM32上实现的机器人控制的程序框架如下:
//wheels.c
#include "wheels.h"
//左轮剩余运动时间
uint16_t WHEELS_RestTimeLeft;
//右轮剩余运动时间
uint16_t WHEELS_RestTimeRight;
//左轮目标速度
float WHEELS_TargetSpeedLeft;
//右轮目标速度
float WHEELS_TargetSpeedRight;
//左轮速度
float WHEELS_CurrentSpeedLeft;
//右轮速度
float WHEELS_CurrentSpeedRight;
void WHEELS_Init()
{
//========================直流电机配置==============================
/*定时器配置PWM*/
//=========================编码器配置===============================
/*定时器配置为编码器模式*/
//=========================初始化变量==============================
WHEELS_RestTimeLeft = 0;
WHEELS_RestTimeRight = 0;
WHEELS_TargetSpeedLeft = 0;
WHEELS_TargetSpeedRight = 0;
WHEELS_CurrentSpeedLeft = 0;
WHEELS_CurrentSpeedRight = 0;
}
void WHEELS_DriveLeft(float speed, uint16_t msec)
{
WHEELS_RestT