# Mecanum_AGV_RTT **Repository Path**: dxmcu/Mecanum_AGV_RTT ## Basic Information - **Project Name**: Mecanum_AGV_RTT - **Description**: 使用RT-Thread的麦克纳姆轮AGV - **Primary Language**: C/C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2021-06-23 - **Last Updated**: 2021-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AGV_RTOS # 基于RT-Thread的一款二维码全向麦克纳姆轮AGV运动控制系统 ## 实现的功能 ## * [ ] Modbus主机功能 * [x] Modbus从机功能 * [x] 实现AGV的定位 * [x] 建立全向AGV的逆运动学模型 * [x] 获取陀螺仪数据 * [x] 测量陀螺仪的测量噪声 * [x] 获取PGV传感器数据 * [x] 解析PGV传感器数据 * [x] 完成PGV的坐标转换 * [x] 测量PGV传感器的测量噪声 * [x] 获取电机编码器数据 * [x] 测量电机编码器的测量噪声 * [x] 根据上位机的指令生成路径 * [x] 实现与上位机的通信 * [x] 根据上位机输入的插补点生成Bezier曲线 * [x] 对Bezier路径完成速度插补 * [ ] 控制AGV实现对Bezier路径的跟踪 * [x] 建立全向AGV的正运动学模型 * [x] 完成对电机的控制 * [x] 完成CAN总线的调试 * [ ] 板载调试用触摸屏 * [ ] 实现OTA功能 * [ ] 片上Flash * [ ] BootLoader * [ ] 应用程序 * [ ] 存放出厂程序 * [ ] 板载Flash芯片 * [ ] 存放下载程序 * [x] littlefs文件系统 * [ ] 存放任务日志 * [ ] 存放配置信息 * [x] SD卡 * [x] elm-Fat文件系统 * [x] Shell指令解析 * [x] 实现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 |