AF base tuning <0>

CAF 审查测试

■ Actuator Hysteresis/Damping 双向完整扫描磁滞
■ Actuator range test 开环马达范围
■ Actuator settle time 马达稳定时间
■ Focus value contrast and tail 对焦值曲线的反差与拖尾
■ Distance to lens mapping 镜头距离映射

如有错误欢迎指正。

1. Comlete RFI worksheet

在这里插入图片描述

xxx_actuator.xml 的initialCode 修改为RFI计算出来的。
initial finescan setepsize 设置为Num Steps Betweem Stat Points(Step size for each lens move),精确搜索步长。
Frame Delay Nor 镜头移动之间的帧延迟数,可以设置2或3, 3确保记录FV时镜头处于稳定状态。
在这里插入图片描述

验证数值: 需要拍摄iso12233 图卡,将测量数据与 20 cm、 30 cm 和 120 cm 距离对应的 Lens Position Tuning Values 组中AF Tuning 选项卡中的理论数据生成的参数进行对比。理论数据从log 中获取, 参考就是rfi 表格生成的数据. 如果某些位置差异很大,则检查灵敏度是否错误,将灵敏度和10cm DAC更新到RFI,生成新的参数。 Near_Limit_index 其实最好为0.

Single Search – Index: 指数是物理距离与镜头位置的映射,其中指数 [0] 代表最近点,并逐步向代表无限远点的指数[n] 移动。指数决定着单次 AF 算法中的决策边界。建议将逻辑镜头位置的总体可移动范围设为[0 - 399],以确保多个马达与传感器的逻辑镜头位置相同。
按照rfi 中的数值,填入 Single Search – Index . Near_Limit_index和7cm_index 建议冲0 开始
Near_Limit_index
7cm_index
10cm_index
14cm_index
20cm_index
30cm_index
40cm_index
50cm_index
60cm_index
120cm_index
Hyperfocal
infinity_index

2.AF 关闭 eeprom

eeprom dump 的数据

Autofocus data dump for EEPROM p24c64q_s5k3l6

Macro dac = 525
Infinity dac = 262
Macro margin = 0.250000
Infinity margin = -0.400000
Hall offset bias = 0
Hall register addr = 0
Lens Calibration Data: numberOfDistances: 0

镜头移动是通过编程数字(Digital)→模拟(Analog)控制执行器中的转换器(DAC).

未关闭eeprom , dac 和lens position 的关系。
Macro Dac 将镜头推到远郊无限远处的dac值。
Infinity Dac 将镜头推到近郊无限近处的dac值。
OTP中的Macro dac和Infinity dac都是面向前方测量的,我们需要使用Macro margin和Infinity margin 扩展镜头移动范围以覆盖facing_down_inf和facing_up_macro场景
dac 399–157
dac 0–588


	Line 5626: 01-02 20:47:41.536   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[399] 157
	Line 5627: 01-02 20:47:41.536   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[398] 158
	Line 6023: 01-02 20:47:41.578   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[10] 578
   .....
	Line 6028: 01-02 20:47:41.578   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[5] 583
	Line 6029: 01-02 20:47:41.579   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[4] 584
	Line 6030: 01-02 20:47:41.579   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[3] 585
	Line 6031: 01-02 20:47:41.579   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[2] 586
	Line 6032: 01-02 20:47:41.579   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[1] 587
	Line 6033: 01-02 20:47:41.579   899   899 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[0] 588

关闭eeprom
1.修改actuator.xml
initialCode 改成 0 ,表示初始从0 开始.
codePerStep 改为 2.5,马达行程为0~1024.
在这里插入图片描述
2. 关闭eeprom,修改xxx_eeprom.xml

Line 5567: 01-02 22:06:44.649   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[399] 0
	Line 5568: 01-02 22:06:44.649   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[398] 2
	Line 5569: 01-02 22:06:44.649   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[397] 5
	Line 5570: 01-02 22:06:44.649   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[396] 7
	Line 5571: 01-02 22:06:44.649   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[395] 10
	Line 5572: 01-02 22:06:44.649   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[394] 12
	................
	Line 5964: 01-02 22:06:44.679   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[5] 985
	Line 5965: 01-02 22:06:44.679   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[4] 987
	Line 5966: 01-02 22:06:44.679   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[3] 990
	Line 5967: 01-02 22:06:44.680   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[2] 992
	Line 5968: 01-02 22:06:44.680   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[1] 995
	Line 5969: 01-02 22:06:44.680   886   886 V CamX    : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[0] 997

3. log 设置

log 设置,打开AF(8),State(2),Sensor(2) 的log
 # cat /vendor/etc/camera/camxoverridesettings.txt
overrideLogLevels=0x3F
logWarningMask=0x08000202
logInfoMask=0x08000202
logVerboseMask=0x08000202
enable3ADebugData=TRUE
dumpSensorEEPROMData=TRUE
enableTuningMetadata=TRUE
afFullsweep=3
enablePDLibLog=3

log 搜索
af_pdaf_proc_pd_single grid|af_pdaf_proc_pd_single roi|af_fullsweep_final|sweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch

注意:拍摄为待调试的设备进行拍摄。拍摄图像时,设备的朝向必须为横向。

4.Actuator Hysteresis/Damping

目的:测试马达磁滞,检查从无线远处移动至微距位置以及反向移动过程是否呈线性。
原理:从远端位置向近端位置扫描镜头,之后相反方向再次扫描镜头。两个方向的对焦峰值应该近乎相同。如果两个对焦峰值不同,则表示镜头模块存在严重迟滞
测试环境:500lux 以上的照明条件下,将ISO 12233分辨率测试卡放在距离三脚架上的设备30cm的远的地方,跑fullsweep 。
评判标准:excel 绘制fv 值于lensposition 的关系。如果两个方向的峰值相差10%,则表明该模块存在较大迟滞

