2022年 大学生工程训练比赛[物料搬运]

2023-11-20

本人和团结参加了2022年大学生工程训练(简称工训赛)校赛选拔,准备了几个月的时间和花费了较多的资金,由于疫情等多种情况,很遗憾未能参加湖南省省赛,过了这么久还是写个博客记录参赛准备和调试过程。

目录

 一、比赛要求

二、整体思路

 三、硬件模块

 四、视觉部分

五、机械臂部分

五、软件定位部分


 一、比赛要求

比赛流程:水平铺设的赛场尺寸为2400>2400 (mm)正方形平面区域(如图1所示,两条红色的中心线,实际上没有),赛场周围安装80 mm高的亚光白色挡板,仅作为场地边界标识,不宜作为寻边、定位等其它任何用途。赛道地面为浅黄色,地面图案中央设有4块340>340 (mm)黑色方框,为机器人不能进入区域,线宽(方框内侧)为20mm。在比赛场地内,设置出发区、返回区、中转区、物料投放区(前线)、挂件区(后方)。其中机器人初赛自主规划路径,完成战争物资的搬运过程,取货(中转区),运送前线(物料投放区),胜利后挂奖章(挂件区) ;机器人决赛,两台机器人传递情报(出发区),飞车夺物 (中转区),敌后安装炸弹爆破(物料投放区),胜利会师(挂件区)。出发区和返回区的尺寸均为300x300 (mm),颜色分别为青色和紫色。 

 


二、整体思路

       智能物流搬运小车采用树莓派做为小车的大脑,通过和stm32Arduino、激光雷达等通讯达到比赛要求定位,机械臂,移动等操作, 通过树莓派接收IMU、激光雷达进行里程计的算法确定当前位置、通过ros给与目标点,计算出最信任路径,并且通过对物料颜色、边沿识别调整智能车位置,调整完毕,机械臂进行抓取和精准放置。

系统方案难点:

1、定位:定位采用激光雷达、IMU等较精密模块,对底盘驱动要求极为苛刻

2、物料识别:对于物料的识别过程中需要精准的传输物料的位置信息给树莓派,光源、杂波会识别造成影响

3、机械臂:通过设想需要自行设计并调试其是否精准抓取并放置物料


 三、硬件模块

讲个小故事:在调试的时候,当时我们使用的铝板会导电,发生了俩次意外,短路导致实验室电闸都跳了,实验室一半的电脑黑屏,所以大家一定要注意,不然芯片易烧坏也不安全!

        硬件本次使用了较多,包括整个小车的框架,在轮趣科技购买较贵,包括使用树莓派、为了配合电机驱动画了一个stm32来使用减少杜邦线,大家可以比较一下,可以看出本来和电机和霍尔传感器连接的线都减去了,看起来更整洁了也更加稳定。

      本次的核心板是自行设计的,所以大家使用的时候要根据自己的io口去设计,由于为了稳定MPU6050,也将其设计进去,经过测试还是很稳定的!

      由于使用了很多模块,于是电量使用很多,那么电接口也是很多的,也是为了美化其接线,设计电源管理模块,使用boost和buck'电路,但是该模块在实际使用中不够好,电流输出还是弱了,最终还是买了俩个升压和降压模块,将其设计成一个电源管理模块。

 

 

 本次最为主要的模块列如下,还包括很多测试但是未使用的器材,所以整体花销还是较大的。

序号 所需器件 7 摄像头模块
1 树莓派 8 电池
2 stm32核心板 9 电源管理模块
3 电机驱动板 10 IMU惯导
4 舵机 11 地图搭建
5 机械臂组件 12 Arduino加驱动板
6 小车结构铝板 13 激光测距模块

 四、视觉部分

       利用摄像头和通过python编写相关算法对物料的颜色和边缘进行提取和识别,发送正确信息至树莓派,树莓派发送信息给arduino驱动机械臂和发送给32调整智能车的位置。

       识别二维码和条形码获取二维码和条形码中包含的信息从而了解比赛的相关信息。

本人负责硬件、材料购买和文章方面,视觉和定位方面不能详细为大家介绍,只能稍提一嘴

        其中光线会影响到其识别到的位置,所以需要高精度的滤波,使用膨化,腐蚀等方法尽量的消除外界的影响,从而传递一个精确的位置给树莓派主控。 


五、机械臂部分

        机械臂使用的为分开购买舵机和组件,大家要注意的是:舵机一个一个调零后再进行组装,不然组装好了还得拆,很麻烦的,当时我和学弟俩个花了好久才最终搞好这个机械臂,因为不是一套的,所以部分卡住,需要暴力组装,当时设想的是从上往下抓物料,通过在网上寻找找到了一个类似这样的,但是通过打印出来实际效果不够好。

        机械臂调试过程,可以通过ros建模,在ros操作机械臂,现实中机械臂便会复现,机械臂部分最主要的要前面识别的位置精确才能更好的进行调试,下面是调试的视频。

机械臂


五、软件定位部分

      本次比赛定位为难点,采用的方案为激光雷达+IMU(惯导)+里程计(代码部分)进行处理

      通过激光雷达和IMU进行收集场地数据和滤波处理后,并且通过里程计的计算将数据传给树莓派、树莓派运行ros软件确定现在小车所在位置

      驱动:通过ros了解智能车所在位置后、通过ros给与智能车目标点,并且通过计算给出最信任的路径、发送速度信息给stm32、32驱动电机行驶,在运行过程中通过霍尔编码器和定位设备不断进行调整达到路径规划的效果


      下面为智能车整体部分,还缺少一部分未安装,当时是在前期调试过程中拍的,视频也是在参加校赛选拔时,为了答辩准备的,但是最终还是遗憾的未能参加省赛,但是还是学了很多。

