[作品提交] 【2022得捷创新设计大赛】二自由度云台机器人控制平台修订版

HonestQiao   2022-11-2 13:19 楼主

 

二自由度云台机器人控制平台修订版

作者:乔楚

 

二自由度云台机器人控制平台................................................................................................. 1

一、作品简介(100-200字).................................................................................................. 2

二、系统框图(图文结合)...................................................................................................... 3

三、各部分功能说明(图文结合)......................................................................................... 8

四、作品源码.............................................................................................................................18

五、作品功能演示视频............................................................................................................ 20

六、项目总结............................................................................................................................ 20

七、其他.................................................................................................................................... 21

 

 

一、作品简介

      本作品,名称为“二自由度云台机器人控制平台”,实现了一个完整的云台机器人控制平台,系统使用运动传感器做为控制手柄,来控制机器人的运动,并配合OLED屏,显示系统的当前状态。

     使用控制手柄,可以通过前后向动作,来控制纵轴舵机运动,通过旋转操作,控制横轴舵机运动,从而实现机器人二自由度控制。

     作品照片:

image.png  

 

二、系统框图

2.1 系统整体设计:

     在本系统中,二自由度云台机器人,使用两个舵机,实现两个维度的自由运动。

     系统使用一个MPU6050六轴运动传感器 ,通过实时获取其六轴运动数据,解码识别实际的运动,然后通过PCA9685控制两个舵机,从而实现通过控制手柄,来控制机器人的实际动作。

     在机器人支架的平台上,还搭配有一个OLED显示屏,用于显示系统的当前状态,以及通过互联网对时的时钟。

     系统整体设计图:

image-20221102131547-1.png  

 

2.2 硬件物料:

image.png  

     在本作品中,使用到硬件如下:

  • 开发板: ESP32-E
  • 扩展板: ESP32-E专用扩展板
  • OLED显示屏:SSD1306 128x64显示屏,带支架
  • 运动传感器:DFRobot MPU6050,已经安装到手柄内部
  • 舵机控制:PCA9685 16路舵机控制器
  • 舵机:3120 20KG舵机2个
  • 云台支架:1套
  • 电源:正点原子数控电源


2.3 硬件连接规划:
image-20221102131604-2.png  

 

     实物连接说明:

  1. 将扩展板平插到ESP32开发板上
  2. 将 PCA9685 连接到扩展板的I2C接口1
  3. 将OLED连接到扩展板的I2C接口2
  4. 将 MPU6050 连接到扩展板的I2C接口3
  5. 将舵机连接到PCA9685的14、15舵机接口
  6. 使用数控电源给PCA9685供电

 


2.4 软件逻辑设计:

image-20221102131610-3.png  

 

三、各部分功能说明


3.1 系统组成:

     本系统的组成部分,分为四个部分,分别为:

  1. 主控中心:主控中心使用DFRobot FireBeetle ESP32-E进行逻辑控制,并搭配专用扩展板方便其他设备的接入

image.png  

  1. 运动控制模块:使用DFRobot MPU6050,主控程序通过获取其数据,经过解码,生成纵轴和横轴控制数据,然后控制机器人运行。

image.png  

 

  1. 动作执行模块:使用1个PCA9685舵机控制器和2个3120 20KG舵机,来进行机器人纵轴和横轴的动作控制。

image.png image.png    

 

  1. 显示模块:使用SSD1306 128x64的OLED显示屏,用于显示系统的当前状态,包括系统启动过程中的信息,启动后纵轴和横轴的状态,以及通过互联网对时的时钟。

image.png  

     在上述模块中:

  • 舵机控制器PCA9685为I2C接口,供提供了16组舵机接口,编号为0-15,这里使用最后的两个接口,接入两个舵机分别用于机器人纵轴和横轴的控制
  • 所使用的运动传感器DFRobot MPU6050,同样为I2C接口
  • 所使用的SSD1306 128x64 OLED显示屏,也为I2C接口
  • 专用扩展板上刚好提供了3组I2C接口,正好用于接入上述3个I2C设备的接入

     另外:

  • 为了确保舵机能够稳定运行,使用了一个正点原子数控电源专门为舵机控制器PCA9685提供5V电源输入。
  • 为了方便使用MPU6050进行稳定的控制,使用了一个掏空内部的儿童牙刷来内置MPU6050,方便手持操作。

 

