基于Atlas 200I DK A2的智能小车结构设计和控制原理
一、结构设计
- 基本原则
从零开始设计并搭建智能小车,在满足外观要求的基础上,要满足小车运转过程中的运动干涉率为0,并且需要考虑实 际安装时的易用性与可行性,以及智能小车的重心位置的控制等。 - 主要模块
- 前中后外壳结构支撑模块。
- TT减速电机与麦克纳姆轮的运动模块。
- 电源供电模块。
- ESP32控制模块。
- 广角摄像头视觉感知模块。
- 激光雷达点云感知模块。
- Atlas 200I DK A2开发者套件。
- 安装原则
自底部开始安装承载部分和电源,注意麦克纳姆轮的安装方向,以及螺丝的固定顺序,在铝合金外壳加工差异下,优先 固定精度高的螺孔,确定所有接线正确后再固定外壳。具体安装注意事项如下:
- 注意螺钉和螺栓的固定顺序,第一次固定不要完全固定,以防有顺序错误需要拆卸的情况。
- 为了便于插拔ESP32和开发者套件上的各类接口,最上层的外壳未设计为完全固定的形式,可随时取下,所以移动小车时建议手托到底盘。
- 为了防止小车前端的外壳遮挡广角摄像头的视线,也为了提高摄像头位置的自由度,广角摄像头载板设置了多挡位调节,开发者可以选择合适的摄像头前后位置。
- 注意麦克纳姆轮的安装顺序和前后轮位置,否则可能会影响小车的平移和原地旋转效果,左右麦克纳姆轮上的扁状滚轮上的摩擦力方向需要均指向小车的中轴线方向,如所示
二、控制原理
智能小车通过摄像头感知周围环境自主地进行运动控制,采集环境数据后在开发者套件上进行AI推理,根据推理结果发出指令控制小车的运动状态。小车运动状态的控制需要借助ESP32微控制器,使用Arduino平台可以对其进行嵌入式开发。主控与小车主体间控制指令的发出和数据的返回,需要通过串口协议进行双向通信。
电机的转动原理:1个电机对接ESP32开发板2个引脚,当两个引脚分别接高低电平则开始以一定方向转动,电平相反则反方向转动,同为低或者高均不转动。
电机转速控制:控制电信号PWM波的占空比,占空比越大,说明周期内高电平持续时间越长,电机转速越快。
串口通信的方式是单一字节传输,为了减少指令传输时间、提高控制灵敏度,将控制指令数据格式定义为7个short类型的有符号数字,其中前四位是对应四个电机的速度值,后接两个舵机的角度值,最后一个是校验码。
ESP32主程序主要有4个部分组成。
- setup函数:针对串口、电机、舵机等进行初始化,输入波特率115200打开串口并配置电机与舵机的驱动。
- set_motori函数:预配置好四个电机的初始速度之后,为每个电机设置相应的速度。
- set_servo函数:预配置好两个舵机的初始角度之后,为每个舵机设置相应的角度。
- Ioop函数:不断循环并读取串口中的返回数据,根据校验码验证结果下发指令。
在拥有ESP32控制程序后,使用Python主程序来进行通信和基本函数的封装,在其他设备上对其进行控制,并方便模型推理之后的调用,主要功能是实现基本运动控制的功能函数、对控制指令进行序列化、防止指令冲突和丢失、串口通信数据收发等。两个必须要保证的是同一时刻仅能下发一个指令到ESP32,以及正确将动作解析为电机速度和舵机角度。
标签:控制,DK,电机,CANN,小车,ESP32,200I,舵机,串口 From: https://blog.51cto.com/u_14125503/6370398