机器人制作开源方案 | 核酸检测辅助机器人

news2024/11/27 2:31:45

作者:周文亚、胡冲、王晓强、张娟

单位:北方民族大学

指导老师:马行、穆春阳

1. 场景调研

      新型冠状病毒肺炎全球流行已近三年,其变异毒株不断增强的传播力同时其症状不断变轻,其中无症状(怎么确认是否被感染)导致人们产生放轻松“躺平”还是严控疑虑的心理交织。新型冠状病毒核酸检测结果是能够准确和迅速的识别感染个体,防止新型冠状病毒传播,落实四个早的重要措施。如今疫情反复、感染范围广、防控难度高,规范、高效地开展新型冠状病毒核酸检测是做好疫情防控的前提。医护检测人员数量有限、检测时间集中在几小时之内、而且大多数核酸检测点都是临时搭建,医护人员也是紧急召集调整,任何时间都会听从安排展开核酸检测。不仅如此小区居民排队造成近距离接触;采样时必须去掉口罩,有时还要求“啊”,采样间隔时间很短,造成局部采样空间病毒可能富集,对采样人员和被采人员都增加感染几率;工作人员和志愿者工作量大,手部消毒、取棉签、采样、掰断棉签、放进试管、旋上盖。这是核酸检测医务人员每天要重复无数遍的循环动作;应检尽检。穿防护服很辛苦,对温度的感知更低,疲惫容易使得医护人员采样时采样效率降低,被采样时就能感受到他们的疲惫。对于行走不便人员下楼采样存在困难。为降低工作人员以及未感染人员的感染病毒风险, 提高核酸检测质量通过无人采样核酸机器人的全自动化操作,从取棉签、到咽拭子采集、拧试管短短几十秒内,一次核酸采样即可完成。不惧高温、严寒,且精确度高,即使每天都在做重复性的工作,也不会感到劳累。相比人工采样,利用机器人核酸采样技术,可以保证每次采样全程动作精准、规范,实现减少了医务人员高风险暴露,缓解了医务人员短缺问题的同时,提高了工作效率,节约了医疗资源。

2. 设计思想

      本作品设计的核酸检测辅助机器人是以探索者组件来进行搭建的,以Arduino作为平台的开发板进行控制设计的,模拟真实核酸检测场景作业。这个机器人设计的核心是自动做核酸采样和平台的自主移动,它可以自主移动到需要做核酸的检测点,然后在医护人员及志愿者的辅助下,独立自主的完成核酸采集工作,降低了核酸检测时候出现交叉感染,减少了医护人员的负担,减缓了医护人员短缺的现象,符合当今社会的发展,具有重要的深挖价值。

3. 机器人本体技术路线说明

      本作品的表面设计图如下所示,由两个按键模块,两个消毒模块,试管瓶子和瓶盖的放置位置,一个六自由度用舵机搭建的采样机器臂,两个触须模块,两个超声波测距模块,然后使用开发板的串口与移动平台通讯。

表面设计图

作品的底部设计图如下所示,采用四个步进电机,四个麦克纳姆轮连接组成,然后利用两层连接柱架高地盘,使小车的通行能力大大提升。

底部设计图

4. 系统框图模块分析

      本参赛作品主要分为核酸辅助检测和移动平台两大部分组成,总框图如下所示。核酸辅助检测部分为首先医护人员每次采样后通过消毒按键为自己手部和机械臂进行消毒,然后把棉签放入机器臂的末端后按下核酸检测按键来控制机械臂进行核酸采样,机械臂把采样后的棉签放入试管盒中,然后回到初始位置进行下一次采样。移动平台是为了增强机器人的活动性,方便性和智能性而设计,在机器人进行自主移动时,通过超声波测距模块和触须测高模块进行避障。

总体框图

4.1 机器人消毒模块

      本模块为了在核酸检测过程中对医护人员和核酸采样人员进行保护,避免交叉感染而设计,分为医护人员核酸采样手部消毒和每次采样后机器臂末端,采样区间消毒两部分消毒。通过一个按键作为触法源,一个自由度的机器臂为医护人员进行消毒,两个自由度的机器臂为采样后机器臂末端和采样区间进行消毒。其程序流程图如下所示:

消毒模块流程图

4.2 机器人核酸采样模块

      核酸采样模块首先医护人员把棉签放入六自由度的机器臂的末端夹持器里,然后按下采样按键,机械臂末端先夹持住棉签,然后移动到采样区域,再进行核酸采样,采样过后移动到存放采样棉签的试管瓶口的上端,夹持器放下棉签到试管里,最后移动到初始的位置进行下一次采样,程序流程图如下所示

核酸采样模块流程图

