综述篇
本周是2018年华中科技大学同学来密苏里科技大学 EMC LAB进行暑期实习的第九周。时间过得真快,还剩一个月就要回国了。这边实习的氛围很好,特别是mentor都很负责很有耐心地指导我们完成项目。每个人都有自己的任务,坚守在自己的“岗位”上。LAB里的学长学姐们都很忙,除了自己的项目任务,还要去学院上课,有时我们也会跟着学长学姐一起去蹭课,感觉很不错。另外,有时也会跟着学长学姐去健身房运动,算是一种调节,因为平常也不用怎么走路,有适当的运动会让自己的状态更好。
个人篇
文 | 张中洋
由繁入简的一周。
本周的主要任务是构建基于强化学习算法PolicyGradient的针对Toy Problem的健壮代码以及之前项目论文的继续。下一个任务将是基于强化学习的PCB板过孔及电容的数目、位置、大小等参数的优化,我和张岭学长准备首先采用Policy Gradient算法对一些简单函数写一个示例代码,以确保后续研究的可行性。由于之前已经有了大量的相关编程经验,整个过程也进行的十分平稳而顺利,目前已经基本完成了所有的代码框架构建工作并得到了一部分“ 可人”的测试结果。其实之前并没有正式接受过深度强化学习的项目,所以从学习基础理论知识到亲自动手实践,甚至做出相当的优化的这个过程还是十分令人享受的。其中也发现了深度强化学习和传统深度学习的一些极大不同之处,如score并不像深度学习的loss一般整体上四平八稳的下降,而是像是有着周期性上升下降规律的波形一般起伏不定;又如模型的设计本身不是最重要的部分了,而对于reward这个新的变量的定义和整体“策略”的制定更加重要。
单论编程方面,我的代码风格从刚开始入门机器学习时的简陋和不完备到之前一段时间的事无巨细、极力做到缜密但却又失之简约和易懂的特性,再到最近的层层封装,充分使用Python的各种高级特性,在保证了缜密性和完备性的同时渐渐做到了最大程度的解耦合和易读性,这些变化让我感到十分开心。是可谓由简入繁易,由繁入简难。如果说“由简入繁”是较为单纯的经验和代码积累,那么“由繁入简”则是在对高级用法的理解的基础上的再次进化了。
有趣的是我发现Pytorch在今年4月更新版本之后引入了许多新的特性,这些新特性无疑再次提高了其易用程度,在代码对各种设备的兼容性方面也做出了显著的提升,希望Pytorch和Python能越来越好!
论文也终于进入了修改阶段,希望下周能给出一版像样的稿子交由老师修改。
文|马富为
在周一和sponsor开会之后,决定直接用真正的ECU和cable harness来进行测量。这是我们真正的setup:
因为装置的限制,之前通过并联电容来获得不同电容值的方法不再适用。而且并联的瓷片电容在频率较高的情况下也会产生电感,影响元器件自身的阻抗值,获得结果也不太准确。于是我们决定通过加入介质的方法来改变电容值。最简单的就是在ECU和地极板之间垫入A4纸,通过改变A4纸的厚度,来调节电容值。
这是测量的原理图:
在setup布置完成后,我们将在周末以及下周进行数据测量,得到电流的分布,并分析数据。
文|李姜帅
1. BSS项目进展
在上周,我完成了frequency domain的内容,这周,我们迎来了time domain的挑战。回忆上一周,我们frequency domain的具体流程是:
Scanning antennaèmoves in one position——>two sources——>mixed signals——>VNA——>get center frequency value——>1601 times (1601 values)——>BSS——>separation results——>Phase-Resolved——>resolved results——>moves to next position (totally 50 positions)
在time domain,我们的流程为:
Scanning antennaèmoves in one position——>two sources——>mixed signals——>oscilloscope (ch1 and ch2)——>single——>get the data of the screen——>do FFT——> get reference frequency value——>repeat single 200 times (200 values)——>BSS——>separation results——>Phase-Resolved——>resolved results——>moves to next position (totally 10 positions)
在控制scope自动读数据和single上百次的过程中,遇到了很多问题:十进制或者二进制读数据、reference source的选择、数据转换、scale和sweep time和resolution time的处理、data buffer size大小的选择等等;在小彭的code里有scope和SONY public device的IP连接基础下,我调试scope的进程还算顺利。但是,后面做FFT的过程实在非常艰辛,一开始做的是和scope一屏数据量相等的等点N的FFT,但是从Matlab画出的spectrum来看,peak十分明显而且peak周围没有任何具有明显信息量的频谱点,mixed signal的spectrum的两个peak分的特别明显,不能提取到混合频谱点的信息。所以,我重新仔细复习了一遍DSP之后,再用MATLAB仿真了几个FFT的几个cases之后:
决定对原始数据补零处理,即将原始的采样数据末端补上127*N个0,从而补成一个新的采样数据,数据的长度为原来的128倍,一共128*N个数据点,再对这个重组数据做等点FFT,在single5次之后,做的5个FFT图如下:
很明显,bandwidth因为补零的影响,peak峰被拉得很宽,淹没了两个mixed signals的frequency peak,达到我们需要的结果。(在mixed 2 spectrum里,peak中间有一个小小的下降峰,是mixed signals不同的time信息的结果,是正常和已预测到的表现)。下图是resolved result结果:
从结果上看,结果没有frequency domain那么好,而且很多点比较混乱。不过Victor表示这个结果还算match的上(话语中透露出他本来就不相信能成功???)然后我从反推回每个步骤,发现在BSS的环节出了很大的问题:
从magnitude我们可以看出两个信号的相关性非常的高(phase在这里是random的,因为每次single的时间是random的,所以phase没有frequency domain里面那么规律,但是这不会影响BSS 和Resolved-Phase的结果),两个信号相关性非常高就会导致BSS失败,在结果绘制的Lissajous图里,可以明显看到separated的点没有汇聚到和source一样的矩形里,说明BSS失败了,这也可以解释为什么resolved result会这么差。接下来,Victor要我们用filter来做
Simulation,即用四个不同的filter来作用于信号,信号的peak应该在作用滤波器的过渡带上:
这样就可以模拟出空气中接收天线和源之间的radiation。并且要自己用MATLAB模拟出两个信号,再模拟出scope的流程,模拟出和实际测量方式一样而得到的数据,simulation结果和实际测量结果相差无几,即mixed信号是高度相关的,而且BSS是失败的。至此,time domain遇到了瓶颈,希望下个星期继续加油,但是不要再熬夜搞通宵,会死人的。
2. 生活:央央日殇,圃圃扶桑
文|彭哲坤
慢工出细活,这一周专心致志地把整个机械结构都搭建起来,算是阶段性完成了我的任务,接下来用几天的时间调试好各部分运行时间,就可以完全自动化测试了。
先说下这段时间做了什么事情,之前一直被马达会无缘无故转动这个问题困扰着,后面开始逐步排查:硬件部分接线正确,元器件正常工作,电路模块之间没有影响,转到软件部分发现每个模块单独工作时正常。最后回到了我最自信的软件部分,通过断点调试发现自己在每个模块之间加的复位操作持续时间过长,而每次复位都会让Arduino的每一个数字引脚都发出1的信息,结果导致马达在两个指令之间会无缘无故转动。看来自己对自己软件技能太过自信了,最终反而栽在了自己的拿手处,所幸最后还是解决了这个很小但是很影响性能的问题。
这一周接触了3D打印技术,使用CST搭建一个固定用的元器件的3D模型,调好形状和参数,就可以拿到ESDEMC(和实验室只隔了一道墙的公司)去进行打印。Javad和我一起完成的这份打印,但说到底还是自己经验不足而导致把时间浪费在来回跑上。3D模型搭建好以后在自己电脑上的CST显示正常,但是拿到了ESDEMC那开始打印的时候就发现有问题。仔细排查后发现其实是因为在不同软件上的边缘算法不同,结果有些许差异,导致了在底面拟合的时候出错,然后软件的自动修复功能又把它修得十分怪异。但是打印出来还是一样的,因为底层只是单纯的一层而已,很容易处理。精密的3D打印机很吸引我,花了一个小时盯着它看它的构造和运行方式,其本身就是不断地牵引着3D打印材料将其融化然后在板上点上材料,一点点“垒”起来,关键在于从3D模型到打印机运行轨迹的映射。
3D模型(半圆柱的底部因算法原因变得扭曲)
3D打印机
浙大的同学完成了他们的答辩并启程回国了。他们的答辩非常出色,覆盖面广,点也很精。上周周六晚上在他们家一起聚会,一起展现着“狼人杀”中的智与谋,我无法作为一匹“狼”潜伏在好人中,但是我擅长以“平民”角度去挖出间谍。虽然最后还是免不了离别的情绪,但是想到我们终究要为自己而拼搏努力,有缘终相逢。
在1309(浙大同学家)一起狼人杀
文|张秀珍
这周我的工作主要是完成对放射源的工作频率和工作功率的测量,我们首先在最简单的环境下,测量不同天线和不同信号产生源的工作状态,选取最好工作状态的天线和信号产生源。在确定这些之后,我们将原先做的木柜整体倒放在地上,使用泡沫作为一个界面,在泡沫上确定固定的4*4栅格,将接收天线放在每个小格上,并设定泡沫离柜子的距离,将放射天线固定在某一个位置并保持全程不变,测得每个格子上接收天线在固定的频率下的接收功率。按照原理来说,泡沫离柜子的距离越远,接收天线在水平面上离放射天线越远,测得的功率越小,但是实际中有些数据却违背了这一个想法,所以仍然需要继续探索和测试一下。关于另外的一个项目,由于CUDA和GPU的相关性质,原理上来说在跑多个断线情况下的故障潮流计算时,对于每一种情况所使用的平均时间应该越来越短并趋于稳定,因为在同时调用相同的内存时可以节省一定的时间,但是这一想法需要得到验证。通过写sheet脚本调用代码自动运行得到不同情况下的数据,可以验证这一个想法是正确的。下图便是结果。
除此之外,导师希望我能把这一个代码写一个文档来使得其他人能够很好的理解并运行这个代码,于是我决定自己写一个网页来使得多个代码文件能够同时展示,让其他人能够更好的理解,目前这个网站刚刚搭建起来,效果如下图所示。
文|徐扬
Automatic tribo-charging test system
在周一的例会上,发现之前有个测试的步骤错了,导致实验数据不可用。本应该把pad和壳单独进行分离并测试其产生的静电电量的,可是我误以为摩擦材料也需要在测试中作为变量,于是先把DUT(pad和壳的组合)放在材料上后再进行分离测试电量。由于在进行静电消除后仍残留一定的摩擦电荷,会再DUT上产生感应电荷,虽然很小,但对实验影响很大(因为pad和壳分离过程中产生的电荷量也是很小的)。小帕教授在生活中很和蔼,有时还用中文跟我们打趣,但在科研过程中非常严肃,对数据中的小错误,零容忍,连续问了我好几个关于如何得到实验结果的问题,终找到问题所在。
Lab里常有的段子就是,学长们在做测试时有时要“躲着”小帕教授 (Dr. Pommerenke): 不管是哪个学生,小帕教授看到你在做测试,或者在setup什么的,总会凑上来,“what are you doing?”, “why do you do that?”如果你不能在简短的几句话里说清楚,那么后果很严重~要么是连续几个“why”,或者直接逮你去见你的导师,总之要把你做的事及目的弄清楚不可。如果觉得你的setup有些地方不对,那么“I won’t do that”,直接上笔给你画框图,或者帮着你一起setup,有时甚至拆了让你重新按照他的想法setup。有种错觉,就是lab里的学生都是小帕的学生 ̄▽ ̄ 或许你觉得他有些“独断”了,然而事实证明大部分情况下他都是对的。他总是有很多奇怪的idea,我有时也质疑这些idea – “Yeah, the ideas are strange, but they’re right, most of the time” (answers from Sameer).
测了下pad与背包摩擦后pad金属壳表面静电电压,发现也能达到6kv,也算是不小了。基础测试也做得差不多了,估计下周五机械臂能到,很期待ヽ( ̄▽ ̄)ノ。
Common mode choke
上周已确定电感磁环在各方向上大小基本一致的,然而lab现有的器材不能进行精确的值的测量,所以我们需要进行探究,找到一个适当的范围,也就是说我们的测量精确度只要在这个范围内就可以了,而不要在实验精确性上钻牛角尖。
于是我们在CST模型中进行扫描,缩小范围。
在之前的测量结果中,我们发现在100MHz附近有谐振,初步猜想其是由于铜板和电感的耦合产生的,并用ADS电路模型进行仿真。在电路中主要调节铜板和电感磁环的耦合电容及耦合系数 – 设定相关端口的开路|短路情况并进行调参得到参数值。
可是ADS仿真不能再现100Mhz时的谐振,我们怀疑可能是电感产生了传输线效应而引起了此谐振,后期需要对电感磁环进行近场扫描,并对仿真电路中的电流、电压进行分析
来判断耦合机理。
浙大的小伙伴们已经回国了,想念一起玩耍的日子。
文|王晓纤
这周我阅读了有关aluminum electrolytic capacitor和metalized polyester film建模的资料。对于metalized polyester film,用普通的RLC串联电路建模,在低频段吻合地较好,但是在10M后,仿真的impedance比实际测量的impedance要高。对于metalized polyester film,我尝试用一种经典的模型建模,即RLC串联,再串联上一个C和R的并联电路。我还没找到有关文献描述这两个元件在电路中代表什么含义,以及怎么从测量数据中求值,所以我只是尝试在ads中tune这几个元件值。这种类型的电容比较特殊,在低频时的相位并不是-90°,而是约-10°,而且目前我也没有找到有关论文有类似的测量曲线。在下周,我需要再查看DUT中这种类型的数据手册以及有关建模的论文。
在上周,有一个普通类型的电容建模效果不理想,这周我重新建模,发现在ads和matlab中看到谐振频率不一样。因为ads是直接导入S1P文件自动画图,而matlab中我们是调用函数整理S1P数据手动画图,那问题应该是出在matlab代码上。我查看自己代码的时候,发现画这个电容的图像时,用的频率变量是另外一个电容的,所以导致谐振频率不对,自己由谐振频点推算出的电路模型元件的值也不对。在修改代码,重新计算后,仿真电路和测量数据吻合地较好。
在周四小帕教授的组会上,他布置给我了一个新任务,寻找ferrite的conductivity vs. frequency的相关资料。在周五我初步查了下之前看过的数据手册和论文,提到conductivity大多是thermal conductivity,而不是小帕教授想知道的electric conductivity。我和小帕教授反映了一下这资料很难找,很多都是thermal conductivity。小帕教授说所以你得多找找……
文|杨光
本周工作主要是将扫描到的平面转为用户所需要的新的三维空间,主要工作是连接kinetic实时进行待测物体(DUT)扫描,得到一个有限时间段内的三维图像。用户任意选择三个点形成一个新的平面,dipole设置在其中一个点上,做新的平面的电场强度色谱图。其中遇到了一些问题,最严重的问题是对Victor所需要的需求理解有误,导致多次与Victor和少辉沟通,耽误很多时间。最后结果如下,由于不会解释坐标转换的专业术语,于是我画图解释。看样子也是一个不错的选择。
周五晚上,跟数学学院胡老师,IE工程学院孙老师,ECE的直系学长张老师去圣詹姆斯吃法餐,听到了很多关于申请学习学术生活的建议和故事。我将以他们为榜样坚持努力做下去,争取下次见面的我们都会有不一样的新身份。
周末是兄弟会一年一度的GREEK WEEK,已经是第56届啦。。名字的由来是因为兄弟会姐妹会都由希腊字母构成,所有的兄弟会姐妹会都被校车带到一个公共空旷的地方开party.但是周六是一些运动比赛晚上会连着开一周party.周末在圣路易斯会有一年一度的热气球节。
文|彭年
这周在做test,感觉自己像一个手工业制作者,自从上次用木板做了箱子之后,已经对David的奇思妙想见怪不怪了。手动制作了四根柱子,搭建了一个测量EMI的实验平台,然后就开始网格测量,一格一格手动挪动,拍宽带信号的波形,记录频率。
在EMC lab待着有个最大的感受就是自己动手,丰衣足食。就比如说,做measurement的时候,示波器收不到信号,怎么办,检查各个仪器,首先看线的螺丝是否都拧紧,拧好后再检查各种仪器。最常见的就是检查cable,拿去VNA上看是否work。信号源不能产生信号,就换一台,lab中可以找到各种仪器的替代品。天线不工作的话,就拿去修一修,焊一焊。本来做个实验也没多久,主要是状况百出,需要解决问题。在搭建实验平台所需要的各种物品中,仅仅是选择材料,选择发射源,选择天线就尝试了很久,因为有很多情况都需要自己去修理。一些小部件还要自己手工制作。
实验平台
测数据时,总是很多因数,怎么调参数都无法得到想要的数据,把数据给mentor 看之后,经常会说looks strange!然后又重新测一遍,直到测到数据过关。怎么说呢,网格测量这种事,特别是roughly measure,测得数据总有几dbm的误差,这些都还在允许的范围内。但是在网格边缘进行测量时,信号强度很微弱,得到的数据就比较差强人意。
状态估计中只实现了系统中数据的计算,并没有完成bad data 的检测。由于输入数据的格式是确定的,fake data。在进行输入运算之前需检测数据结构是否正确。由于实现数学公式本身的问题,有些输入的数据都无法得到解,这不是算法的问题,而是在数学上本就无法实现。