前言
今年是全国大学生智能汽车竞赛-百度智慧交通组的第二年,未来随着计算设备的更新迭代,越来越多的人将会接触到高性能的边缘计算设备,实现更加复杂的任务。本文介绍了本次比赛硬件设备以及其开发实践过程。
一、上位机
本次比赛百度提供了边缘计算设备EdgeBoard,该设备作为控制中枢接收来自摄像头和其他传感器的信息,在处理后将结果发送给下位机,实现对整车的控制。
EdgeBoard计算卡Lite版(FZ3),是百度基于FPGA方案实现的轻量级嵌入式AI计算卡,适用于AI开发验证及智能硬件打造。内置Linux 4.14.0系统和深度学习预装环境,与百度大脑模型定制平台。
1.计算卡的主要架构
EdgeBoard FZ3计算卡内部搭载Linux系统,开发者可以基于Linux系统进行应用程序进行开发。 主要调用流程:1.应用程序获取视频输入->2.调用预测库加载模型->3.调度模型和底层驱动加速模块进行计算->4.获得运行结果)
本次比赛推理模型基于PaddleLite,Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎,在多硬件、多平台以及硬件混合调度的支持上更加完备,为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力。
2.计算卡接口
可以通过MiniDP接口连接显示器,通过USB转串口或以太网口下载程序,通过USB接口进行与摄像头和下位机的通信。
3.环境部署
(1)安装paddlelite (2)安装驱动:转串口驱动ch341.ko 遥控器驱动joydev.ko USB驱动usbserial.ko (3)在/etc/init.d 中设置eb.sh开启启动项 (4)部署主要代码文件 autostart,通过python环境开发不同模块
二、下位机
本次比赛使用的下位机为鲸鱼机器人提供的WOBOT主板,该主板基于Arduino和ATmega2560设计,可接入电机驱动板和舵机、传感器等设备。
1.下位机性能参数
硬件参数 |
---|
处理器 | ATmega2560处理器,时钟频率16MHz,256KB Flashrom,8K RAM | 按键 | 共2个,一个程序复位键和程序运行键 | 端口 | 不少于6路RJ11传感器接口,可接模拟、数字、串口、IIC传感器及数字输出。提供不少于2路485串行接口,可接智能舵机,可扩展8个直流电机驱动口、4个步进电机驱动口、8个编码电机驱动口 | 扩展端口 | 8路PWM输出接口,4路模拟输入接口,1路IIC与UART硬件接口 | 电机驱动板 | 主芯片Cortex-M3处理器,主频72MHz,256k FLASH,64K RAM。4路RJ25电机接口,可接编码电机、直流电机。每路具有过电流保护功能,最大输出电流2.7A,具有软件防堵转功能。 | 其他设备 | 集成蜂鸣器、指示灯等,系统工作电压7-12.6V |
2、下位机接口
下位机端口示意图: 扩展端口可以接入电机驱动板: 主板可以接入两块电机驱动板(通过电机控制ID区分),驱动板可以接入M1-M4 4个电机,P1-P6可以接入传感器和其他组件。
通过USB接口连接,下位机可以通过WOBOT提供的开发软件进行简单的开发和测试,支持C语言和模块化开发。在实际的上下位机中,需要根据通信协议解析数据包,接受上位机的结果进行处理。
三、通信协议
在上位机得到决策结果后,需要将包括电机运动参数在内的决策结果返回下位机,此时上下位机的通信需要按照协议进行,通信协议的格式如下:
| 帧头 | 长度 | 驱动板号 | 电机号 | 运行模式 | 速度参数 | 校验 |
---|
长度 | 2 字节 | 1 字节 | 1 字节 | 2 字节 | 1 字节 | 2字节 | 2字节 | 数据范围 | 0x77、0x68 | Len | (1-2) | (1-4) | (1-0) | (-100-100) | Sum | 说明 | 固定值 | 帧长度 | 根据拨码开发设定 | M1 对应:0x01 + 实际设备号 | 闭环:0 开环:1 | 电机速度设置 | 加和校验 |
设备参数示例:
ACT_ENCODE_MOTOR =12, //编码电机 ACT_ENCODE_MOTOR_ALL =121, //编码电机 ACT_DC_MOTOR =53, //直流电机 ACT_SMART_MOTOR_SPEED_POS=54,//智能电机位置 ACT_SMART_MOTOR_SPEED =55,//智能电机速度 ACT_PWM_SERVO =11,//舵机
使用示例:
控制智能伺服电机的角度 set_smart_servo_angle(id, speed, angle);//77 68 06 00 02 36 01 50 02 0A 控制编码电机 set_encoder_motor(en_motor_Id, en_motor_port, en_motor_power);//77 68 06 00 02 0C 01 01 32 0A
总结
本文仅仅介绍了硬件设备的开发和使用,具体的控制逻辑需要根据实际进行设计和调整。
|