首页 > 其他分享 >【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车结构设计和控制原理

【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车结构设计和控制原理

时间:2023-05-29 14:05:53浏览次数:42  
标签:控制 DK 电机 CANN 小车 ESP32 200I 舵机 串口

基于Atlas 200I DK A2的智能小车结构设计和控制原理

一、结构设计

  1. 基本原则
    从零开始设计并搭建智能小车,在满足外观要求的基础上,要满足小车运转过程中的运动干涉率为0,并且需要考虑实 际安装时的易用性与可行性,以及智能小车的重心位置的控制等。
  2. 主要模块
  • 前中后外壳结构支撑模块。
  • TT减速电机与麦克纳姆轮的运动模块。
  • 电源供电模块。
  • ESP32控制模块。
  • 广角摄像头视觉感知模块。
  • 激光雷达点云感知模块。
  • Atlas 200I DK A2开发者套件。

【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车结构设计和控制原理_开发者

  1. 安装原则
    自底部开始安装承载部分和电源,注意麦克纳姆轮的安装方向,以及螺丝的固定顺序,在铝合金外壳加工差异下,优先 固定精度高的螺孔,确定所有接线正确后再固定外壳。具体安装注意事项如下:
  • 注意螺钉和螺栓的固定顺序,第一次固定不要完全固定,以防有顺序错误需要拆卸的情况。
  • 为了便于插拔ESP32和开发者套件上的各类接口,最上层的外壳未设计为完全固定的形式,可随时取下,所以移动小车时建议手托到底盘。
  • 为了防止小车前端的外壳遮挡广角摄像头的视线,也为了提高摄像头位置的自由度,广角摄像头载板设置了多挡位调节,开发者可以选择合适的摄像头前后位置。
  • 注意麦克纳姆轮的安装顺序前后轮位置,否则可能会影响小车的平移和原地旋转效果,左右麦克纳姆轮上的扁状滚轮上的摩擦力方向需要均指向小车的中轴线方向,如所示

【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车结构设计和控制原理_智能小车_02

二、控制原理

智能小车通过摄像头感知周围环境自主地进行运动控制,采集环境数据后在开发者套件上进行AI推理,根据推理结果发出指令控制小车的运动状态。小车运动状态的控制需要借助ESP32微控制器,使用Arduino平台可以对其进行嵌入式开发。主控与小车主体间控制指令的发出和数据的返回,需要通过串口协议进行双向通信

【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车结构设计和控制原理_智能小车_03

电机的转动原理:1个电机对接ESP32开发板2个引脚,当两个引脚分别接高低电平则开始以一定方向转动,电平相反则反方向转动,同为低或者高均不转动

电机转速控制:控制电信号PWM波的占空比,占空比越大,说明周期内高电平持续时间越长,电机转速越快

【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车结构设计和控制原理_开发者_04

串口通信的方式是单一字节传输,为了减少指令传输时间、提高控制灵敏度,将控制指令数据格式定义为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

相关文章

  • 【2023 · CANN训练营第一季】基于Atlas 200I DK A2的智能小车功能实现
    基于Atlas200IDKA2的智能小车功能实现一、地图绘制小车的行驶依赖于模型的训练,因此需要设计一张地图,用于小车行驶的模型训练过程和推理结果验证。开发者可以根据需要使用PhotoShop软件绘制不同的图层,使用可以使小车正常转弯和停车的尺寸,得到场景地图并打印。二、手动控制小车烧......
  • Planar Odometry from a Radial Laser Scanner. A Range Flow-based Approach(1)论文解
    激光光流里程计的基本理解:(1)类比图像光流,假设光强度不变,图像是每个像素点,像素包含灰度值;激光光流,假设障碍物不动,光流是激光范围内的激光点,每个激光点包含距离和角度信息(2)图像信息求导,得到光强度;激光光流信息求导,得到速度(距离的速度,角度的速度),并可以用分解到笛卡尔坐标系下的速度......
  • 如何选择适合平台的直播美颜SDK:从技术和商业角度考虑
    直播美颜SDK作为一种技术解决方案,可以帮助直播应用实现优秀的美颜效果,提高用户体验和粘性。然而,如何选择适合你应用的直播美颜SDK,需要从技术和商业角度综合考虑。本文将从这两个角度出发,为你介绍如何选择适合你应用的直播美颜SDK。一、从技术角度考虑1. 美颜算法美颜算法是直播美......
  • 用户交互Scanner对象
    用户交互Scanner对象next():一定要读取到有效字符后才可以结束输入。对输入有效字符之前遇到的空白,next()方法会自动将其去掉。只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next()不能得到带有空格的字符串。nextLine():以Enter(回车)为结......
  • 【2023 · CANN训练营第一季】——Ascend C算子代码分析—Add算子(内核调用符方式)
    前言:AscendC算子(TIKC++)使用C/C++作为前端开发语言,通过四层接口抽象、并行编程范式、孪生调试等技术,极大提高算子开发效率,助力AI开发者低成本完成算子开发和模型调优部署。学习完理论后,上代码,通过实践理解AscendC算子的概念,掌握开发流程,以及内核调用符方式的调试方法。一、算子分......
  • IIS短文件名暴力枚举漏洞利用工具(IIS shortname Scanner)
    脚本可以测试对应的URL是否存在漏洞,若存在漏洞,则猜解文件夹下所有的短文件名:包括文件和文件名。网上早前已经有公开的工具了:https://code.google.com/p/iis-shortname-scanner-poc/我没有参考他的代码。自己用python实现了一个漏洞利用脚本。简单测试,发现比上面的POC能猜解到更......
  • 202305281631-《远程Linux服务器——安装tomcat8、jdk1.8、mysql5——mysql workerben
    bash已连接的上,但workerbench连不上,提示:1.FailedtoConnecttoMySQLat11.11.11.111:[email protected]'11.11.11.111'isnotallowedtoconnecttothisMySQLserver解决办法(为什么,我也不知道):1.登录mysql,一次执......
  • 报错ImportError: cannot import name 'Iterable' from 'collections' in Python
    参考https://stackoverflow.com/questions/72032032/importerror-cannot-import-name-iterable-from-collections-in-python答案为3.10版本的python把Iterable从collections去除了,原答案粘贴如下:文字版和截图 TheIterableabstractclasswasremovedfromcollectionsin......
  • 【2023 · CANN训练营第一季】——在华为AI加速型ECS上安装Pytorch和Tensorflow框架
    前言:在CANN训练营提供的华为云镜像环境,通过miniconda安装pytorch和Tensorflow框架。在模型迁移前准备阶段,可以用来在CPU上对模型训练进行验证。本文描述了安装过程,更换国内conda源、并分别下载例程,在Pytorch和Tensorflow框架下进行了CPU训练。还介绍了在Pytorch、Tensorflow虚拟环......
  • 202305280952-《远程Linux服务器——安装tomcat8、jdk1.8、mysql5——mysql启动报错》
    在bash执行"systemctlstartmysqld"   提示:“Jobformysqld.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusmysqld.service"and"journalctl-xe"fordetails.”   /var/lib/mysql权......