当我按下开关,震惊了一众答辩老师,乍一看,啊,就这?

news/2024/11/30 10:48:18/

基于机器视觉的爬行机器人(毕业设计)

  • 零、实现功能
  • 一、关于本想法
  • 二、理论分析
  • 三、3D结构设计
  • 四、硬件设计
    • 主控板
    • 驱动板
  • 五、软件设计
    • 控制程序
    • 机器视觉
    • APP设计
  • 六、结束语

零、实现功能

  1. 实现了爬行机器人的移动控制功能。采用三角步态控制机器人移动,通过运动学逆运算得出控制角度。
  2. 实现了上位机控制功能。采用蓝牙模块,实现蓝牙无线通信,下发控制指令控制机器人。
  3. 实现了实时监控功能。通过WIFI模块将是系统采集到的视频画面上传到上位机界面中。
  4. 实现了显示动画效果、灯光效果。促进人机交互体验。

    一个呆萌的小机器人

一、关于本想法

我从小就是一个闲不住的孩子,小时候也动手拆过家里的遥控器、电子玩具等一些物品,对电子的世界也是充满了好奇,随着逐渐成长,在大学期间,我开始更深入的了解电子世界,当我接触单片机之后,小时候的一些梦想,就好像能得到了诠释,做一辆遥控小车、做一个音乐播放器、做一个掌上游戏机,这些都能够在电子的世界里找到答案。
于是那是的我也就有了一个梦想,那就是在大学期间做一个机器人,经过不断地学习与挑战,这个梦想也就在今天得到了展现。下图就是我设计的爬行机器人。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、理论分析

由于爬行机器人是通过舵机来控制各个足之间的传动,从而实现爬行机器人移动过程的稳定。运动学的逆运算就是这样一种适合爬行机器人移动控制的算法。作为一种逆解算法,运动学的逆运算实际上就是输入坐标轴参数,得出舵机执行的角度。该算法的实现,需要以机器人的中心建立空间直角坐标系,然后将原点偏移到六个足跟部,足尖在空间直角坐标系内的轨迹坐标,就是逆解算法输入的参数,根据算法的解析,就得出了各个舵机的控制量。

通过查阅文献和相关资料,发现运动学逆运算大多是采用矩阵运算实现,计算出舵机控制角度和整个足部之间移动位置的关系。因为看的不是很懂,所以本设计进行取巧,用三角函数关系硬算出来,但最后也没用上,因为发现舵机死区和主控性能不够,理论的计算实际上达不到一个预期的效果。所以最后直接输入不同参数验证,取了一个效果看起来比较好的值。以下为相关程序。

void core_run(double x, double y, double z, int *angle)
{int flag[2] = {0};     		//负坐标判断标志,[0]为x轴,[1]为z轴double l;					//模长投影double l1;					//模长double angle0;				//小腿角1double angle1;				//腿连接角2double angle2;				//大腿角3double angle11;				//辅助角1double angle12;				//辅助角2double angle13;				//辅助角3if(z < 0){flag[1] = 1;}if(x < 0){flag[0] = 1;}l = sqrt(pow(x,2) + pow(y,2));			//进行三角变换处理l1 = sqrt(pow(l,2) + pow(z,2));angle11 = acos(  (pow(l1,2) + pow(A1,2) - pow(A2,2)) / (2*l1*A1)  );angle12 = acos(  l / l1  );angle13 = acos(  (pow(l1,2) + pow(A2,2) - pow(A1,2)) / (2*l1*A2)  );if(flag[1] == 1){angle12 = -angle12;}angle0 = atan(x/y);						//解算出舵机执行的弧度angle1 = PI/2 - angle11 - angle12;angle2 = angle11 + angle13;if(flag[0] == 1){angle0 = -angle0;}angle[0] = angle0 * (180.0/PI);			//解算出执行角度,传入数组中angle[1] = angle1 * (180.0/PI);angle[2] = angle2 * (180.0/PI);
}

三角步态是一种仿生学步态,主要是参照了多足昆虫的爬行特点。在本设计爬行机器人中,共有6足,按照逆时针方向分别以A-F命名。将这6足分为2组,分别是A、C、E和B、D、F。其中,A、C、E作为第一组足,B、D、F作为第二组足。每组足的三个端点连接在一起,就组成了两个三角形。在机器人移动时,两组足之间交替运动,第一组足抬升时,第二组足就固定在地面,起到支撑作用。此时第一组足则往前伸,体现移动过程。然后再将第一组足放下,第二组足抬升,同时整个机器人的身体前移。如此循环交替两组足之间的动作,就完成了爬行机器人的移动控制。通过三角步态实现的移动具有稳定性,这是由于三角形的结构稳定特性,而且由于两组足之间是稳定分布的,当爬行机器人移动时,不仅能够确保在任何状态下都能有三足进行支撑。足之间所承受压力也是较为平均分摊的。将爬行机器人的六个足顺序进行调换,就能够实现向六个方向的移动控制,体现了爬行机器人移动控制的灵活特性。三角步态示意如下图所示。
在这里插入图片描述