3.2 使用说明:

3.2.1 系统的使用步骤如下:

  1. 系统启动:
    • 确保各部分连接正确后,上电启动,初始化各部件
    • 启动过程中,显示屏将显示当前启动进度
    • 启动完成后,屏幕将显示操作界面
    • 启动后,默认情况下,处于机器人停止状态
  2. 按键操作:
    • ESP32开发板左则的RST按键,用于系统重启
    • ESP32开发板右则的Pin27按键,用于启停机器人舵机控制
    • Pin27按键奇数次按键,启动机器人舵机控制,偶数次按键,停止机器人舵机控制
  3. 手柄操作:
    • 系统启动过程中,应手持手柄保持垂直竖立状态,以便系统正确计算初始化状态;
    • 应根据自己所使用的MPU6050芯片,确定正确的芯片放置方向
    • 启动完成后,向前压手柄,或者向后压手柄,控制机器人横向舵机运动
    • 启动完成后,以手柄竖向中心线为中心旋转,控制机器人纵向舵机运动
  4. 显示屏状态:
    • 启动过程中,依次显示各部分初始化情况
    • 启动后,界面显示各状态图标,包括当前控制状态,以及当前的时钟
    • Pin27按键依次以后,将会显示纵轴和横轴舵机控制角度

 

 

3.2.2 具体操作:

     按下ESP32开发板的RST按键后,手持手柄,保持竖立状态,等待系统初始化启动完成。

     启动完成以后,按一下ESP32开发板右则的按键,使能手柄控制机器人,然后就可以进行操作控制了。

image-20221102131653-4.jpeg  

 
      运行过程中,OLED显示屏显示如下:

image-20221102131658-5.jpeg  

     在上图中,各区域信息如下:

  • 状态栏:分别为电源接入图标、运行状态图标(启动时默认暂停)、互联网对时时钟、WiFi图标
  • 内容区域:显示平台名称

 当按下ESP32开发板右则按键后,进行控制操作时,OLED显示屏显示如下:

image-20221102131703-6.jpeg  

在上图中,各区域的信息如下:

  • 状态栏:分别为电源接入图标、运行状态图标(当前为使用运行)、互联网对时时钟、WiFi图标
  • 内容区域:显示纵轴和横轴舵机对应的角度值

 

四、作品源码

     源码地址:https://download.eeworld.com.cn/detail/HonestQiao/625355

     码云地址:https://gitee.com/honestqiao/2d_robot

 

     在代码中,有几个关键点,需要详细说明:

     首先是显示的图标和字体:

 

image-20221102131725-7.png  

    image-20221102131734-8.png  

     在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 问题与改进

     在实际开发,经过反复的测试,目前还有如下问题需要解决或者优化:

  1. OLED显示屏操作界面的显示,目前使用了全屏刷新,可优化为仅刷新发生变化的部分;
  2. MPU6050长时间使用后,会发生一定的漂移,正在详细了解相关的资料,以便进行优化。

 

7.2 第三方库

     在开发的过程中,使用到了如下的Arduino库,对作者和提供方表示深深的感谢:


 

7.3 参考资料

     在本作品设计开发的过程中,查阅学习了上百篇文档资料,对于提供这些资料的作者表示万分的感谢。

     这些文档资料,包括但不限于如下链接:

 

本帖最后由 HonestQiao 于 2022-11-2 16:20 编辑

回复评论 (2)

可以说是很用心了,标记一下,有空学习起来

没有特别的幸运,就要特别的努力
点赞  2022-11-3 10:40

好好学习,天天向上,加油,每一个人,加油自己。加油!!!

点赞  2024-10-30 20:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复