基于C++的AGV机器人无线控制实现

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

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

!chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值