Advertisement

自动驾驶叉车(一)

阅读量:

自动驾驶叉车(一)---方案设计

好久没更新了,终于闲下来回学校了,陆续把这一年的工作总结上来。

-------------------------------------------------------------------------------------------------

本篇主要介绍方案确定和硬件架构设计

该项目是以前面完成的定位模块为依托,在如今智慧仓库方兴未艾的时代背景下,我们团队选择了叉车这一典型应用场景来进行系统化的研发工作。目前已经完成了第一版样机----基于永恒力ERC212的自动化改造工程,并涵盖了定位系统、运动控制系统、调度及路径规划系统以及传感器检测系统的软硬件集成开发及调试工作。

1、方案确定

在对现有同类产品进行了调研之后,经过调研发现市场上现有的自动叉车方案多采用基于激光雷达的定位技术。其中磁导标记和地面二维码等无法适用于叉车应用,并且由于重量过大以及运动控制的不便性容易导致设备损坏。为此团队采购了SICK公司的NAV350定位雷达设备,并通过多方面的调研与对比分析最终确定采用视觉定位技术作为解决方案

2、方案设计

自动驾驶叉车分为两大模块:作业装置与调度系统。二者之间采用Wi-Fi技术实现网络化连接,并采用socket协议进行数据传输。

综合权衡了功耗、频率、资源和价格等多方面的因素后,我们决定选用NVIDIA公司的嵌入式系统——Jetson TX1作为叉车控制器。该系统由4颗ARM Cortex-A57处理器与256个CUDA核心组成,在嵌入式计算领域具有显著的优势。然而这一系统的片上资源较为丰富(功耗范围在10W至15W之间),但在实际应用中却存在一定的不便——缺少了CAN总线接口这一关键功能。这使得我们在实现车辆控制时遇到了不少问题(TX2设备配备了CAN总线接口但并未被采用)。而主控模块则承担着自动驾驶的关键功能:视觉感知与运动控制

辅助控制器:其功能相对有限,在调节外部传感器(如TX1的GPIO端口等略显不足)方面表现不够完善。为了验证其控制能力的有效性, 我们尝试使用Arduino开发板进行了一些测试工作, 该设备能够顺利接收来自避障雷达和引线编码器等相关数据, 并通过I2C总线将这些信息传输至主控制器

本系统采用了多类传感器:包括摄像头(用于图像采集)、激光雷达(用于障碍物探测)、拉线编码器、超声波测距仪(用于距离测量)以及接近检测装置(用于检测物体接近情况)。

除摄像头连接至主控,其余传感器皆由辅控控制。

3、控制策略(驱动)

我们主要由Can总线控制的是叉车的行驶与转向以及货叉的高度调节。ERC212采用Can总线作为主控单元来完成驱动与协调工作;其转向系统的调节则基于手柄旋转编码器与转向电机编码器之间的数值差值进行精确控制

基于上述分析可知,在叉车的驱动控制器中输入该系统的Can总线信号以及一个旋转编码器模拟信号即可实现对前述三种动作的控制。然而ERC212采用的是Canopen协议这一技术细节,并非公开透明因此这部分可视为一个封闭系统。经过一番思考后我们决定采用实验法:通过使用CAN总线分析仪采集了叉车在不同运动状态下所对应的CAN总线数据及其相应的CAN ID从而获取了控制叉车前进以及货叉升降所需的速度指令和CAN ID随后的速度指令则直接按照该数据格式发送至系统即可。

实现了Can的控制信号后(...),还有待于处理转向电机编码器信号模拟的部分(...)。这部分让我花费了不少时间(...),因为我之前并未接触过此类传感器(...)。我以为这只是一个简单的模拟量电压源问题(...),测试后发现两路信号呈现出正弦波的变化规律(...)。折腾了半天却始终找不到其中规律所在(...)。后来通过搜索引擎找到了这种传感器的具体型号信息(...)。随后查阅了相关数据手册(... ),并最终推导出了转角与输出之间的对应关系公式( ... ),从而完成了转向电机的实际控制工作

下面附上硬件架构图,比较粗糙

全部评论 (0)

还没有任何评论哟~