作者:乔楚
二自由度云台机器人控制平台................................................................................................. 1
一、作品简介(100-200字).................................................................................................. 2
二、系统框图(图文结合)...................................................................................................... 3
三、各部分功能说明(图文结合)......................................................................................... 8
四、作品源码.............................................................................................................................18
五、作品功能演示视频............................................................................................................ 20
六、项目总结............................................................................................................................ 20
七、其他.................................................................................................................................... 21
本作品,名称为“二自由度云台机器人控制平台”,实现了一个完整的云台机器人控制平台,系统使用运动传感器做为控制手柄,来控制机器人的运动,并配合OLED屏,显示系统的当前状态。
使用控制手柄,可以通过前后向动作,来控制纵轴舵机运动,通过旋转操作,控制横轴舵机运动,从而实现机器人二自由度控制。
作品照片:
2.1 系统整体设计:
在本系统中,二自由度云台机器人,使用两个舵机,实现两个维度的自由运动。
系统使用一个MPU6050六轴运动传感器 ,通过实时获取其六轴运动数据,解码识别实际的运动,然后通过PCA9685控制两个舵机,从而实现通过控制手柄,来控制机器人的实际动作。
在机器人支架的平台上,还搭配有一个OLED显示屏,用于显示系统的当前状态,以及通过互联网对时的时钟。
系统整体设计图:
2.2 硬件物料:
在本作品中,使用到硬件如下:
实物连接说明:
2.4 软件逻辑设计:
3.1 系统组成:
本系统的组成部分,分为四个部分,分别为:
在上述模块中:
另外:
3.2 使用说明:
3.2.1 系统的使用步骤如下:
3.2.2 具体操作:
按下ESP32开发板的RST按键后,手持手柄,保持竖立状态,等待系统初始化启动完成。
启动完成以后,按一下ESP32开发板右则的按键,使能手柄控制机器人,然后就可以进行操作控制了。
运行过程中,OLED显示屏显示如下:
在上图中,各区域信息如下:
当按下ESP32开发板右则按键后,进行控制操作时,OLED显示屏显示如下:
在上图中,各区域的信息如下:
源码地址:https://download.eeworld.com.cn/detail/HonestQiao/625355
码云地址:https://gitee.com/honestqiao/2d_robot
在代码中,有几个关键点,需要详细说明:
首先是显示的图标和字体:
在OLED显示屏操作界面中,使用到了4个图标,分别为电源、启/停、WiFi,使用了U8g2中的特殊字体来显示的。
其中,电源和WiFi图标,为u8g2_font_siji_t_6x10字体的0x0e200、0x0e21a,启动图标为 0x0e058,停止图标为0x0e059
在启动控制后,控制界面中,纵轴圆圈指向图标,为u8g2_font_unifont_t_86字体的0x02b6f,横轴上下箭头图标为0x02b65
其他显示使用的字体,均为u8g2_font_unifont_t_chinese2
然后,在获取到MPU6050数据解码后,对纵轴的数据,应用了卡尔曼滤波进行优化处理,得到更为准确的数据。
该卡尔曼滤波的Kalman_Filter函数,来自于网上公开的代码,向提供该函数的作者表示感谢。
最后,互联网时间同步部分,使用了第三方的Time时间库,用于与公开的ntp服务器进行对时。该部分的代码,可以提取出来,做成互联网时钟。
视频介绍专辑地址:https://training.eeworld.com.cn/course/67867
介绍视频一共分为两个部分,分别为平台结构的介绍、详细使用的展示。
结构介绍视频地址:https://training.eeworld.com.cn/video/34839
使用展示视频地址:https://training.eeworld.com.cn/video/34840
在该二自由度云台机器人控制平台设计制作开发的过程中,进行了多项研究尝试,最终选择了Arduino IDE进行开发。
在开发过程中,详细了解到了ESP32、MPU6050、PCA9685舵机控制器、DS 3120 20KG舵机、SSD 1306 OLED等的具体使用。Arduino平台强大的包容和扩展性,使得开发过程中可以方便的应用第三方开发库,大大加快了开发的速度。
非常感谢EEWrold和得捷提供这次机会,得以把以前一直想做但没有做的事情,给好好的完成。今后也希望有更多的机会,进行交流学习和研究。
帖子分享汇总:
7.1 问题与改进
在实际开发,经过反复的测试,目前还有如下问题需要解决或者优化:
7.2 第三方库
在开发的过程中,使用到了如下的Arduino库,对作者和提供方表示深深的感谢:
7.3 参考资料
在本作品设计开发的过程中,查阅学习了上百篇文档资料,对于提供这些资料的作者表示万分的感谢。
这些文档资料,包括但不限于如下链接:
本帖最后由 HonestQiao 于 2022-11-2 16:20 编辑