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时间要预留出来,设计越合理,前期考虑足够完善则后期问题越少;

FastRVC功能记录相关推荐

  1. pgsql遇到小问题及小功能记录

    一.问题: 1.ERROR: invalid input syntax for integer: "" 使用COALESCE((.a.delete_flag,'0')::int a ...

  2. Unity功能记录(一) ------ 截图/录屏保存到相册(Android/iOS横屏竖屏都可以)

    截屏和录屏unity端代码都已经分享过 : Unity功能记录(十七) ------ 截屏功能 Unity插件(二) ------ NatCorder(录屏保存到相册) 但是之前一个个的其实并没有用在 ...

  3. 功能记录-行政区划(bug【挖洞】:数据结构问题)

    老样子,shp点数据转换geojson就不提了,上一篇有(23条消息) 12.3 总结(功能记录:智慧成都地铁网络)_628砍柴人的博客-CSDN博客 挖洞是数据问题,放最后说 1.画出各个县组成一个 ...

  4. mysql 操作审计_利用mysql的audit审计功能记录用户操作信息

    mysql数据库中我们如果想记录用户的操作信息,可以通过audit审计功能来来实现.该功能是被自动触发的,在文件plugin_audit.h中可以看到比较详细的定义.在audit插件中,可控制的变量包 ...

  5. linux系统路由功能记录

    在某些特殊应用里,可能会用到路由的功能,一台设备通过另外一台联网的设备进行联网.这里主要记录一些必要得命令. 正常来说就是下面几条命令: A设备 iproute add default via 192 ...

  6. SQL Server 审计功能-记录所有的操作记录

    说到审计这个话题,相信作为一个企业管理员都知道,比如一般作为一个AD管理员的话,一般都会通过Policy开启审计功能,记录一些自定义的事务日志.对于SQL Server来说,审计也是一样的,SQL S ...

  7. UE4小功能记录——方法输入输出引脚的排序

    记录一个很初级但是很容易忘记的小功能: 在UE的开发过程中,很容易就遇到前后方法的参数明明一一对应但是由于引脚顺序的问题,造成蓝图看上去比较杂乱影响美观.如下: 此时,我们不要慌,点击选中NewFun ...

  8. java导出pdf功能记录

    这几天已在做处理导出pdf文件的功能,摸索了几天总算可以了.记录下这几天遇到的问题. 1.网上基本都是基于Itext5和Itext7来处理的.我最终是在Itext5上成功了,itext7应该是模板出问 ...

  9. vue 列表内容自动向上滚动_【功能记录】Vue列表向上滚动无缝连接

    最近给朋友帮忙的时候遇到一个列表向上滚动无缝连接功能的需求,整理了下思路,把这个功能草草的做出来了,尚未做优化完善,先记录一下吧~ Html代码 {{item.accountName}} {{item ...

  10. Unity功能记录(十四) ------ 启动画面

    今天换启动画面时美术给了好多图,但是很神奇要不是拉伸要不就是有边框,比如以下: 整了好久,都不知道为什么,透明图更离谱,还拉伸了,查看官方文档才发现要怎么修改 Unity Splash Screen设 ...

最新文章

  1. 【强化学习】DDPG
  2. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改
  3. html=r.text,在R中使用text()
  4. 在WinAPI环境下获得1小时前系统时间
  5. 琴生不等式一般形式_001.二次函数、方程和不等式知识点
  6. java 元祖_在java中对元组列表进行排序的有效方法
  7. 【转】CCScale9Sprite和CCControlButton
  8. linux下main函数的返回值问题
  9. Apollo OpenDRIVE和ASAM OpenDRIVE的区别
  10. 划分vlan实验心得体会_vlan划分实验报告.doc
  11. CRM-如何获取客户
  12. 关于勾股数的规律及证明
  13. Http头:only-if-cached
  14. 菜鸟网络今日发布超级机器人旗舰仓
  15. 面试已经通过不想去,怎么拒绝HR?
  16. 用evo工具箱评估LeGO-LOAM轨迹
  17. 谷歌提出新框架Soft Diffusion:从通用扩散过程中正确调度、学习和采样
  18. Linux进程信号(产生、保存、处理)/可重入函数概念/volatile理解/SIGCHLD信号
  19. matlab dwt实现原理,基于DWT的数字水印算法的MatLab实现.pdf
  20. php获取今日、昨日、本周、本月 日期方法

热门文章

  1. Java 基础系列-LocalDate相关
  2. @PathVariable获取带点参数,获取不全
  3. 第三届空间信息智能服务研讨会
  4. Java调用MQ队列
  5. 台媒体:IBM PC将成特洛伊木马【ZZ】【另一个角度】
  6. js 使用闭包来创建私有变量
  7. SEO—搜索引擎优化初探
  8. JVM 基础知识(GC)
  9. 泡水十几秒仍能工作 小米手机2也能防水了
  10. dos命令集--江南技术联盟