4.3 机器人超声波测距避障模块

      在移动平台的前端左右两边均匀的安装两个超声波测距模块,若检测到超声波模块的距离会导致平台发生碰撞时,再检测两个超声波模块哪一个会发生碰撞,若检测到右边的会发生碰撞,则小车往左避障,若检测到左边的会发生碰撞,则小车往右避障。若两个超声波模块都检测到会发生碰撞,小车先执行左避障程序,若不能避障,再执行右边避障程序, 程序流程图如下所示

超声波测距避障模块流程图

4.4 机器人触须测高避障模块

      在移动平台的前端左右两边均匀的安装两个触须测高模块,若检测到触须模块的高度会导致平台发生碰撞时,再检测两个触须模块哪一个会发生碰撞,若检测到右边的会发生碰撞,则小车往左避障,若检测到左边的会发生碰撞,则小车往右避障。若两个触须模块都检测到会发生碰撞,小车先执行左避障程序,若不能避障,再执行右边避障程序, 程序流程图如下所示

触须测高避障模块流程图

5. 示例程序

消毒程序代码

int a=0,b=0,c=0;

#define ECHOPIN A0

#define TRIGPIN A1

#include <Servo.h>

Servo servo_pin_4;

Servo servo_pin_7;

Servo servo_pin_11;

void setup()

{

  Serial.begin(9600);

  pinMode(ECHOPIN, INPUT);

  pinMode(TRIGPIN, OUTPUT);

  servo_pin_4.attach(4);

  servo_pin_4.write( 160);

  servo_pin_7.attach(7);

  servo_pin_7.write( 50);

  servo_pin_11.attach(11);

  servo_pin_11.write(90);

  delay(300);

}

void loop()

{

  digitalWrite(TRIGPIN, LOW);

  delayMicroseconds(2);

  digitalWrite(TRIGPIN, HIGH);

  delayMicroseconds(10);

  digitalWrite(TRIGPIN, LOW);

  float distance = pulseIn(ECHOPIN, HIGH);

  Serial.println(distance);

  if(0<distance)

  {

  int a=160;b=50;c=90;

  servo_pin_4.write(a);

  servo_pin_7.write(b);

  servo_pin_11.write(c);

  for(a=160;a>=100;a-=1)           

  {servo_pin_4.write(a);delay(30);}  

   for(a=100;160<=a;a+=1)           

  {servo_pin_4.write(a);delay(30);}

  for(b=50;b>=20;b-=1)

  {servo_pin_7.write(b);delay(30);}

 

  for(c=90;c>=20;c-=1)

  {servo_pin_11.write(c); delay(30);}

  for(b=20;50<=b;b+=1)

  {servo_pin_7.write(b);delay(30);}

  for(c=20;90<=c;c+=1)

  {servo_pin_11.write(c); delay(30);}

  delay(100);

  }

}

机器臂核酸采样代码

int a=0,b=0,c=0,d=0,e=0;

#define ECHOPIN A0

#define TRIGPIN A1

#include <Servo.h>

Servo servo_pin_4;

Servo servo_pin_7;

Servo servo_pin_11;

Servo servo_pin_3;

Servo servo_pin_8;

void setup()

{

  Serial.begin(9600);

  pinMode(ECHOPIN, INPUT);

  pinMode(TRIGPIN, OUTPUT);

  servo_pin_4.attach(4);

  servo_pin_4.write( 120);

  servo_pin_7.attach(7);

  servo_pin_7.write( 90);

  servo_pin_11.attach(11);

  servo_pin_11.write(90);

  servo_pin_3.attach(3);

  servo_pin_3.write( 100);

  servo_pin_8.attach(8);

  servo_pin_8.write(90);

  delay(300);

}

void loop()

