AGV系统概述

AGV原理

AGV行走控制系统由控制面板、导向传感器、方向电位器、状态指示灯、避障传感器、光电控制信号传感器、驱动单元、导引磁条、电源组成。

AGV的导引(Guidance)是指根据AGV导向传感器(Navigation)所得到的位置信息,按AGV的路径所提供的目标值计算出AGV的实际控制命令值,即给出AGV的设定速度和转向角,这是AGV 控制技术的关键。简而言之,AGV的导引控制就是AGV轨迹跟踪。

AGV导引有多种方法,比如说利用导向传感器的中心点作为参考点,追踪引导磁条上的虚拟点就是其中的一种。AGV的控制目标就是通过检测参考点与虚拟点的相对位置,修正驱动轮的转速以改变AGV的行进方向,尽力让参考点位于虚拟点的上方。这样AGV就能始终跟踪引导线运行。

AGV大体上用于以下三个方面:
  1.物料搬运
  在工业现场AGV常用于工位间或自动仓库与工位间的物料搬运作业。例如在组装线上,AGV从自动仓库取出机器零件并送到相应的组装工位。又如在柔性加工系统中,AGV依照加工工序顺次将被加工工件送到相应自动机床进行加工,加工好的零件由AGV送到质检站测,最后合格品送到半成品库。
  2.移动工作台
  在组装或柔性加工系统中AGV常作为移动工作台使用。以欧美一些汽车厂为例,在轿车组装过程中从汽车底盘焊装组立、安装悬挂系统、车轮和制动系统、安装发动机、变速箱、离合器、安装转向系统、安装汽车外壳、安装风档玻璃和座椅到整车配电等一系列组装过程都是在一台AGV上进行的。又如在欧美一些柴油机厂中,柴油机一系列的组装过程也都是在一台AGV上完成的。
  3.与机器人或机器手配合在特殊工作环境下代替人工作业
  在AGV上可以安装机器人或机器手,在特殊工作环境下代替人工作业。例如在核电站中代替人在具有放射线的工作环境下进行遥控作业。

AGV系统架构

AGV本体控制

采用STM32F103作为主控组合,两组闭环电机控制,12组光电循迹导航、RFID定位,通过IO模块作为机器人控制部分,通过闭环马达控制其背负传输带,采用无线射频通讯。

AGV网关控制

采用STM32作为主控,内置无线射频模块,通过RS232连接AGV上位机,内置通讯协议冗余算法,保证AGV控制通讯实时性以及稳定性;

AGV上位机部分

以C++代码编写,通过RS232与AGV网关通讯,内置AGV调度控制逻辑以及算法,通过以太网连接至MES系统,达到对AGV定点控制,路径规划监控。

AGV通信协议和控制方法

通讯机制

协议

AGV接收协议

AGV应答协议

格式

举例

FF AA [01]1 [01]2 [01]3 [00]4 [03]5 FF 55

说明

[01]1     发送给ID为01的AGV

[01]2     命令码为01(说明该条命令为:获取基本信息)

[01]3     数据内容长度为01

[00]4     数据内容为00

[03]5     01 + 01 + 01 + 00 = 03

FF AA [03]1 [82]2 [01]3[01]4 [87]5 FF 55

说明

[03]1     ID为03的AGV发出的

[82]2     命令码为82(说明该应答命令为:设置RFID动作,最高位置位说明该条命令由AGV应答产生)

[01]3     数据内容长度为01

[01]4     数据内容为01

[87]5     82 + 03 + 01 + 01 = 87

AGV所包含的状态信息

  1. 将AGV的基本信息作为一个包,成为基本信息包,这个包在多条通信协议中都涉及。以下是基本信息包的内容(20bytes)

AGV通讯协议内容

  1. 获取AGV状态信息

询问:

FF AA [01]1 [01]2 [01]3[00]4 [03]5 FF 55

应答:

FF AA [01]1 [81]2[14]3 [… 基本信息包 …]4 [XX]5 FF 55

  1. 设置AGV路径RFID

询问:

内容:更改动作时使用虚拟索引号0

索引(1字节)

卡所对应的索引号,从1开始(1-100)

卡号(4字节)

卡号

卡动作(1字节)

0:停靠 1:直行 2:左转 3:右转 4:掉头

例1:将卡号为“F6 1F 62 71”的卡,对应动作设置为停靠,并设置索引为3

FF AA [01]1 [02]2 [06]3 [ 03   F6 1F 62 71  00 ]4 [XX]5 FF 55

应答:

内容

应答标志位(1字节,int8_t)

