Watch 3 Star 6 Fork 5

Dryad / Mecanum_AGV_RTTC/C++Apache-2.0

Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
使用RT-Thread的麦克纳姆轮AGV spread retract

Clone or download
Loading...
README_zh.md

AGV_RTOS

基于RT-Thread的一款二维码全向麦克纳姆轮AGV运动控制系统

实现的功能

  • Modbus主机功能
  • Modbus从机功能
  • 实现AGV的定位
    • 建立全向AGV的逆运动学模型
    • 获取陀螺仪数据
      • 测量陀螺仪的测量噪声
    • 获取PGV传感器数据
      • 解析PGV传感器数据
      • 完成PGV的坐标转换
      • 测量PGV传感器的测量噪声
    • 获取电机编码器数据
      • 测量电机编码器的测量噪声
  • 根据上位机的指令生成路径
    • 实现与上位机的通信
    • 根据上位机输入的插补点生成Bezier曲线
    • 对Bezier路径完成速度插补
  • 控制AGV实现对Bezier路径的跟踪
    • 建立全向AGV的正运动学模型
    • 完成对电机的控制
      • 完成CAN总线的调试
  • 板载调试用触摸屏
  • 实现OTA功能
  • 片上Flash
    • BootLoader
    • 应用程序
    • 存放出厂程序
  • 板载Flash芯片
    • 存放下载程序
    • littlefs文件系统
      • 存放任务日志
      • 存放配置信息
  • SD卡
    • elm-Fat文件系统
  • Shell指令解析
  • 实现RTC功能
  • 使用EEPROM保存配置信息
  • 实现网络通信
    • 使用lwIP协议栈
    • 使用WIZnet协议栈
    • 使用AT Socket协议栈

寄存器定义

浮点数采用采用IEEE 754 标准,内存分布为ABCD,低地址为低半字,高地址为高半字
车头朝向为y轴正方向,右侧为x轴正方向,逆时针为正

  • 运动模块初始化标志

    • 地址0x0000
      • bit0-PGV初始化完成标志
      • bit1-陀螺仪初始化完成标志
      • bit2-电机初始化完成标志
      • bit3-系统第一次读取到二维码标志
  • 通信超时时间(ms)

    • 地址0x0001
      • 0-关闭通信超时检测
      • 1~65535-设置通信超时时间
  • 软件复位

    • 地址0x0002
    • 写入非零数软件复位
  • 错误代码低半字

    • 地址0x0003
  • 错误代码高半字

    • 地址0x0004

    错误代码还未确定,暂时保留

  • 运动状态

    • 地址0x0005
      • 0-运动空闲
      • 1-任务暂停
      • 2-正常运行时避障触发
      • 3-正常运行
      • 4-当前运动指令结束
      • 5-运动任务取消中
      • 0-无效
      • 1-任务启动
      • 2-任务继续
      • 3-任务暂停
      • 4-任务取消,清空已保存的目标点
  • 二维码状态

    • 地址0x0006
      • 0-未读取到二维码
      • 1-读取到二维码
  • 二维码TAG号低半字

    • 地址0x0007
  • 二维码TAG号高半字

    • 地址0x0008
    • 读返回最近一次读取到的二维码TAG号
  • 车辆实际运行x轴线速度(浮点数 mm/s)

    • 地址0x0020
    • 写无效
  • 车辆实际运行y轴线速度(浮点数 mm/s)

    • 地址0x0022
    • 写无效
  • 车辆实际运行角速度(浮点数 °/s)

    • 地址0x0024
    • 写无效
  • 车辆实际x轴坐标(浮点数 mm)

    • 地址0x0026
    • 写无效
  • 车辆实际y轴坐标(浮点数 mm)

    • 地址0x0028
    • 写无效
  • 车辆实际角度(浮点数 °)

    • 地址0x002A
    • 写无效
  • 车辆目标点x轴坐标(浮点数 mm)

    • 地址0x0030
    • 读无效
  • 车辆目标点y轴坐标(浮点数 mm)

    • 地址0x0032
    • 读无效
  • 车辆目标点角度(浮点数 °)

    • 地址0x0034
    • 读无效
  • 插补阈值(mm)

    • 地址0x0040
    • 读无效
  • 运行时最大速度(mm/s)

    • 地址0x0041
    • 读无效
  • 加速度(从0速到最大速度的时间 s)

    • 地址0x0042
    • 读无效
  • 减速度(从最大速度到0速的时间 s)

    • 地址0x0043
    • 读无效
  • 低速运行时间(s)

    • 地址0x0044
    • 读无效

使用说明

  1. 上电时等待AGV初始化完毕(即运动模块初始化标志和0x07求与不为0)
  2. 根据需求设置通信超时时间
  3. 根据任务设置目标点
  4. 若目标点未设置完成,则执行上一步,若目标点设置完成,则执行下一步
  5. 设置插补阈值,运行时最大速度等寄存器,通知AGV目标点已设置完成
  6. 查询运动状态寄存器,判断AGV当前运动状态

设置插补阈值等寄存器后,AGV内部会使用Bezier曲线自动生成一条依次通过所有目标点的光滑路径,AGV会跟踪这条曲线路径。

硬件分配明细

DMA1_Stream 外设 DMA2_Stream 外设
Stream0 Uart5_RX Stream0 SPI1_RX
Stream1 Uart3_RX Stream1 Uart6_RX
Stream2 SPI3_RX Stream2
Stream3 SPI2_RX Stream3 SPI1_TX
Stream4 SPI2_TX Stream4
Stream5 SPI3_TX Stream5 Uart1_RX
Stream6 Uart2_TX Stream6 Uart6_TX
Stream7 Stream7 Uart1_TX

Comments ( 0 )

Sign in for post a comment

C/C++
1
https://gitee.com/zhang456xi/Mecanum_AGV_RTT.git
git@gitee.com:zhang456xi/Mecanum_AGV_RTT.git
zhang456xi
Mecanum_AGV_RTT
Mecanum_AGV_RTT
master

Search