数据处理:
关键字af_fullsweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch,利用excel 绘制fv 值于lensposition 的关系。
af_caf_util_get_value i:1
关闭otp 的Focusval 和 LensPosition 图形:
在这里插入图片描述
打开otp 的图形:
在这里插入图片描述

5.Actuator range test

目的:测试将检查微距和无限远时的边界范围。测试会检查镜头是否有足够的移动范围,可对焦微距/无限远处的物体
测试环境:在 500 lux 以上的光照条件下,将 ISO 12233 分辨率测试卡放置在距离三脚架上的设备 10 cm远的位置,进行微距测试。在 200 cm 的位置重复执行测试,从而执行无限远测试。fullsweep
数据处理:
关键字af_fullsweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch,利用excel 绘制fv 值于lensposition 的关系。
在这里插入图片描述
在这里插入图片描述
高通文档判断微距和远郊
如果绘制的关系图与微距和无限远(通过)图相似,则表明马达设置和 OTP 数据均正确。
如果绘制的关系图与微距和无限远(未通过)图相似,则表明马达设置和 OTP 数据有误。

6.Actuator settle time

目的:该测试将检查多个帧同一镜头位置对焦值的一致性,从而检查发出镜头移动命令后,镜头是否稳定
测试环境:在 500 lux 以上的照明条件下,将 ISO 12233 分辨率测试卡放置在距离三脚架上的设备 30 cm远的地方。
在这里插入图片描述
如果绘制的关系图与图 A 相似,则表示阻尼和振铃设置已正确配置。如果绘制的关系图与图 B相似,则表示可能存在以下问题:
■ 阻尼/振铃设置有误
■ 在 ISP 统计数据解析与将统计数据发送到 AF 核心之间存在时序问题
重复测试两次以上来确定问题是否真正存在。若确认问题存在,则调整阻尼设置,并重新执行测试。如果仍存在该问题,则在实验室使用激光检查阻尼设置
在这里插入图片描述

7.Focus value contrast and tail

目的:该测试通过检测对焦值图的反差(FV 最大值/FV 最小值)来检查其质量。比值越大,自动对焦算法的反差越好。
测试环境:在 500 lux 以上的照明条件下,将 ISO 12233 分辨率测试卡放置在距离三脚架上的设备 30 cm远的地方。
数据处理:
关键字af_fullsweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch,利用excel 绘制fv 值于lensposition 的关系。
在这里插入图片描述
如果图看起来与图 A 相似,则 Bayer AF (BAF) 配置的配置正确。如果图看起来与图 B 或图 C相似,则 BAF 设置有误,或在 BAF 状态的 ISP 解析中出现错误。重复测试两次以上来确定问题是否真正存在。

03-14 17:02:16.133   890  1182 V CamX    : [ VERB][STATS_AF ] af_fullsweep.cpp:126: af_fullsweep_check_for_max_fv FVmax: 752604032.000000
03-14 17:02:16.133   890  1182 V CamX    : [ VERB][STATS_AF ] af_fullsweep.cpp:144: af_fullsweep_check_for_max_fv FVmax: is 752604032.000000
03-14 17:02:16.133   890  1182 V CamX    : [ VERB][STATS_AF ] af_fullsweep.cpp:165: af_fullsweep_check_for_min_fv FVmin updated. Old: 71199056.000000 New: 65298976.000000

在这里插入图片描述

8.Distance to lens mapping

目的:这项测试的目的在于验证10cm 处得到的DAC值是否可信。由于RFI worksheet 中的各距离的DAC值都是通过10cm处DAC值所推导出来的,因此只有在保证10cm 处DAC值确认的情况下,才能保证通过RFI worksheet 计算出来的其他距离DAC值可信。
测试环境:在 500 lux 以上的照明条件下,将 ISO 12233 分辨率测试卡放置在距离三脚架上的设备 14 cm远的地方。在 20 cm、 60 cm 和 200 cm 距离处重复上述测试。

抓取开机log 初始化dac 和lens pos 的关系。camxactuatordata.cpp:194
 抓取10cm 的iso12233 的finalpos。

马达的最大行程为 1~1024(dac),驱动中的 infinity、mac 等等都是电流的逻辑表示,即 dac 值,其与 kernel 中的 current 是一 一对应的。高通在 Chromatix 中不直接使用电流的逻辑表示,而是改用镜头位置的逻辑表示,即 lens_pos,目的应该是为了解耦。
1、AF Algo 计算出 lens_pos;
2、经公式转换,向 actuator 传递转换后的 dac;
3、actuator 向 kernel 传递 dac,再在 kernel 中换算成 current,进而推动镜头。

(1)DAC 参考eeprom 算出dac 的范围
infinityDAC = 262
macrroDAC= 525
DACRange = 263
infinityDAC =262+ (-0.4263) = 156.8
macroDAC = 525 +(0.25
263) = 590.75 . so DAC的范围157 --590 对应lens pos 399–0
01-03 13:34:48.440 889 889 I CamX : [ INFO][SENSOR ] camxactuatordata.cpp:113 CalibrateActuatorDriverData() Infinity:262, Macro: 525: WithMargin: Infinity:157, Macro: 590, InfinityMargin:-0.400000, MacroMargin: 0.250000
在这里插入图片描述
(2)lens pos 和Dac 的关系
lens pos = position_far_end -(dac - initial_code )
dac = position_far_end + initial_code - lens_pos
打开eeprom ,根据eeprom 数值:
: [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[3] 585
3 = 399 - 585 + intial_code
initial_code = 588-399 = 189

Table[3] – 3 为lens pos , 585 为dac 值
在这里插入图片描述

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值