0:设置成功

1:设置成功,并覆盖掉了之前的动作

2:设置成功,动作未发生变化

-1:设置未成功,发送的卡号不符合要求

-2:设置未成功,发送的动作不符合要求

-3:设置未成功,卡信息存储空间已满

基本信息包

当基本信息包使能时,含有基本信息包,否则没有此内容

例1:设置成功

FF AA [01]1 [82]2 [15]3 [00 … 基本信息包 …]4 [XX]5 FF 55

例2:设置成功,动作未发生变化

FF AA [01]1 [82]2 [01]3[02]4 [86]5 FF 55

  1. AGV自动巡航

询问包 内容:

功能标志

(uint8_t)

0:停止自动导航

1:开始自动导航

2:以左转为起始动作开始自动导航

3:以右转为起始动作开始自动导航

4:以掉头为起始动作开始自动导航

例1:开始自动导航

FF AA [01]1 [03]2 [01]3 [01]4[06]5 FF 55

应答包:   内容

应答标志位(1字节,int8_t)

0:开始/停止成功

-1:开始/停止失败,命令不合法

-2:停止失败,当前模式并不处于自动模式

-3:开始失败,设备并非空闲:

-4:开始失败,脱离轨道

-5:开始失败,急停开关按下

-6:开始失败,远程急停

-7:硬件故障,具体故障信息,查看基本信息中的状态标志

基本信息包

当基本信息包使能时,含有基本信息包,否则没有此内容

例1:开始/停止成功

FF AA [01]1 [83]2 [14]3 [00 … 基本信息包 …]4 [XX]5 FF 55

例2:停止失败,当前模式并不处于自动模式

FF AA [01]1 [83]2 [01]3 [FE]4 [XX]5 FF 55

  1. AGV手动控制

询问包

内容:

轮速(2字节,int8_t)

左轮速度:-100~-1,1~100(cm/s)

右轮速度:-100~-1,1~100(cm/s)

当两轮速度都为0时,表示停止手动控制

行驶距离(2字节,uint16_t)

设备中心点移动轨迹长,单位cm,范围1~1000。

当该值为0时,表示无限远。

例1:

FF AA [01]1 [04]2 [04]3 [30 50 C8 00 ]4 [XX]5 FF 55

应答包:

内容

应答标志位(1字节,int8_t)

0:开始/停止成功

-1:开始/停止失败,命令不合法

-2:停止失败,当前模式并不处于手动模式

-3:开始失败,设备并非空闲或手动

-4:开始失败,急停开关按下

-5:开始失败,远程急停

-6:硬件故障,具体故障信息,查看基本信息中的状态标志

基本信息包

当基本信息包使能时,含有基本信息包,否则没有此内容

例1:开始/停止成功

FF AA [01]1 [84]2 [15]3 [00 … 基本信息包 …]4 [XX]5 FF 55

例2:停止失败,当前模式并不处于手动模式

FF AA [01]1 [84]2 [01]3 [FE]4 [XX]5 FF 55

  1. 开始巡航AGV

询问包

内容:

功能标志(uint8_t)

设备沿轨道行驶,遇到RFID标签时停止,当设备收到巡航指令时,根据功能标志,先执行左转,右转,掉头或直接前进,再通过判断是否读取到RFID标签,执行停靠。

0:停止

1:直行

2:左转

3:右转

4:掉头

例1:遇到RFID左转

FF AA [01]1 [05]2 [01]3 [02]4 [09]5 FF 55

应答包:

内容

应答标志位(1字节,int8_t)

0:开始/停止成功

-1:开始/停止失败,命令不合法

-2:停止失败,当前模式并不处于巡航模式

-3:开始失败,设备并非空闲:

-4:开始失败,脱离轨道

-5:开始失败,急停开关按下

-6:开始失败,远程急停

-7:硬件故障,具体故障信息,查看基本信息中的状态标志

基本信息包

当基本信息包使能时,含有基本信息包,否则没有此内容

例1:开始/停止成功

FF AA [01]1 [85]2 [15]3 [00 … 基本信息包 …]4 [XX]5 FF 55

例2:停止失败,当前模式并不处于自动模式

FF AA [01]1 [85]2 [01]3 [FE]4 [XX]5 FF 55

  1. 远程急停AGV

询问包

内容:

功能标志

(uint8_t)

1:设置成急停状态

0:解除急停状态

例1:设置成急停状态

FF AA [01]1 [06]2 [01]3 [01]4 [09]5 FF 55

应答包

内容

应答标志位(1字节,int8_t)

