Code Monkey home page Code Monkey logo

23autoengineer's Introduction

自动兑换与自动取矿工程

技术方向 开源部分 开源技术点 编写负责人
算法方案 工程自动兑矿与自动取矿 自动兑矿与自动取矿的技术通路 余承寰、曾熙朗
  • 本次开源作品自动兑换与自动取矿工程,出自华南理工大学华南虎战队工程视觉余承寰和工程电控曾熙朗。作品仅用于技术交流,未经作者允许,不得作任何商业用途。
  • 本作品的声明以及其修改权、保护作品完整权及最终解释权均归华南理工大学华南虎战队所有。

背景

​ 23赛季工程兑换难度增大,在经过分区赛的尝试和国赛的规则改动后,所有的队伍都可以兑换最高等级的矿石。在此情景下,充分缩短兑换时间是提高赛场队伍作战能力的重要战略。缩短兑换时间的方法目前有2种,一种是使用自定义控制器由操作手手动兑换,另一种方案是通过视觉对兑换站的灯条进行识别从而驱动机械臂自动兑换。自动取矿同理。采用第二种方案的原因是,自定义控制器的表现始终取决于操作手的赛场表现,有较大的不确定性,而视觉自动兑换仅取决于硬件的稳定性和算法的稳定性,在保证稳定性的情况下,可以充分保证赛场的表现,并减轻操作手的赛场负担。

功能

视觉部分

  • 运用6D-of位姿估计网络进行金矿石姿态解算
  • 运用传统视觉opencv进行兑换槽四角点识别、滤波,基于solve_pnp解算位姿,再进行双目相机置信度计算、筛选
  • 通过串口接收电控数据,自动开启不同的视觉功能,并将功能标志位+解算数据(四元数+位移)经串口发送到主控单片机。

电控部分

  • 接收视觉传来的姿态数据和空间位置数据
  • 将以上数据转换为机械臂的目标位点并计算中间点和终点,中间点为机械臂前往终点的辅助点,终点为兑换站前表面向外移动一个矿石的距离(20cm,可自定义距离)
  • 提供根据视觉姿态数据得出的机械臂3维运动向量数据
  • 逆运动学解算及其有效性检测(机械臂机械限位)(配套华南虎23赛季国赛工程的机械臂结构)

依赖

视觉部分

  • keras神经网络架构
  • openvino神经网络加速推理架构
  • opencv-4.7
  • ros-noetic

电控部分

  • RTOS,或其他可以执行循环的环境即可。
  • C库 math.h

文件架构说明

ArmMotionPlan_arrayStationLinearPath为电控代码,用子模块链接。

Linemod-RealLinemod-Render为视觉部分代码,视觉部分详细细节可以参考PDF RM2023-华南理工大学-华南虎-工程视觉开源.pdf

原理与理论支持分析

对于自动兑矿和自动取矿,实际操作中仅需分为2个步骤来考虑:

  1. 确定目标位置(视觉)
  2. 到达目标位置,然后返回初始位置(电控)

对于第一个步骤,我们通过小三轴前端的模组相机拍摄一张RGB图像,送入Efficientpose神经网络进行位姿估计,对于兑换槽是车身两侧的两个工业相机通过opencv进行光斑筛除、排序、识别、pnp解算。将两者解算信息统一为xyz三轴坐标加四元数的方式,将位姿数据和标志位发送到电控方面。采取四元数的原因是四元数本身发送数据量少,并且相对欧拉角而言有一系列优秀的数学性质。

对于第二个步骤,在接收到视觉传来的位姿数据后,先转换为对逆解算较友好的齐次变换矩阵,推出机械臂逆解,最后采用几何方法规划出机械臂末端前往目标点(兑换站前表面或矿石表面)的路径,并将轨迹数据交由执行代码执行。对于这样的轨迹执行,我们开发出了可以快速传入轨迹数据后自动执行轨迹的执行器算法。

总而言之,在实践中,我们确定这样的自动化方法是有效的,且对开发效率有较大的提高。

其他说明

对于子模块的具体使用和源码请参考子模块的readme和仓库中的pdf文档等。

未来优化方向

  • 解决矿石识别算法的部署问题
  • 提高自动兑换矿石的成功率
  • 改善路径规划方法

23autoengineer's People

Contributors

alen-zeng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.