聚丰项目 > 基于AB32VG1的双足机器人
相信变形金刚、钢铁侠是很多少年时候不可或缺的梦,都希望有一台属于自己的“大黄蜂”。虽然现在离能达到与电影中一样的机器人这个梦还很遥远,但机器人的制造、应用也必将在未来由人类所掌握。机器人学集成了力学、机械工程学、电子学、计算机等等很多前言学科。说实话我也不懂,不懂这些高深的理论是不是就与机器人无缘了呢。并不是! 我觉得机器人应该具备的第一功能应该是步行(好像日本一个机器人专家也说过),但是真正的做一个很强大的机器人,所花费的成本远超普通人业余爱好的承受。本项目就是从 低成本、零基础制作一个可以行走的双足机器人。由于步行是基础,那我们就先完成步态的行走就行。只有完成了初步行走功能,建立了对于机器人的初步认识,才能明白自己的机器人之路后续往什么方向发展。 废话不多说。
PCB00032563
分享PCB00032563
团队成员
赵亚楠 研发
本项目采用的是AB32VG1控制板,该电路板非常适合双足机器人的开发,其主频 120M ,RAM 192K, Flash 4Mbit基本可以满足后续程序的存储, IIC用于控制PWM输出模块,蓝牙与红外通信满足短距离机器人与上位机的通信以及多个机器人间的通信,语音接口可以满足机器人声音输出需要。TF卡可以存储地图数据等。总之该电路板在未来可以满足简易的双足机器人开发。
本项目是低成本实现双足行走功能,所有仅实现了使用手机通过红外控制双足机器人前进、左转、右转等功能。
硬件结构框图如图1所示。手机发送命令信号至控制板,控制板通过IRA进行接收,并处理。通过I2C控制PWM模块,进而分别控制6个舵机。PCA9685模块是使用I2C总线可以控制16路舵机模块,在后续舵机控制中也会更方便。舵机采用的是MG995,金属齿轮,满足。
低成本零门槛的话硬件就不能复杂了,需要的材料如下:AB32控制板 *1 、PCA9685模块 *1 、4.8V5600mAh的电池组*1(采用该电压电池组,不需要电平转换)。
结构设计,采用的舵机越多,自由度越高,可以控制的灵活性就越高,但是成本就会越高,要形成最简单的双足行走功能,我认为需要6个舵机。分别是踝关节、膝关节、髋关节。先上个装好之后的侧照图如下图。
当然组装的方式很多,我这样装的好处有下面几点。1、脚采用大片,这样使得重心比较好找;2、左右踝关节的角度倍数正好是2倍,简单的说,现在身体向左偏移,给左踝关节的舵机发送偏移10度,相应的给右踝关节的舵机发送偏移20度,两条腿正好平行移动。3、膝关节和髋关节这样组装,角度正好是1:1,这样就极大的简化了编程。膝关节和髋关节在相同的转动时只需要发送同样的角度数值即可。再上几个组装的细节图。
详细的配件我后期会在gitee平台整理公布。
不得不说RTT现在做的越来越强大了,基本上不用太多的自己编程,想要什么功能,直接添加软件包,就可以用了,我使用的是pca9685软件包,我看了一下作者是greedyhao在2019年就分享的。使用的红外组件软件包也是,又是本次大赛的AB32官方的技术大牛。
本项目仅新建了的两个线程:
1、是红外接收处理线程。接收调试、动作的命令,发送命令到运行控制线程。
2、是舵机运动控制线程,根据命令进行运动控制。
其他新建的函数主要是进行步态控制。下面简单的描述一下的函数功能;
void robot_left_tilt(rt_uint8_t left_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向左倾斜
//形参:left_angle倾斜的角度(本项目中简化成了PWM的高电平)
//形参:range舵机单次转动的角度(换算后)
//形参:speed是单次转动后的稳定时间
void robot_left_tilt_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:左倾斜恢复直立
//形参:range舵机单次转动的角度(换算后)
//形参:speed是单次转动后的稳定时间
void robot_right_tilt(rt_uint8_t right_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向右倾斜
void robot_right_tilt_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:右倾斜恢复直立
void robot_right_forward(rt_uint8_t forward_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:右脚向前一步
void robot_right_forward_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:右脚向前一步后恢复直立
void robot_left_forward(rt_uint8_t forward_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:左脚向前一步
void robot_left_forward_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:左脚向前一步后恢复直立
void go_right_step(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向右脚迈一步
void go_left_step(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向左脚迈一步
void go_left(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向左转
void go_right(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向右转
具体代码详见:https://gitee.com/yanan7310/biped-robot
本项目代码中没有使用复杂的计算。
动起来之后就可以增加手部、头部的设计等。传感器就可以增加陀螺仪、视觉采集,ZMP轨迹等等方式,想多深就有多深。
前进
完整视频:https://www.bilibili.com/video/BV1wL411E7Q2/
左转
完整视频:https://www.bilibili.com/video/BV1oM4y1w7Qa/
右转
完整视频:https://www.bilibili.com/video/BV1ZS4y1X7vw/
dianzi_0101: 点赞
回复
ElecFans小喇叭: 点赞,确实有点东西
回复