0:设置/解除成功

-1:不合法

-2:远程急停已设置

-3:远程急停已解除

基本信息包

当基本信息包使能时,含有基本信息包,否则没有此内容

例1:设置/解除成功

FF AA [01]1 [86]2 [15]3 [00 … 基本信息包 …]4 [XX]5 FF 55

例2:远程急停已设置

FF AA [01]1 [86]2 [01]3 [FE]4 [XX]5 FF 55

  1. 读取参数

询问包

内容:

参数号

(uint8_t)

需要读取的参数号

例1:读取网络ID

FF AA [01]1 [07]2 [01]3 [01]4 [0A]5 FF 55

应答包:

内容

状态标志(1字节,int8_t)

0:成功

-1:不存在的参数号

参数号(uint8_t)

读取的参数号

参数内容

参数的具体内容

例1:读取网络ID成功,并且为01

FF AA [01]1 [87]2 [03]3 [00 01 01]4 [8E]5 FF 55

  1. 设置参数

询问包

内容:

参数号(uint8_t)

需要设置的参数号

参数内容

设置的参数内容

例1: 设置设备ID为01

FF AA [01]1 [08]2 [02]3[01 01]4 [0D]5 FF 55

应答包:

内容

状态标志(1字节,int8_t)

0:成功

-1:不存在的参数号

-2:设置的内容不合法

参数号(uint8_t)

设置的参数号

例1:设备ID设置成功

FF AA [01]1 [88]2 [02]3 [00 01]4 [8B]5 FF 55

5.2.4 网关配置

说明:配置网关时,网关设备ID为0x00

  1. 网关支持的AGV数量及ID 配置

命令码:0x02

参数内容

AGV数量(1 byte)+ AGV设备ID号(n bytes)  支持1-9

例:配置网关支持3台AGV,并且ID号依次为01 、02 、03

FF AA [00]1 [02]2 [04]3 [03 01 02 03]4 [XX]5 FF 55

网关应答:

内容

状态标志(1字节,int8_t)

0:成功

-1:配置失败

设备ID(1字节)uint8_t

上位机通信的目标设备

指令类型(1字节)uint8_t

上位机操控的目标指令

例: 配置成功

FF AA [00]1 [82]2 [03]3 [00 00 00 ]4 [XX] FF 55

  1. 网关网络ID配置 

命令码:0x01

参数内容

网络ID(1 bytes)支持0-99

例:配置网关网络ID为0x01

FF AA [00]1 [01]2 [01]3 [01]4 [03]5 FF 55

网关应答:

内容

状态标志(1字节,int8_t)

0:成功

-1:配置失败

设备ID(1字节)uint8_t

上位机通信的目标设备

指令类型(1字节)uint8_t

上位机操控的目标指令

例: 配置失败

FF AA [00]1 [81]2 [01]3 [FF]4 [XX]5 FF 55

备注:异常处理+网关主动回复

  1. AGV掉线,网关使用固定命令码0x8F上传信息

例:3号AGV处于掉线状态

FF AA [03]1 [8F]2 [01]3 [01]4 [XX]5 FF 55

  1. 上位机必须先配置好AGV的网络ID才能去配置网关网络ID
  2. AGV传送带完成动作后,网关主动上传一次完成信息

例:1号AGV传送带动作完成

FF AA [01]1 [8F]2 [01]3 [02]4 [XX]5 FF 55

传输带控制

命令码:0x09

参数内容

动作类型(1 byte)1.左装货  2.左卸货  3.右装货  4.右卸货

  1. 设置1号AGV传送带左装货

FF AA [01]1 [09]2 [01]3 [01]4 [0C]5 FF 55

  1. 设置1号AGV传送带左卸货

FF AA [01]1 [09]2 [01]3 [02]4 [0D]5 FF 55

应答包:

内容

状态标志(1字节,int8_t)

0 : 成功

-1: 设置的内容不合法

-2: 传送带当前状态非空闲

例1:动作设置成功

FF AA [01]1 [89]2 [01]3 [00]4 [8B]5 FF 55