工训赛智能车


 参考资料:

 2021-工程实践与创新大赛-智能物流搬运 - 知乎

 http://t.csdn.cn/wxZlS

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022年 大学生工程训练比赛[物料搬运] 的相关文章

随机推荐

  • mmdetection No module named 'imagecorruptions'

    报错原因 imagecorruptions cpp文件需要重新编译 解决方案 mmdetection 目录下运行 python setup py develop
  • 权重计算方法_终身持续学习-可塑权重巩固(Elastic Weight Consolidation)

    回过头来梳理了一下EWC方法 在持续终身学习里面很经典的一个方法 Deepmind写的晦涩难懂x 当时折腾了好久才理解 因为自己有点菜 条件和目标 论文中 假设存在两个任务A和B 可以推广为旧任务和新任务 数据集分别为D和D 模型学习完任务
  • 2021-07-01 RuoYi-Vue-Plus

    提示 https gitee com JavaLionLi RuoYi Vue Plus from gitee search 疯狂的狮子li icon https www iconfont cn 渐变色 http color oulu me
  • ASP.NET 中实现 读取数据库二进制 下载

    实现思路 首先从数据库中把二进制 写入到服务器上 生成临时文件 然后再从服务器上 进行下载 具体代码如下 string filename test jpg 这个就是要存放到服务器的文件名 Response ContentType appli
  • Jenkins自动化测试

    学习 Jenkins 自动化测试的系列文章 Robot Framework 概念 Robot Framework 安装 Pycharm Robot Framework 环境搭建 Robot Framework 介绍 Jenkins 自动化测
  • mariadb主从复制

    1 准备两台服务器 一台设置为master服务器 一台设置为slave服务器 两台服务器先关闭防火墙 关闭selinux systemctl stop firewalld setenforce 0 两台服务器都需要安装mariadb 这里用
  • google c++代码规范-中文翻译

    头文件 lt Header Files gt The define Guard 所有的头文件都应该使用 define等来防止头文件重复包含 宏的格式应该为
  • Python实现二叉搜索树的删除功能

    Python实现二叉搜索树的删除功能 二叉搜索树 二叉查找树 Binary Search Tree 又称为排序二叉树 有序二叉树 二叉搜索树的实现可以参考 https blog csdn net weixin 43790276 articl
  • 标准正态分布变量的积累概率分布函数C\C++

    BS模型中用到的CDF函数实现 找到两种常见的实现方式 实现一 include
  • 图像处理——我理解的傅里叶变换

    1 傅里叶变换的理解 傅里叶变换的相关数学公式目前还没有搞懂 先不整那个东西 我们主要是研究傅里叶变换的一些思想和应用 这个思想起源于牛顿研究那个三棱镜 白光透过棱镜之后会被分解为七种颜色的光 这些光叠加又能形成白光 所以说可以把一种事物分
  • selenium自动向下滚动页面,并指定最大滑动距离

    需要selenium控制的chrome向下滑动 自动加载一些内容 核心代码是 browser execute script window scrollBy 0 300 这行可以向下滑动300个像素 需要的工具函数如下 def roll wi
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • chatgpt赋能python:Python打包发布完整指南:从基础知识到实践操作

    Python打包发布完整指南 从基础知识到实践操作 作为一名有着十年python编程经验的工程师 我清楚地知道打包发布Python应用程序是非常重要的 它能帮助我们方便地分享和分发程序 并且能够让其他人通过使用我们的程序来提高自己的工作效率
  • 别人总结的一些git教程大全

    工作中 除了必备的基础知识 还要学会与人合作 如何将你开发的小功能整合到整个项目的大框架中 如何让你的实验性代码不影响到大框架中的代码性能 如何让你放下手中写到一半的代码去修改突然出现的bug 这些都是会出现的情况 为了应对这些情况 新入职
  • Qt QML多线程-WorkerScript的使用

    Qt QML多线程 WorkerScript的使用 在开发过程中 常常会遇到一些需要进行耗时计算的操作 如果这些操作都放在主线程中完成 就会导致UI界面被卡死 用户体验很不好 为了解决这个问题 我们可以将这些耗时计算操作放在一个单独的线程中
  • java综合(六)hibernate.current_session_context_class配置

    在前面一节 spring与Hibernate整合 事务 中 总是出现不存在激活事务的问题 结果去掉
  • 使用命令启动默认程序(例如启动系统默认浏览器打开指定网址)

    文章目录 目的 基础说明 代码示例 Golang 总结 目的 通过命令调用系统默认应用程序打开对应格式的文件是比较常用的功能 这篇文章将介绍下相关内容 基础说明 Windows windows下可以使用 start 指令来启动默认程序打开对
  • 数据结构——广度优先遍历(BFS)无向连通图

    以下是数据结构中关于广度优先遍历无向连通图的操作 编程风格参考严蔚敏版数据结构 其实深度优先遍历就是二叉树的层次遍历的推广 头文件及宏 include
  • Python----利用Threading和Queue实现多线程

    用来学习Threading Queue的组合使用 实现多线程编程 实现功能 利用 ping 来检测主机是否存活 代码如下 coding utf 8 from IPy import IP from subprocess import Pope
  • 2022年 大学生工程训练比赛[物料搬运]

    本人和团结参加了2022年大学生工程训练 简称工训赛 校赛选拔 准备了几个月的时间和花费了较多的资金 由于疫情等多种情况 很遗憾未能参加湖南省省赛 过了这么久还是写个博客记录参赛准备和调试过程 目录 一 比赛要求 二 整体思路 三 硬件模块