三、3D结构设计

关于3D结构设计,采用Fusion360,用Fusion360的原因就是它足够灵活,操作也比较简单,在本课题中,共设计了14个3D结构件,包括重复在内,一共打印了86个结构件。Fusion360设计界面如下图。
在这里插入图片描述
由于在大二期间有幸接触了3D打印机,产生了浓厚的兴趣,于是同年就基于开源项目自己DIY了一台3D打印机,主要就是在淘宝上买来零件,根据教程组装,给控制板烧录固件,就搭建起了人生的第一台3D打印机。关于本结构设计,也并非空穴来风,而是参考了国外的一个开源项目的3D结构设计。那么为什么要自己重新去做呢,主要原因有两个,第一就是我自己想独立完成本课题的全部设计(没有完全实现,因为时间不够,云台部分还是采用了OPENMV官方开源的结构),第二就是开源项目中的结构设计我感觉有些地方不合理(有些地方容易断裂,当然也可能和打印机精度和耗材材质有关),而且与我需要用的舵机不适配,于是我就自行设计了爬行机器人的3D结构。下图为开源项目的结构示意图。
在这里插入图片描述
而我自己设计的3D结构图,从形状上大部分参考了该项目,但在细节方面和尺寸方面做出了改动,使其能够适配国产舵机,也能满足本人的审美需求。下图为本设计的结构图。
在这里插入图片描述

四、硬件设计

关于硬件,做了两个PCB的设计。分为主控板和驱动板两块板子,两块板子之间通过2.54mm的排针进行连接。

其中驱动板主要采用贴片式的封装,通过PCA9685芯片提供16个PWM输出接口,再由主控单元引出2个PWM输出接口,完成18足的舵机驱动。驱动板也设计了2个5V电源管理模块,分别用于舵机的供电以及控制系统的供电。

主控板则主要采用直插式的封装,引出了主控STM32单片机最小系统、OLED显示屏、蓝牙模块等的接口,通过排插与驱动板的连接,体现控制特点。

硬件设计示意图如下。
在这里插入图片描述
整个设计看起来也比较简单,板子的体积也比较大,不够紧凑。布线也比较随意,主要原因还是为了求稳,毕竟是毕业设计,没有那么多时间去试错。今后也希望自己在有时间时进行改良,去实现更好地想法。

主控板

主控板采用直插封装,主控用的是STM32F103C8T6最小系统单片机,也就是市面上常见的小模块,引出了蓝牙接口,实现手机蓝牙控制;OLED接口,进行眼神动画展示;FLASH存储模块接口,存放眼神表情;MPU6050接口,保持姿态稳定;云台接口,控制两个舵机驱动摄像头云台转动;RGB灯接口,实现灯光特效。
在这里插入图片描述

驱动板

驱动板用到了贴片焊接,用的舵机驱动芯片应该是市面上中低配置的一款,主要引出了18个舵机驱动接口,2个电源管理模块,1个电源输入接口和1个主控通信接口。
在这里插入图片描述

五、软件设计

软件设计主要分三块,控制程序、机器视觉和APP设计。

控制程序

采用了KEIL5-IDE来设计STM32单片机的控制程序。本设计核心程序是一种自定义的算法,实际上也就是根据三角步态来一帧一帧的去写控制,没有太大的参考价值,但我在设计过程中也有了一些其他想法,如果能实现的话确实是一个不错的创新点,在后续过程中会加以完善。

关于思路

  1. 对PCA9685进行驱动控制,完成16路的舵机驱动控制,通过IIC通信建立该芯片与主控芯片之间的联系;
  2. 对STM32单片机的PWM输出进行配置,配置好4个输出通道,其中2个用于2足的驱动,另外2个用于驱动云台;
  3. 封装角度控制函数,输入参数为舵机编号(1-20)与舵机执行角度,输出效果是控制该编号舵机执行至该角度;
  4. 通过逆解算法与实际测试得出稳定移动的控制角度;
  5. 封装三角步态函数,分为6个不同方向的移动函数;
  6. 配置蓝牙串口函数,根据不同指令,体现不同的控制效果;
  7. 引入MPU6050,通过简单判断维持姿态稳定(后期改进换用精度更高的舵机,拟引入PID算法);
  8. 配置显示功能,分两个过程,先配置图显函数,再配置FLASH读取函数,实现眼神播放效果;
  9. 根据相关数据手册与资料,实现RGB灯光效果。

机器视觉

机器视觉功能实现了一个视频流传输到上位机显示的功能(就是直接调用一下图传库,进行点对点式的图传)。

APP设计