基于C++的AGV机器人无线控制实现相关推荐

  1. 基于C++的AGV机器人无线控制

    1 AGV系统概述 1.1AGV原理 AGV行走控制系统由控制面板.导向传感器.方向电位器.状态指示灯.避障传感器.光电控制信号传感器.驱动单元.导引磁条.电源组成. AGV的导引(Guidance) ...

  2. 基于单片机的地铁(公交)无线控制报站系统设计 地铁报站系统设计 公交报站系统设计

    系统设计前言 基于单片机的地铁(公交)无线控制报站系统设计是酷毕啦电子设计室报站系列的无线控制版本,无线控制的特点是布线少.控制方便等功能,体现出物联网控制的技术.介于大部分需求的群体都是本科设计,所 ...

  3. Android楼梯清扫机器人上位控制系统设计

    一.毕业设计(论文)的技术背景和设计依据: 机器人在社会生产和服务行业的应用非常广泛,极大提高了社会劳动生产率,极大改善人们的生活状况.它是在人为设定的可编程程序控制下,按照特定作业程序和作业规范,完 ...

  4. ​AGV机器人:基于视觉避障的理论基础

    来源丨新机器视觉 点击进入->3D视觉工坊学习交流群 AGV(Automated Guided Vehicle)简介: 美国供应链管理专业协会对AGV的定义:自动导引小车,是指装备有电磁或光学等 ...

  5. android 两足机器人,基于Android的双足机器人语音控制系统研究

    摘要: 随着智能终端的快速普及和移动互联网的高速发展,人们通过一部手机连接整个世界的目标似乎已经实现.进入二十一世纪后,人工智能是科技领域绕不开的一个主题.虽然当下对于人工智能的研究或应用还都处于初级 ...

  6. 基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发

    本文主要面向刚开始接触嵌入式开发的小白,详细介绍如何搭建基于蓝牙的STM32无线控制硬件平台,蓝牙模块使用淘宝上的HC-05串口转蓝牙模块,开发板使用基于STM32F407的航发RH407. 实验器材 ...

  7. [论文]基于强化学习的无模型水下机器人深度控制

    基于强化学习的无模型水下机器人深度控制 摘要 介绍 问题公式 A.水下机器人的坐标框架 B.深度控制问题 马尔科夫模型 A.马尔科夫决策 B.恒定深度控制MDP C.弯曲深度控制MDP D.海底追踪的 ...

  8. 深度学习机器臂控制_基于深度强化学习的机器人手臂控制

    基于深度强化学习的机器人手臂控制 杨淑珍 ; 韩建宇 ; 梁盼 ; 古彭 ; 杨发展 ; 吕萍丽 [期刊名称] <福建电脑> [年 ( 卷 ), 期] 2019(035)001 [摘要] ...

  9. 巡线机器人 - PID控制 - 安卓设置

    巡线机器人 - PID控制 - 安卓设置 原文 该项目的目的是构建具有PID控制的巡线机器人.我们还将使用Android设备轻松设置主要控制参数,以便更好,更快地进行调谐.项目中用到的舵机也可用MG9 ...

最新文章

  1. ATS上的hosting.config和volume.config文件解读
  2. Observable.OnSubscribe 的理解
  3. 哈希表查找速度为什么那么快?快在哪里了?
  4. ArcEngine的拓扑分析之ITopologicalOperator
  5. book mac pro怎么重装系统_Macbook Pro怎么重装系统
  6. 云栖Android精华文章合集
  7. Delphi 之 第八课 动态数组
  8. Vue.js – 基于 MVVM 实现交互式的 Web 界面
  9. CentOS安装Confluence Wiki步骤
  10. 【今日CV 计算机视觉论文速览】Thu, 28 Mar 2019
  11. webpack快速学习2
  12. python21天打卡day4
  13. flash文本呈现html啥意思,显示flash内容时用的OBJECT和EMBED标签区别介绍
  14. 基于C#的安全聊天工具设计
  15. Vue2+Vant2:一个可定制图标的简易扫雷小游戏
  16. android 4.4新功能介绍(Kitkat)
  17. MongoDB学习总结四(详细记录使用MongoTemplate操作MongoDB数据库)
  18. VC 蓝牙设备 编程
  19. matlab ri值,基于Matlab的中国地面气候资料日值数据集(V3.0)快速处理
  20. iptables的三表五链

热门文章

  1. 汉化python语言编程界面_python设置中文界面实例方法
  2. Driller源码阅读笔记(一)
  3. css文件插入背景音乐,博客园添加背景音乐,背景效果!
  4. insmod lsmod rmmod
  5. 两种降维方法的总结——LLE(局部线性嵌入),ISOMAP(等度量映射)
  6. 推荐6本豆瓣高分鸿蒙书,我通宵也要把它们看完
  7. 【c】c语言中逗号运算符和逗号表达式
  8. 粒子群优化算法改进之多子群合作粒子群优化算法
  9. 数据挖掘竞赛预测模型——五折交叉验证
  10. IDE中使用package打包出现java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMoj