前言:基于新款开发者套件Atlas 200I DK A2的智能小车,采用人工智能的方法,对摄像头采集到实时影像进行推理,产生电机等运动机构的控制指令,在特定环境里,实现自动行驶、自动泊车、目标跟踪等功能。昇腾官方开源了“玩”小车的全部软、硬件资料,还准备了模拟环境,让还没有小车的小伙伴体验自动驾驶的乐趣。
课程:CANN训练营2023年第一季_基于Atlas 200I DK A2的智能小车设计与实现
视频:【2023 · CANN训练营第一季】- 基于Atlas 200I DK A2的智能小车设计与实现
https://www.bilibili.com/video/BV1mX4y1B7AM
gitee仓:https://gitee.com/HUAWEI-ASCEND/ascend-devkit/tree/master/src/E2E-Sample/Car
智能小车文档:文档首页>Atlas 200I DK A2开发者套件>应用案例>智能车应用开发指南https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC1/Application%20Cases/ivadg/ivadg_0003.html
一、概述
基于Atlas 200I DK A2开发者套件的智能小车,是使用开发者套件的内置神经网络模型,借助昇腾芯片,实现自动驾驶、自动泊车、目标跟踪等功能。
二、智能小车的硬件构成
智能小车主要有如下功能模块构成:
一)主控部分
1、开发者套件(200I DK A2):根据摄像头收集的数据进行AI推理,将推理结果发送给主控模块控制小车运行。
二)控制器及执行机构
2、主控ESP32开发板:信号接收与发送,执行并调动其他部分完成指令。
3、直流电机(TT电机):为小车提供动力,可调节旋转方向和速度。
4、麦克纳姆轮:灵活方便的实现全方位移动功能。
5、舵机(两轴云台):装载摄像头并调节拍摄角度,可控角度0~180°。
三)采集传感器
6、广角摄像头:采集实施影像,用于开发者套件推理。
7、超声波传感器:可实现2~400cm的非接触距离感测功能,测距精度可以高达3mm。
8、激光雷达:生成点云数据,用于构图和定位。
9、语音模块(预留):声音的输入输出。
四)辅助
10、安装结构件包括:外壳(前)、外壳(后)、载物外壳等。
三、智能小车的软件构成
智能小车的软件包括两部分:
1、开发者套件(200I DK A2)的深度学习AI推理应用的开发;
2、小车运动控制器“主控ESP32开发板”的嵌入式软件开发。
智能小车通过摄像头感知周围环境自主地进行运动控制,采集环境数据后在开发者套件上进行AI推理,根据推理结果发出指令控制小车的运动状态。小车运动状态的控制需要借助ESP32微控制器,使用Arduino平台可以对其进行嵌入式开发。主控与小车主体间控制指令的发出和数据的返回,过串口协议进行双向通信。协作框图如下:
昇腾开源了全套的代码和说明,在代码仓的E2E-Sample/Car目录下,可以下载去学习、使用。目录结构如下:
四、小车“智能”的技术实现
一)、自动驾驶
基于开发者套件的内置的YoloV5和轻量级直线行驶矫正神经网络模型推理结果引导智能小车在规定赛道上的自动循迹行驶。
1、通过摄像头收集不同场景下的路况信息数据,判断当前位置并识别转弯标识。
2、使用模型适配工具训练转换的om模型进行推理,计算转向角,最后根据推理结果下发指令控制小车转向。
二)自动泊车
基于开发者套件的内置YoloV5神经网络模型的推理结果引导智能小车在模拟的复杂交通场景和更贴近实际的道路上行驶。
1、通过摄像头收集不同场景下的停车标志信息数据。
2、使用模型适配工具训练转换的om模型进行推理,判断当前标识是否为停车标志,“是”则开始自动泊车,“否”则继续行驶并收集数据。
3、识别到目标后,判断目标停车标识和智能小车当前位置之间的距离,根据提前设置的阈值(开发者可自定义)判断到达停车距离,并开始横向移动进停车位。
三)、目标跟踪
基于开发者套件的内置YoloV5神经网络模型的推理结果引导智能小车在多车行驶的模拟道路上行驶。
1、通过摄像头收集不同场景下需要跟随的目标,识别前方目标并跟随目标行驶。
2、使用模型适配工具训练转换的om模型进行推理,根据识别到物体的大小来推算小车和追踪目标之间的距离,下发指令到控制系统,控制小车的移动和停止,从而达到跟随效果(开发者也可以移植改功能到追踪其他物体的使用场景中)。
五、DIY“智能”小车
一)功能模块
官方提供了小车的模块清单,清单非常详细,连紧固件都有,网址如下:
主要有:
二)DIY结构件:
外壳与结构件,可以采用钣金或者3D打印的方式进行制作。
1、直接使用昇腾官方提供的3D文件。
下载地址:https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas%20200I%20DK%20A2/DevKit/samples/23.0.RC1/e2e-samples/Car/E2E%E6%99%BA%E8%83%BD%E5%B0%8F%E8%BD%A6%E6%A0%B7%E4%BE%8B3D%E7%BB%93%E6%9E%84%E4%BB%B6.zip
2、对于自己DIY的开发者,昇腾也给出了结构设计的原则和注意事项
从零开始设计并搭建智能小车,在满足外观要求的基础上,要满足小车运转过程中的运动干涉率为0,并且需要考虑实际安装时的易用性与可行性,以及智能小车的重心位置的控制等。
三)组装步骤和注意事项:
1、组装步骤
需要依照从下至上的顺序组装小车,组装底盘上的连接件,按照“电池 > TT直流电机 > 麦克纳姆轮 > 广角摄像头模块 >ESP32单片机 > 第一层外壳 > 超声波模块 > 语音麦克风阵列 > Atlas 200I DK A2开发者套件 > 激光雷达连接到后段外壳 > 前中段外壳顺”序组装。详细步骤见官方文档:https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC1/Application%20Cases/ivadg/ivadg_0014.html
2、组装注意事项
1)注意螺钉和螺栓的固定顺序,第一次固定不要完全固定,以防有顺序错误需要拆卸的情况。
2)为了便于插拔ESP32和开发者套件上的各类接口,最上层的外壳未设计为完全固定的形式,可随时取下,所以移动小车时建议手托到底盘。
3)为了防止小车前端的外壳遮挡广角摄像头的视线,也为了提高摄像头位置的自由度,广角摄像头载板设置了多挡位调节,开发者可以选择合适的摄像头前后位置。
4)注意麦克纳姆轮的安装顺序和前后轮位置,否则可能会影响小车的平移和原地旋转效果,左右麦克纳姆轮上的扁状滚轮上的摩擦力方向需要均指向小车的中轴线方向,如下图所示。
四)软件部署
1、烧录E2E镜像
使用“一键制卡”工具,将准备好的镜像烧录到“开发者套件(200I DK A2)”的SD卡上。
2、配置ESP32开发板烧录软件
将编译好的固件,通过Arduino 工具下载到“主控ESP32开发板”中。
六、仿真环境
昇腾为还没有小车的小伙伴们推出了“开启昇腾开发者套件的小车仿真之旅”的在线实验。