【2021集创赛】Robei杯一等奖:基于Robei EDA工具的隔离病房看护机器人设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。

团队介绍

参赛单位:重庆交通大学
队伍名称:一丘之貉
指导老师:毕波 李艾星
参赛队员:郁航 张坤 秦衡
总决赛奖项:Robei杯一等奖

摘要

基于对病房护理机器人行业的分析,发现机器人能够为人类带来医疗手术、诊治、体温检测、配送、消毒杀菌的服务,市面上的病房护理机器人不能够满足灵活多变的机器人需求,再加上受新冠疫情的影响,全球服务机器人市场规模增长快速,预计2021年市场容量占比率达36%。不同于目前市场上机器人的嵌入式设计,本项目的机器人创新采用了 FPGA 芯片,并利用国产 Robei EDA 工具进行设计和仿真。根据疫情防控以及病房隔离的需求,设计一款基于Robei EDA工具的看护机器人具备病患状态监测、病房环境监测、 无接触式运送服务、娱乐休闲服务四大基本功能。经过系统设计与调试,机器人可以达到预期的要求,随着时间的推移,机器人还可以不断地完善,可以更好的为行业服务。
在这里插入图片描述

0 作品功能

病患状态监测:机器人通过分析采集的实时图像信息,检测目标对象,并了解病患的运动方向,进而触发机器人完成跟随病患的功能;
病房环境监测:机器人通过对采集的实时图像信息进行动态监测分析,进而触发机器人完成摄像头机械臂运动控制功能实现对病房环境的监控;
无接触式运送服务:机器人通过蓝牙获取用户手机APP发送的指令,执行寻迹、遥控、机械臂运动功能,进而实现机器人物品运送;
娱乐休闲服务:机器人开创性的增加了娱乐休闲功能,通过移植贪吃蛇游戏,以及开发井字棋人机大战,实现人机互动,为患者提供娱乐休闲服务。

1 项目架构

由于主控制板AC620/Inter/EP4CE10F17C8开发板完成整个系统的大部分功能芯片资源已占82%,包括视频图像采集、两个机械臂控制、蓝牙通信、贪吃蛇四大模块,帧差、中值滤波、形态学算法、井字棋人机大战算法等四大算法,独立完成病患状态检测、娱乐休闲服务两大功能;增加第二块若贝八角板/Xilinx/XC7Z020CLG400-1 FPGA开发板完成包括机器人小车控制(智能寻迹、遥控小车)、蓝牙通信两大模块,PID算法、中值滤波两大算法,与主控制板共同完成病患状态检测(AC620负责病患目标检测获取位置信息触发八角板机器人小车跟随运动)、无接触式运送(AC620负责物品抓取与精准投放、八角板负责物品运送,都由手机发送指令控制)两大功能。整体架构设计如下图所示。
在这里插入图片描述

AC620 Robei工程顶层架构如下图所示。
在这里插入图片描述

2 系统架构设计

2.1 图像处理模块

为了实现物体的动态检测以及目标检测,所以需要完成对图像的采集、存储和处理。利用摄像头ov7670采集图像信息,存入SDRAM中,其后利用采集存储的图像经过灰度化、帧差法、中值滤波、形态学算法开运算实现物体的动态检测以及目标识别。图像处理总体架构如下图。
在这里插入图片描述

2.2 机器人运动控制模块

首先通过增量型码盘得到电机每转过单位角度的脉冲信号即A相、B相输出,通过取A相、B相的上升和下降沿进行4倍频得到电机转动速度,作为PID控制的反馈输入,从而维持电机一定的速度进行转动及机器人小车稳定前进。增量型PID算法流程图如下图。
在这里插入图片描述

然后通过超声波模块得到机器人小车与与前方物体之间的距离,当小于50cm的时候给机器人小车控制模块使能信号控制小车的运动,停止或者前进。也可以通过5路循迹模块输出的1,0信号(检测到白色给值1,黑色给值0),将这些控制信号转化为左转、右转、前进信号连接到机器人小车控制模块,来实现小车对设定轨道的识别循迹。还可以利用手机APP通过蓝牙通信发送控制指令,到蓝牙通信模块将指令转化为对机器人小车的控制信号,从而对机器人小车进行控制。

2.3 井字棋游戏模块

首先人机大战井字棋游戏功能首先要从智能棋盘出得到对弈选手落下棋子的位置,caculate计算模块分析对手所走棋的位置进而了智能计算下一步机器人棋子落下的位置,将位置信号及运动使能信号传输给auto_chess模块完成对机械臂的控制,实现机械臂抓取棋子并将棋子放在计算模块给定的位置处,实现人机游戏的交互。井字棋算法流程图如下图。
在这里插入图片描述

2.4 贪吃蛇游戏模块

