###### tags: `transformer-pipeline` `pin-inspector` `introduction`
# pin-inspector.introction
**整脚后引脚检测**
用于检测整脚后的变压器是否仍存在引脚不良
[TOC]
## temp
about k: 电压的一个单位对应物理的一,一丝=0.01mm,`丝/1个读数单位`
about x offset: 以内侧激光测距仪为基准,外测的相对偏移量(光栅尺方向、电机方向)
```
k:-6.32496744e-04
```
可能会有这种情况,圆会拟合到上半部分,考虑用判定一下是否圆心小于平均值

**实验结果缓存**
整个激光测距仪的数据非常的依赖与针脚的距离是否合适,调整时保证变压器在正中位置时能够稳定即可
## codes
### [pin-analyzer.test_vt3](http://gitlab.sho.hypereal.com/robotic/pin-analyzer/tree/test_vt3)
```c
//record data
test_client.py
//for calibration
pin_inspector_get_k.py
pin_inspector_get_x_offset.py
pin_inspector_get_y_offset.py
```
### [transformer-pipeline.test_pin_inspector_online](http://gitlab.sho.hypereal.com/robotic/transformer-pipeline/tree/pin_inspector_test_machine)
## calibration
> [origin version](https://docs.google.com/document/d/1EyHpowRUUNk0ByNS8flumy6wC0IqT6TcH2gvWeCUfpk/edit#) [name=陈易平]
### calibrate k value
step 1, in pin_analyzer, retrieve realtime adc value by using
```
python3 pin_analyzer/test_client.py
```
step 2, write down the ADC value and the total thickness of sliders, put them to a text file
step 3, redo to get more ADC value using different totalthickness of sliders, then we get the all record into a file, something like
```
2935.3446896459764 15
2938.887459163944 15
6134.095006333756 13
6134.096939795986 13
9268.84698979932 11
9268.829188612573 11
12431.636109073937 9
12432.950996733116 9
... // 5..10
```
step 4, calibrate with these record using:
```
python3 pin_inspector_get_k.py
```
step 5, check k, about 6 * 10^-4
### calibrate x offset
step 1, place a cylinder on the pin inspector platform
step 2, make sure that this cylinder can be detected by lasers lie both sides
step 3, record data
```
cd build
mkdir sample
/bin/sample_pin_inspector
```
step 4, check data, channels & circles, ensure that you can write down a range which only contains the two circles, asume that rangea is $[8000, 15000]$,and chanels are $5$ and $7$
```
python3 tools/visualize_pin_inspector.py
```

step 5, write config
```
lower_limit
uppder_limit
chanels //from outter side to the inner side
```
step 6, calibrate & sample output
```
python3 pin_inspector_get_x_offset.py
32.47104626852157 //in mm
```

### calibrate y offset
config
step1, use the phneumatic claw to seize a standard slider, then
```
cd build
mkdir sample
/bin/sample_pin_inspector
```
step 2, check data, channels & 2 target lines, ensure that you can write down a range which only contains the two lines
```
python3 tools/visualize_pin_inspector.py
```
chanels are $5$ and $7$, rangea is $[10000, 15500]$

step 3, write config
```
kThicknessOfMiddleSlider
kThicknessOfSideSlider
lower_limit
uppder_limit
chanels //from outter side to the inner side
```
step 4, calibrate
```
python3 pin_inspector_get_y_offsert.py
-13.59174925040592 //mm
```
## test ( python version )
the number in following picture shows 10 pins of A451
```
6_7 __ _ _8_9 inner side
###########
####A451###
###########
0_1_2_3_4_5 outter side
```
step 1, do "二次元" calibration,get the position and picture of pins
```
圆1
内容 测量值 名义值 超差值 上公差 下公差 状态
圆心X 38.8593 38.8593 0.0000
圆心Y 45.8104 45.8104 0.0000 ....
...
```

step 2, use sliders to adjust the Y-position of laser devices, make sure that pins of both sides of the transformer can be detected by laser devices
step 3, record data
```
sample_pin_inspector.cpp
```
step 4, test
:::warning
there are more than one entrance inside the main function of script, make sure that you are runing the script using the entrance you wanted
:::
```python
# python3 pin_visualizer.py
if __name__ == '__main__':
show_extract_round_pins(folder, kSpeed, kObjId, kPosId, kFrontAdcId, kBackAdcId, True)
# show_extract_flat_pins(folder, kSpeed, kObjId, kPosId, kFrontAdcId, kBackAdcId, True)
# show(folder, kSpeed, kObjId)
```

step 5, compare ( python version )
将二次元的数据和上一个步骤的数据放在一起(最好记录成实验文档,备查

拷贝出来到一个文件里准备运行对比程序

配置好后运行运行代码:
```
python3 minimize_compare.py
```
效果较差:

效果较好:

## compare ( cpp version )
## 项目主要问题
激光测距仪+算法拟合出的针脚足够精确:
- 多次实验存在的误差?(之前初步测试过标准差约在 0.几 丝)
- 和二次元结果的误差?
- 可容忍的误差范围?
- 激光测距仪(高速模式)在要求速度下的稳定性?
算法可优化?
- 比如之前计算 loss 时选择的标准(avg 或 max)
- 优化范围过滤,过滤掉无关区间
如何保证
**硬件问题**
**软件问题**