{

  digitalWrite(TRIGPIN, LOW);

  delayMicroseconds(2);

  digitalWrite(TRIGPIN, HIGH);

  delayMicroseconds(10);

  digitalWrite(TRIGPIN, LOW);

  float distance = pulseIn(ECHOPIN, HIGH);

  Serial.println(distance);

  if(0<distance)

  {

  int a=120;b=90;c=60;d=100;e=90;

  servo_pin_4.write(a);

  delay(200);

  servo_pin_7.write(b);

  delay(200);

  servo_pin_11.write(c);

  delay(200);

  servo_pin_3.write(d);

  delay(200);

  servo_pin_8.write(e);

  delay(200);

//1;夹面棉签

  for(d=100;d<=120;d+=1)

  {servo_pin_3.write(d);delay(30);}

//2;做核酸口预设位置

  delay(200);

  for(a=120;a>=35;a-=1)           

  {servo_pin_4.write(a);delay(30);}

//3:接近测试口

  delay(200);

  for(b=90;b>=80;b-=1)           

  {servo_pin_7.write(b);delay(30);}

//4;采集

  delay(200);

  for(a=35;a<=45;a+=1)           

  {servo_pin_4.write(a);delay(60);}

  delay(200);

   for(a=45;a>=35;a-=1)           

  {servo_pin_4.write(a);delay(60);}

//5;返回接近测试口

  delay(200);

  for(b=80;b<=100;b+=1)           

  {servo_pin_7.write(b);delay(30);}

//6;移动核酸管上口

  delay(200);

  for(a=35;a<=105;a+=1)           

  {servo_pin_4.write(a);delay(30);}

  delay(200);

  for(b=100;b>=60;b-=1)           

  {servo_pin_7.write(b);delay(30);}

  delay(200);

  for(c=60;c<=100;c+=1)           

  {servo_pin_11.write(c);delay(30);}

  delay(1000);

  //7:放下棉签

  for(d=120;d>=100;d-=1)

  {servo_pin_3.write(d);delay(30);}

  delay(200);

  for(b=60;b<=90;b+=1)           

  {servo_pin_7.write(b);delay(30);}

   delay(200);

   for(c=90;c>=60;c-=1)           

  {servo_pin_11.write(c);delay(30);}

  //8:回到初始的点

  delay(200);

  for(a=105;a<=120;a+=1)           

  {servo_pin_4.write(a);delay(30);}

  delay(100);

  }

}

6. 作品创新点

      ① 避免了核酸采样医护人员和广大人民群众在新冠肺炎在核酸采样时遭受交叉感染。

      ② 减少了核酸采样医护人员的体力负担。

      ③ 此机器人对核酸检测工作人员的医护职业水平要求不高,操作不仅简单,而且很容易上手,缓解了核酸采样医护人员短缺的尴尬局面。

      ④ 采用自主移动平台增加了机器人活动性和便利性,可以在任何地方,任何场地进行核酸采样。

7. 作品难点及解决方案

      难点一:机械臂怎样对人进行采样

      解决方案:通过先接近,再接近,后采样的策略,本设计采用定点采样,做核酸人员通过一次性采样嘴再机器人采样口等待核酸采样,然后机械臂先接近采样口,再接近人的口腔,最后进行核酸采样。

      难点二:移动平台的移动

      解决方案:通过PID对四个轮子进行差速控制,进而控制移动平台的前后,左右转向移动。

      难点三:两个控制板之间的通讯

      解决方案:通过串口通讯来对两个控制板进行数据的传输。

更多详情请见:【S047】核酸检测辅助机器人

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

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

相关文章

EM算法公式详细推导

EM算法是什么&#xff1f; EM算法是一种迭代算法&#xff0c;用于含隐变量概率模型参数的极大似然估计&#xff0c;或极大后验概率估计。EM算法由两步组成&#xff1a;E步&#xff0c;求期望&#xff1b;M步&#xff1a;求极大。EM算法的优点是简单性和普适性。 符号说明&…

QT基础知识

