增加部分程序设计

This commit is contained in:
bmy
2024-08-26 12:33:11 +08:00
parent 2f4d52b0d2
commit 3a83984ed3

View File

@@ -77,16 +77,33 @@ z 轴使用带霍尔编码器的蜗杆电机,该电机减速机具有自锁特
### 上位机环境配置概述 ### 上位机环境配置概述
上位机程序主要基于 python 和 C/C++,为了保证和原有环境不产生冲突,使用 conda 创建了 python 的开发和运行环境。
在程序实际运行中,我们发现当推理开启时,一个模型的进程需要占用 2G 左右的内存,即使是在代码中开启了内存优化,并且指定大小,实际占用并没有明显区别。当开启多个推理进程时,会导致内存占满,使得某些进程被 kill 掉。由于规则限制最大只能使用 8G 内存的 nano 板卡,所以挂载了一个较大的 swap 分区,使用磁盘缓存保证不会出现物理内存占用过高的情况,实际测试下,未见明显的性能影响。
此外,为了保证开机自启的效果,我们构建了一个守护进程,使用 systemctl 管理。
### 上位机程序总体设计 ### 上位机程序总体设计
为了保证程序的高效运行,上位机程序总体采用“生产者-消费者”模型,所有进程由守护进程管理,首先由图像采集进程采集图像并储存在缓冲区中;推理进程从缓冲区获取图像,推理完成后将推理结果储存;控制线程需要推理结果时,向推理服务器请求暂存的推理结果即可,所有进程间请求均使用 zmq 的 “请求-应答” 模式。通过上述的结构模式,可以保证获取数据最新且请求速度较快。
### 执行机构接口程序设计 ### 执行机构接口程序设计
执行机构接口作为 python 模块导入控制进程的程序中,本体基于 C 编译成动态链接库,然后通过 cython 构建成 python 模块。
程序接收传入参数并封装成数据包,通过串口设备发送到下位机主控,然后接收下位机主控的响应,校验响应数据后返回。实现了应答超时和应答出错返回的机制。
### 图像采集服务器程序设计 ### 图像采集服务器程序设计
图像采集服务器程序基于 C/C++ 编写,是一个独立的进程。该进程使用 opencv 读取摄像头图像,每个摄像头对象构造一个采集和应答线程,保证获取和响应的图像最新。
### 推理服务器程序设计 ### 推理服务器程序设计
### 赛道线回归模型概述 ### 赛道线回归模型概述
### 任务主程序设计 ### 任务主程序设计
任务主程序将每个任务封装成对象,根据实际需求放入队列。程序执行时,任务对象依次出队。任务的执行按照 “搜寻-执行-后处理” 的方式运行,当执行某一任务时,先循环搜寻任务标志,待搜寻到可以进入任务的条件后,进入任务执行函数,函数内执行校准、夹持、伸展等任务。执行完成后,进入后处理阶段,该阶段可以设置下一任务的相关参数,并将执行机构运动到下一任务的预备位置。如果该任务不被开启,则执行一个任务不开启时才调用的函数,使执行机构运动到中立位置,保证下一任务开启时不会发生冲撞。
### 守护和交互程序设计 ### 守护和交互程序设计