移动方向模块(snake_direction_ctrl)获得外部遥控器移动方向的按键控制信息,进而控制游戏模块(game_ctrl)与随机苹果(snake_apple)产生电路一起控制蛇的运动模式(snake_mod)、最后通过HDMI显示电路(vga_top)完成可视化显示。(HDMI显示电路需要单独的工作时钟,所需还需要一个PLL锁相环电路(pll_hdmi)提供HDMI驱动时钟)。贪吃蛇算法移植框图如下图。
在这里插入图片描述

2.5 WiFi定位模块

在室内环境根据一些WiFi的接入点和移动设备进行位置指纹法定位。主要分为两个阶段:离线阶段和在线阶段。在离线阶段,为了采集各个位置上的指纹,构建一个数据库,需要在指定的区域进行繁琐的勘测,采集好的数据有时也称为训练集。在在线阶段,系统将根据KNN算法估计待定位的移动设备的位置。WiFi定位的实现如下图。
在这里插入图片描述

3 项目总结

随着决赛的完美落幕,我们的项目也算是告一段落。目前我们设计的这一款基于Robei EDA工具的隔离病房看护机器人已经基本完成了预期目标。该机器人实现了目标追随(实时监控+跟踪行走)、自主循迹行走、遥控行走、辅助抓取物体、人机互动游戏、心率检测等功能。
在整个项目设计过程中,我们合理分工并根据根据要求规划时间进度。在项目初期,小组在查阅相关资料后确定项目设计方向,并多次与指导老师进行讨论,直至确定命题,以目前新冠疫情持续笼罩的背景下,推出一款隔离病房看护机器人,旨在为医护人员减轻医疗负担与潜在感染风险;项目中期,小组成员开始分模块进行项目设计,图像处理和机械臂处理是我们重点设计的方向;在项目调试期间,小组成员采用分-总的方式进行测试工作,以保证发生错误后能够最快速地解决;最后在收尾工作时,由于小组成员在平时设计时大多保存了设计过程的记录,所以在收尾总结时省去了不好力气,再加上指导老师多次的耐心修改,收尾工作完成地很顺利。

心得体会

在历时几个月的项目设计中,小组成员一直不断重复着发现问题、思考问题、解决问题的循环中度过。整个过程中遇到了很多问题,但也从中学到了很多。
(1) 项目的实用型很重要:创新一直是我们不断追求的目标,我们往往会忽视实用的重要性。在最开始选题时,我们小组成员都一心扑在了如何突出创新点,想了很多选题都缺乏实用型,但指导老师及时建议我们更换思路然后最终确定选题方向。
(2) 抗压能力很重要:在这样一个慢周期的项目进展过程中,最考验人的就是心态的调整。经常会遇到一个问题尚未解决另一个问题接踵而至的情况,在这期间我们可能一个功能的模块都会更换很多种。在不断磨炼地过程中,抗压能力也得到了提高。
(3) 增强了的团队感:在组长的部署安排下,整个团队氛围感很融洽,这也为项目设计营造了一个良好的工作环境。在互相协作的过程中,也增进了合作的默契,为更好地完成项目提供了良好的条件。
最终,十分感谢我们的指导老师,总是耐心地给出针对性的意见。同时感谢主办方,为我们这些FPGA爱好者提供平台进行交流学习。

作品内容来源于一丘之貉,转载请标明出处。欢迎大家参加极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动,10月1日截止~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 3.1 第三方包导入

文章目录 导入第三方库第三方库概述如何获取三方库zxing库什么是zxing库安装和卸载使用zxing 导入第三方库 第三方库概述 第三方库是指由第三方开发人员或组织编写的、可在你的应用程序中使用的软件库。这些库通常提供了一些功能和工具,可以简化你的开发工作。 在…

内网穿透工具之NATAPP(一)

使用工具前,有必要了解一下什么是内网穿透吧! 内网穿透简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取。比如常用的办公室软件等,一般在办公室或家里,通过拨号上网,这样办公软件只有在本地的局…

SpringCloud 微服务全栈体系(六)

第八章 Gateway 服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管…

【Selenium】提高测试爬虫效率:Selenium与多线程的完美结合

前言 使用Selenium 创建多个浏览器,这在自动化操作中非常常见。 而在Python中,使用 Selenium threading 或 Selenium ThreadPoolExecutor 都是很好的实现方法。 应用场景: 创建多个浏览器用于测试或者数据采集;使用Selenium 控…

larvel 中的api.php_Laravel 开发 API

Laravel10中提示了Target *classController does not exist&#xff0c;为什么呢&#xff1f; 原因是&#xff1a;laravel8开始写法变了。换成了新的写法了 解决方法一&#xff1a; 在路由数组加入App\Http\Controllers\即可。 <?phpuse Illuminate\Support\Facades\Route;…

JVM虚拟机详解

目录 01JVM由哪些部分组成/运行流程 什么是程序计数器 详细介绍堆 介绍方法区&#xff08;Method Area&#xff09; 直接内存 虚拟机栈(Java Virtual machine Stacks) 垃圾回收是否涉及栈内存 栈内存分配越大越好吗 方法内的局部变量是否线程安全 什么情况下会导致栈…

Linux常见命令(持续更新)

Linux命令 Linux查看文件句柄 要查看Linux中的文件句柄&#xff0c;可以通过使用命令lsof或lsof -p <进程ID>。下面是两种方法的解释&#xff1a; 方法一&#xff1a;使用lsof命令查看文件句柄 打开终端。 输入命令lsof&#xff0c;然后按下回车键。 这将显示当前系统上…

LeetCode热题100——哈希表

哈希表 1.两数之和2.字母异位词分组3.最长连续序列 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。可以按任意顺序返回答案。 // 题解思路&#xff1a;使用哈…

WSL——ubuntu中anaconda换源(conda、pip)

1、conda 打开Ubuntu&#xff0c;输入下列命令。 conda config --set show_channel_urls yes 在文件管理器地址栏&#xff0c;输入&#xff1a;\\wsl$。打开Ubuntu根路径&#xff0c;其中显示了.condarc文件。 以文本形式打开&#xff0c;并输入要换的源&#xff0c;保存即可。…

【QT】信号和槽能自动传递参数

一、前置示例代码 main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv); // 应用程序对象a&#xff0c;在Qt中&#xff0c;应用程序对象&#xff0c;有且仅有一个。Widget w; // 窗口对…

JS中return的用法

在JavaScript中&#xff0c;return是一个关键字&#xff0c;用于从函数中返回值。当函数执行到return语句时&#xff0c;它将立即停止执行并返回指定的值。如果函数未指定返回值&#xff0c;则默认返回undefined。return语句可以在函数内的任何地方使用。 以下是return语句的用…

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

【AD9361 数字接口CMOS LVDSSPI】B 并行数据之CMOS

##接上一篇&#xff1b; 本节介绍 AD9361 数字接口CMOS &LVDS&SPI最后一张表中四种工作模式的具体配置及时序波形图。 目录 1、单端口半双工模式 &#xff08;CMOS&#xff09; *代称 SHC*换句话说&#xff0c;最大值是12‘b0111_1111_1111&#xff0c;即0x7FF&#xf…

Selenium自动测试框架

selenium3 selenium元素的定位css 选择器Xpath 操作测试对象 API添加等待浏览器的操作键盘操作鼠标操作定位一组元素下拉框弹窗上传文件 <dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><…

科大讯飞发布讯飞星火 3.0;开源AI的现状

&#x1f680; 科大讯飞发布讯飞星火 3.0&#xff0c;综合能力超越ChatGPT&#xff08;非GPT-4版&#xff09; 摘要&#xff1a;科大讯飞在2023全球1024开发者节上宣布讯飞星火 3.0正式发布&#xff0c;号称综合能力已超越ChatGPT。据介绍&#xff0c;星火认知大模型 V3.0在文…

Windows查看核心与线程数

文章目录 前言一、可视化界面1、任务管理器2、设备管理器3、CPU-Z 二、命令或程序1、cmd命令2、Java程序 前言 查询电脑硬件CPU信息命令的学习&#xff0c;予以记录&#xff01; 参考博客&#xff1a;https://blog.csdn.net/huazicomeon/article/details/53540852 一、可视化界…

Flutter报错RenderBox was not laid out: RenderRepaintBoundary的解决方法

文章目录 报错问题分析问题原因 解决办法RenderBox was not laid out错误的常见原因常见原因解决方法 RenderRepaintBoundaryRenderRepaintBoundary用途 报错 RenderBox was not laid out: RenderRepaintBoundary#d4abf relayoutBoundaryup1 NEEDS-PAINT NEEDS-COMPOSITING-BI…

“华为杯”研究生数学建模竞赛2015年-【华为杯】B题:数据的多流形结构分析(续)(附python代码实现))

目录 6.3 问题三求解 6.3.1 题 a 求解 6.3.2 题 b 求解 6.3.3 题 c 求解 6.4 问题四求解 6.4.1 图

LibreOffice编辑excel文档如何在单元格中输入手动换行符

用WPS编辑excel文档的时候&#xff0c;要在单元格中输入手动换行符&#xff0c;可以先按住Alt键&#xff0c;然后回车。 而用LibreOffice编辑excel文档&#xff0c;要在单元格中输入手动换行符&#xff0c;可以先按住Ctrl键&#xff0c;然后回车。例如&#xff1a;

力扣 26. 删除有序数组中的重复项

目录 1.解题思路2.代码实现 1.解题思路 由于数组为非严格递增排列的数组&#xff0c;因此可利用快慢指针&#xff0c;如果快指针减一不等于快指针&#xff0c;将快指针的值给慢指针&#xff0c;并将快慢指针同时加一&#xff0c;但如果相同&#xff0c;则只让快指针加一向后走…