FastRVC功能记录

FastRVC功能

1. 功能需求

  1. 开机阶段需要支持倒车功能;
  2. 输入为AHD鱼眼摄像头需要做矫正和后续数据计算;
  3. 需要支持轨迹和雷达显示功能;

1.1 功能实现方式评估

从结构方面考虑支持三种实现方式:

  1. 使用arm2倒车,输入输出和轨迹雷达都是现成的;
    需要做两个处理:1. 鱼眼矫正;2. 采集数据做后续运算;目前这部分在系统阶段统计数据需要一个A53 100%的算力,arm2为arm9实现,算力差异较大(差不多是1/5的样子);
  2. 使用一个A53核独立出来处理此部分
    此功能暂时没有实现过,需要考虑核间资源共享和通信相关问题(SMP),非短期内可以解决的方案;
  3. 采用当前fastavm的结构,轨迹雷达不支持,出图时间最早在7s左右,可以跟客户沟通是否满足其需要

1.2 决策实现

与客户沟通后,可以接受方案三的情况,但是要求在2周内完成,则需要处理的事情:

  1. 获取图像,AVM功能是获取4ch的mipi数据,则在此阶段可以获取到数据(如下两个点开始没有考虑,导致时间周期拉长):
    1. 需要check,获取到的数据是通过哪个path的?默认AVM是CSI2
    2. 需要确认,这里获取到的数据支持哪些格式,要考虑格式转换耗费的资源,最好是cam isp display都支持的格式
  2. 显示图像,目前支持fastdisplay功能
    1. fastdisplay仅支持一层surface的申请(即一层HW layer),需要添加为两层layer支持
    2. fastdisplay 中没有隐藏surface的接口,则需要退出倒车时,只能销毁掉surface使用
  3. 将获取的图像给到申请到的buffer中
    1. 实际需要对这里的数据进行处理后再送入到displaybuffer中,但是这里仅为演示,所以直接做memcpy即可;
    2. demo 处理过程中需要实现对格式的处理,需要注意的是,有些库是临时搞出来的(hard code),所以不支持格式config;
    3. 使用完成后的退出,销毁surface即可;
  4. 轨迹雷达的处理
    1. display 部分支持两个layer
    2. 资源文件添加
      1. kernel阶段文件系统还没有挂载,只能支持raw分区,则可以添加一个分区用于存放 轨迹 & 雷达 & 数据处理算法的bin ;
      2. 可以复用logo分区,将资源文件添加进去,在arm2阶段读取出来;

2. 问题记录

2.1 获取cam数据失败

在demo板验证完成后,给到客户测试无法获取到数据,查看原理图确认当前AVM支持获取的为CSI2的数据,而RVC摄像头连接为CSI0A的port,则无法获取;
这部分实现为了尽快满足客户需求,所以写的hard code,确认此问题后对此部分添加多个ch可配置功能(delay 2天)

2.2 格式转换

这部分在功能开发开始时就有考虑,但是各个模块各自实现好自己部分后没有联调,导致各自的格式不统一,经过双方check后确认所有模块均支持的格式为YUV422中YUYV;

  1. ISP获取数据格式支持:更新so + 驱动中配置YUYV,注意这部分仅支持YUV422;
  2. CAM获取数据支持YUV422 & RGB,当前逻辑为读取sensor的格式,直接获取,这里不需要上层配置;
  3. Display layer 支持格式较多,YV12\NV12\RGB\YUV422等等,然后与前边两个环节取交集后则只支持YUYV了;
    此部分格式测试耗费1天时间;

2.3 编译问题

vendor/autochips/proprietary/hardware/cam_test/LibCamTest.cpp:197: error: undefined reference to ‘DisplaySurface::setZOrder(int)’

对应库的版本不对,so中没有实现setZOrder,需要更新

被依赖的中间文件生成在:
头文件生成位置在:out/target/product/project/obj/HEADER_LIBRARIES
shared_librarie生成位置在:out/target/product/project/obj/SHARED_LIBRARIES
bin文件生成位置在:out/target/product/project/obj/EXECUTABLES
将所需文件都添加后,最好使用mma编译,这样会将所依赖部分全部build一遍,避免不同步;

此部分编译不过修改耗费1天时间;

2.4 surface隐藏

退出倒车时,需要将申请到的surface 隐藏起来或者销毁掉,来保证完整功能;
此部分没有提供隐藏接口,则直接将申请的surface delete掉完事

2.5 格式转换与RVC互相影响

这里是一个bug,在kernel启动阶段将cam获取的img格式设置为YUYV之后,应用倒车(系统启动后的倒车功能),颜色显示不对,明显就是cam这里配置的问题,经check确认,应用倒车中图像获取走android标准接口,理论与这里不冲突,但是由于修改为kernel部分,然后hal层中并没有拿到kernel中的具体格式,这里只是拿到了一个YUV422,没有包含其中的具体排列,所以次用YUYV转换为YV12的过程出现了异常,导致显示不对;

2.6 UI与视频叠加

未完待续;

3. 总结

  1. 需求评估阶段需要完整梳理一遍功能过程,确保无遗漏
  2. 编译需要将更新内容添加完全
    1. 相关库,要替换到对应的位置;
    2. 相关头文件,也要替换到对应位置;
    3. build时需要mma,更新所有依赖文件;
  3. debug时间要预留出来,设计越合理,前期考虑足够完善则后期问题越少;
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值