QT基础知识 文章目录 QT基础知识1、QT是什么2、Qt的发展史3、为什么学习QT4、怎么学习QT1、工程的创建(环境的下载与安装请百度&#xff09;2、创建的工程结构说明3、怎么看帮助文档1、类使用的相关介绍2. 查看所用部件&#xff08;类&#xff09;的相应成员函数&#xff08;功…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于碳捕集与封存-电转气-电解熔融盐协同的虚拟电厂优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到多个关键概念&#xff0c;让我们逐一解读&#xff1a; 碳捕集与封存&#xff08;Carbon Capture and Storage&#xff0c;CCS&#xff09;&a…

【Linux】常用的基本命令指令①

前言&#xff1a;从今天开始&#xff0c;我们逐步的学习Linux中的内容&#xff0c;和一些网络的基本概念&#xff0c;各位一起努力呐&#xff01; &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f448; &#x1f4af;代码…

如何解决大模型的「幻觉」问题?

如何解决大模型的「幻觉」问题&#xff1f; 如何解决大模型的「幻觉」问题&#xff1f;幻觉产生原因&#xff1f;模型原因数据层面 幻觉怎么评估&#xff1f;Reference-based&#xff08;基于参考信息&#xff09;基于模型的输入、预先定义的目标输出基于模型的输入 Reference-…

基于ssm的资产管理信息系统+vue论文

摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前企业对于资产信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以人力为主的管理模式已然落后。本人结…

《Linux C编程实战》笔记:实现自己的myshell

ok&#xff0c;考完试成功复活 这次是自己的shell命令程序的示例 流程图&#xff1a; 关键函数 1.void print_prompt() 函数说明&#xff1a;这个函数打印myshell提示符&#xff0c;即“myshell$$”. 2.void get_input(char *buf) 函数说明&#xff1a;获得一条指令&#…

13|代理(下):结构化工具对话、Self-Ask with Search以及Plan and execute代理

13&#xff5c;代理&#xff08;下&#xff09;&#xff1a;结构化工具对话、Self-Ask with Search以及Plan and execute代理 什么是结构化工具 LangChain 的第一个版本是在 2022 年 11 月推出的&#xff0c;当时的设计是基于 ReAct 论文构建的&#xff0c;主要围绕着代理和工…

2024美赛数学建模常用数学建模模型之——层次分析法

一、层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的常常是 一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次 分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 …

GPU的硬件架构

SM: streaming Multiprocessor 流多处理器 sm里面有多个(sp)cuda core 32个线程称为一个warp&#xff0c;一个warp是一个基本执行单元 抽象概念&#xff1a;grid 网格 block 块 thread 线程 块中的线程大小是有讲究的&#xff0c;关乎到资源的调度&#xff0c;一般是128&#x…

macbook电脑2024免费好用的系统清理优化软件CleanMyMac X4.14.7

CleanMyMac X2024来帮助你找到和删除不需要的文件。CleanMyMac X是一款专业的mac清理软件&#xff0c;它可以智能地扫描你的磁盘空间&#xff0c;找出并删除大型和旧文件&#xff0c;系统垃圾&#xff0c;iTunes垃圾&#xff0c;邮件附件&#xff0c;照片库垃圾等&#xff0c;让…

【Vue2+3入门到实战】(22)VUE3之组合式API - setup、reactive和ref函数、computed、watch、生命周期函数详细讲解

目录 一、组合式API - setup选项1. setup选项的写法和执行时机2. setup中写代码的特点3. <script setup>语法糖 二、组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 三、组合式API - computed四、组合式API - watch1. 侦听单个数据2. 侦听多个数据…

Java学习,一文掌握Java之SpringBoot框架学习文集(3)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

electron进程通信之预加载脚本和渲染进程对主进程通信

主进程和预加载脚本通信 主进程 mian,js 和预加载脚本preload.js,在主进程中创建预加载脚本, const createWindow () > {// Create the browser window.const mainWindow new BrowserWindow({width: 300,height: 300,// 指定预加载脚本webPreferences: {preload: path.j…

数据结构【查找篇】

数据结构【查找篇】 文章目录 数据结构【查找篇】前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录一、顺序查找二、折半查找三、 二叉排序树的查找四、红黑树 结语 前言 为什么突然想学算法了&#xff1f; > 用较为“官方”的语言讲&am…

22 闪烁按钮

效果演示 实现了一个按钮的样式&#xff0c;包括背景颜色、边框、圆角、点击效果等。当鼠标悬停在按钮上时&#xff0c;按钮的背景颜色和文字颜色会发生变化&#xff0c;同时按钮会出现闪烁的效果。 Code <button class"btn"><svg height"24" wi…

UDP通信(服务器-客户端)

一、 UDP服务器-客户端通信 UDP&#xff08;User Datagram Protocol&#xff09;是一种面向无连接的传输层协议&#xff0c;它提供了一种简单的、不可靠的数据传输服务。与TCP&#xff08;Transmission Control Protocol&#xff09;不同&#xff0c;UDP不建立连接&#xff0c;…

奈奎斯特定理

奈奎斯特定理是通信领域中重要的理论基础之一&#xff0c;它对于数字通信系统中的信号采样和重构具有至关重要的作用。在数字信号处理和通信技术中&#xff0c;奈奎斯特定理的应用不仅具有理论意义&#xff0c;还对通信系统的设计、优化和性能提升起着重要的指导作用。本文将以…

MySQL8.0主从复制实现及遇到的个人问题

文章目录 1、准备两个服务器或者虚拟机2、主库配置3、从库配置4、配置过程中使用到的命令5、遇到的问题 1、准备两个服务器或者虚拟机 这里使用的VM虚拟机的Centos、MySQL版本是8.0.26、使用FinalShell进行远程操作。 2、主库配置 修改MySQL配置文件(/etc/my.cnf) #启用二进…

leetcode:1464. 数组中两元素的最大乘积(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums&#xff0c;请你选择数组的两个不同下标 i 和 j&#xff0c;使 (nums[i]-1)*(nums[j]-1) 取得最大值。 请你计算并返回该式的最大值。 示例 1&#xff1a; 输入&#xff1a;nums [3,4,5,2] 输出&#xff1a;12 解释&#xff1a;如…