APP采用App Inventor组件搭载手机APP控制端。App Inventor是麻省理工学院某教授研发的一种开源安卓APP开发环境,采用的编程方式是一种图形化编程,能够快速实现安卓APP的开发,在本设计上位机中,通过调用其内部的蓝牙控件库来实现蓝牙无线通信,以安卓APP作为客户端,爬行机器人作为服务器,实现蓝牙通信过程,客户端将控制的指令上传到爬行机器人主机中,然后执行相应的移动控制功能和其它功能。其次上位机还搭载了Web浏览框,通过图传模块,可以将 OPENMV摄像头采集到的画面,实时上传到上位机中进行远程监控显示。APP界面如下图所示。
在这里插入图片描述
整个界面的图案是在网上找图抠下来的,也符合自己的审美预期。通过开关控制视频流传输开启;通过按键和选择框进行蓝牙连接;通过显示框和发送、清除按键,进行指令下发和指令查看;下方的12个按键是固定指令按键,按下就直接发相应的字符;滑动条可以控速;摇杆控制机器人移动和方向(摇杆是采用了内里的一个球控件,后期会出一期教程展开说明)。

六、结束语

本设计算是实现了自己的一个小想法,也有些遗憾,很多想到的功能都没有实现,祝愿自己后续能够更进一步。最后引用稚晖君的一句话结尾,“保持热爱,奔赴星海”。虽青春不再年少,但属于我们的天空却依旧广阔,愿我们带着雏鹰的斗志,勇敢高飞。

(本项目在后续整理好资料后开源,有兴趣的小伙伴可以多多讨论,分享心得)。


http://www.ppmy.cn/news/95881.html

相关文章

yolov8_track追踪加分割(yolo目标检测+追踪+分割)

**这个仓库包含了最先进的多目标追踪器。其中一些基于运动信息,另一些则基于运动和外观描述。对于后者,最先进的ReID模型也会自动下载。目前支持的模型有:DeepOCSORT LightMBN、BoTSORT LightMBN、StrongSORT LightMBN、OCSORT和ByteTrack。 我们提供了如何将这个包与流行的…

【玩转 Cloud Studio】腾讯Cloud Studio 云端开发环境上手体验

目录 1、Cloud Studio简介 2、功能体验 3、Cloud Studio优点 4、总结 1、Cloud Studio简介 Cloud Studio&#xff08;云端 IDE&#xff09;是基于浏览器的集成式开发环境&#xff0c;为开发者提供了一个稳定快速的云端工作站。用户在使用 Cloud Studio 时无需安装&#xff0c;只…

recurdyn履带问题

1.问题&#xff1a;整车履带仿真出错&#xff0c;车辆越障时遇到障碍物直接弹开 思路&#xff1a; 关于这类模型需要调节履带和地面之间的接触参数、Bushing force&#xff0c;还有驱动函数。 弹飞了是因为接触刚度太大了&#xff0c;调小一些&#xff0c;在100以内继续调节…

STC89C52+DHT20设计的环境温湿度检测仪

一、项目背景 本项目基于STC89C52单片机和DHT20温湿度传感器,实现了一款环境温湿度检测仪。通过传感器采集环境的温度和湿度数据,利用IIC接口的OLED显示屏显示出来,便于用户实时监测环境温湿度状态。 在现代社会,人们对环境温湿度的要求越来越高。无论是工作场所还是居住…

调幅波解调-二极管峰值包络检波器【Multisim】【高频电子线路】

目录 一、实验目的与要求 二、实验仪器 三、实验内容与测试结果 1.观测输入、输出波形&#xff0c;估算检波效率&#xff08;D1接法不同&#xff0c;分别观测&#xff09; 2.观察惰性失真波形(C1100nF&#xff0c;其他参数保持不变) 3.观测负峰切割失真(ma0.8&#xff0c…

Redis的常用数据结构之哈希类型

首先这里说的哈希类型针对的是redis中的value的k-v结构 常见的操作命令 hset设置值 hsetnx命令&#xff0c;不存在可以设置&#xff0c;存在设置不成功 hget取值&#xff0c;这里与字符串类型不同是要精确到filed。前面的判断也是基于field来实现的 要是field没有就返回null h…

Springboot +spring security,OAuth2 四种授权模式概念

一.简介 这篇文章来讲下Spring Security OAuth2 四种授权模式。 二.什么是OAuth2 OAuth 2.0 是一种用于授权的开放标准&#xff0c;允许用户授权第三方应用程序访问他们的资源&#xff0c;例如照片、视频或其他个人信息。OAuth 2.0 提供了一些不同的授权模式&#xff0c;包括…

SpringSecurity入门

简介 官网地址&#xff1a;https://spring.io/projects/spring-security#overview Spring家族当中&#xff0c;一个安全管理框架 Shiro也是一个安全框架&#xff0c;提供了很多安全功能。Shiro比较老&#xff0c;旧的项目当中&#xff0c;可能还在使用。上手还挺简单 在新项…