Orodha ya maudhui:

Utafiti wa Majaribio ya Mwendo Rahisi wa Harmonic: Hatua 5
Utafiti wa Majaribio ya Mwendo Rahisi wa Harmonic: Hatua 5

Video: Utafiti wa Majaribio ya Mwendo Rahisi wa Harmonic: Hatua 5

Video: Utafiti wa Majaribio ya Mwendo Rahisi wa Harmonic: Hatua 5
Video: Я ОДЕРЖИМЫЙ ДЕМОНАМИ 2024, Julai
Anonim

Fuata Zaidi kutoka kwa mwandishi:

Kutembea Strandbeest, Java / Python na Programu Kudhibitiwa
Kutembea Strandbeest, Java / Python na Programu Kudhibitiwa
Kutembea Strandbeest, Java / Python na Programu Kudhibitiwa
Kutembea Strandbeest, Java / Python na Programu Kudhibitiwa

Darasani, mara nyingi tunatumia saa ya kusimama kufanya jaribio la pendulum, au jaribio rahisi la harakati za harmonic. Hapa kuna changamoto, je! Tunaweza kutoa grafu halisi ya harakati zake na kuona ni nini msimamo wa angular na kasi, hiyo ni habari zaidi na ya kufurahisha.

Swali la kwanza, tunahitaji kuamua mwili wa pendulum ni kamba isiyo na uzani au fimbo ngumu ya sare. Njia ya kamba inaonekana kuwa rahisi. Kutoka kwa mazoezi ya kujenga moja, nina maoni yafuatayo ya biashara: Njia rahisi kabisa ya kutundika mfumo wa pendulum inaweza kuiweka kwenye ukingo wa juu wa mlango wako. Hiyo inatoa urefu wa ~ 2m pendulum bila kufanya kazi yoyote ya ujenzi wa kimuundo. Lakini inahitaji swing haitagusa uso wa mlango, ambayo huharibu tu majaribio yote. Kwa hivyo ndege inayozungusha inapaswa kuwa sawa sawa na uso wako wa ukuta / mlango. Kamba isiyo na uzani huwa nyembamba, inaweza kuzunguka kwa urahisi, na kuchanganya kipimo cha pembe ya swing. Tunataka kutumia kipimo kimoja kuwakilisha hali ya swing. Kamba nyembamba, kama laini ya samaki, inaweza kuwa laini na inayoweza kunyooka, ambayo huathiri moja wapo ya vipindi vyetu muhimu zaidi kupimwa na sisi na kutumika katika equation, ambayo ni urefu wa pendulum. Wengine wanaweza pia kuathiriwa na joto. Uzito wa uzito unaoning'inizwa mwishoni mwa kamba lazima uwe mzito wa kutosha ili uzani wa kamba hiyo uwe duni. Tafadhali toa maoni ikiwa unakubali au haukubaliani nao, au una maoni mengine ya kubuni ya biashara. Ili kusoma shida hii, tunahitaji kifaa ambacho ni chepesi sana kwamba uzani wake unaweza kupuuzwa na bado tunachukulia mfumo wa pendulum kama fimbo sare ngumu. Ninatumia kidhibiti cha umeme kinachoweza kuvaliwa cha COTS, ambacho kinatupatia habari ya gyro, accelerometer, na angle kupitia unganisho la Bluetooth. Vipimo hivi vitahifadhiwa kwenye faili ya data ya programu ya simu ya rununu. Baada ya hapo, tutachambua data ya jaribio letu rahisi la mwendo wa mwendo. Mchanganuo wa nambari unazingatia mada zifuatazo: 1) Kutabiri kipindi cha kuchomwa kwa pendulum 2) Kukusanya kwa mpango data rahisi ya majaribio ya harakati ya pendulum 3) Tumia kmean kupanga data na uondoe wauzaji katika mchakato wa uchambuzi 4) Tumia FFT ya muda mfupi kukadiria mzunguko wa oscillation wa pendulum

Vifaa

Vifaa vya kipimo cha Bluetooth

Programu ya simu ya Android: Nenda kwenye duka la kucheza la Google, tafuta M2ROBOTS na usakinishe App ya kudhibiti. Ikiwa ni ngumu kupata duka la kucheza la Google, tembelea ukurasa wangu wa kibinafsi wa njia mbadala ya kupakua programu

fimbo ya kuni

sehemu chache zilizochapishwa za 3D

vile vya saw au vifaa sawa vya chuma

Hatua ya 1: Pendulum ni nini? Jinsi ya kuiga?

Kuna makala nyingi na vitabu vinavyoanzisha upataji wa mlingano wa pendulum, pamoja na kitabu chako cha fizikia ya mtaala. Yaliyomo inaweza kuwa bora kutorudiwa hapa tena. Hitimisho tu la mwisho limeorodheshwa hapa kuhusu mada ya "mwendo rahisi wa harmonic". Ili kujua kipindi cha pendulum, tunachohitaji kujua ni urefu wa pendulum, inayoitwa "l", katika mita.

Ikiwa tuna hakika kuwa uzani uko karibu kabisa mwishoni mwa kamba isiyo na uzani iliyoning'inizwa kwenye pivot, na pendulum inazunguka kwa pembe ndogo θ, sema chini ya 15 °, kipindi cha T1 cha pendulum kama hicho kinapewa na:

T1 = 2 * pi * (l / g) ^ 0.5

g = kuongeza kasi ya mvuto, takriban 9.8 m / s ^ 2

Ikiwa kamba isiyo na uzani inabadilishwa na fimbo ngumu sare, tena ya urefu l, kipindi chake rahisi cha mwendo wa T2 hutolewa na T1 = 2 * pi * (2l / 3g) ^ 0.5

Kwa ufanisi ina kipindi sawa na pendulum isiyo na uzito kuwa theluthi mbili ya urefu wa fimbo sare ngumu.

Huu ndio msingi, na tunaweza kuanza kuandaa jaribio letu.

Hatua ya 2: Andaa Sehemu za Jengo la Vifaa

Andaa Sehemu za Ujenzi wa Vifaa
Andaa Sehemu za Ujenzi wa Vifaa
Andaa Sehemu za Ujenzi wa Vifaa
Andaa Sehemu za Ujenzi wa Vifaa
Andaa Sehemu za Ujenzi wa Vifaa
Andaa Sehemu za Ujenzi wa Vifaa

Ili kujenga muundo wa pendulum, tunachapisha 3D sehemu zingine, na kuchakata tena kitu ambacho tayari tunacho. Muundo wa jumla wa pendulum umeonyeshwa kwenye Mtini. Ni mchanganyiko wa sehemu za kuchapisha za 3D pamoja na sehemu zingine zilizotengenezwa kwa mikono na kipande kirefu cha fimbo ya kuni kutoka kwa Lowe.

Sehemu iliyochapishwa ya 3D kwenye Mtini. 2 iko kwenye ukingo wa juu wa mlango, kwa sababu mlango wetu ni uso tambarare rahisi kwetu kutundika kitu. Kiunga cha kupakua faili ya STL:

xiapeiqing.github.io/doc/kits/pendulum/pen…

Sehemu ya kijani kwenye Mtini. 3 inaunganisha fimbo ya kuni na blade, na blade inakaa juu ya vipande viwili vya reli iliyowekwa kwenye hanger ya mlango iliyochapishwa ya 3D. Kiunga cha kupakua faili ya STL:

Vipande viwili vya reli vinatengenezwa kwa kuvunja blade ya zamani kwa nusu, ona Mtini. 4. Sehemu katika Mtini. 2 imewaandalia saizi inayofaa. Kwa kweli tunaweza kutengeneza noti yenye umbo la "V" katika vile visu mbili kwa kutumia faili. Chuma chenye ncha kali, kama vile wembe moja wa makali, au kipande chochote cha chuma, kinaweza kukaa ndani ya noti zenye umbo la "V". Sababu tunahitaji eneo dogo la mawasiliano ni kupunguza nishati ya kinetiki iliyopotea wakati wa kuzunguka.

Sehemu ya mwisho iliyochapishwa ya 3D kwenye Mtini. 5 ni tray ndogo kushikilia vifaa vya kipimo cha elektroniki.

Kiungo cha kupakua:

Vifaa vya kipimo cha bluetooth hutengeneza makadirio ya pembe, kipimo cha gyro na kipimo cha accelerometer. Takwimu hizi zote zinapatikana kwetu kupitia kiunga cha wireless cha Bluetooth.

Tutafanya majaribio mengi kwa kupeleka vifaa hivi katika nafasi tofauti ya mkono wa pendulum, na kuona tofauti.

Hatua ya 3: Jaribio la Ukusanyaji wa Takwimu

Jaribio la Ukusanyaji wa Takwimu
Jaribio la Ukusanyaji wa Takwimu
Jaribio la Ukusanyaji wa Takwimu
Jaribio la Ukusanyaji wa Takwimu
Jaribio la Ukusanyaji wa Takwimu
Jaribio la Ukusanyaji wa Takwimu

Kuna njia mbili zinazoweza kutekelezwa kwa mkusanyiko wa data ya majaribio kabla ya kuchambua mkusanyiko wa data iliyopatikana:

1) Tumia Programu ya simu ya Android iliyoainishwa katika sehemu ya mahitaji ili kuweka vipimo vyote vilivyozalishwa na vifaa kwenye faili ya data iliyohifadhiwa kwenye kadi ya SD ya simu yako. Tunaweza kunakili faili na kuchakata habari.

2) Tumia kompyuta inayowezeshwa na bluetooth, PC, kompyuta ndogo au kompyuta ndogo ya RaspberryPi ili kuanzisha unganisho la bluetooth kwa vifaa na soma data kwa uchambuzi wa wakati halisi au nje ya mtandao.

Kuna faida na hasara kwa kila njia, tutajaribu zote mbili na tueleze tofauti katika hii inayoweza kufundishwa.

Kwa njia (1) ya kutumia programu ya android, mara tu tutakapokuwa kwenye kiolesura cha Udhibiti wa Programu, data ya telemetry iliyotumwa kutoka kwa vifaa vya kipimo cha bluetooth kwa simu ya android itarekodiwa kwenye faili ya orodha iliyoitwa m2flightDatayyyymmdd_hhmmss.txt. Inaweza kupatikana kwenye folda yako ya Upakuaji / m2LogFiles ya simu yako ya android. Folda "Pakua" ni folda iliyopo katika OS ya simu yako na "m2LogFiles" ni folda ambayo App imeundwa. Yaliyomoym ya jina la faili yyyymmdd_hhmmss ndio njia ya kusimba jaribio la kuanza wakati (mwaka, mwezi, siku, saa, dakika na sec) kwa jina la faili.

Kila mstari kwenye faili ya kumbukumbu ni rekodi moja. Huanza na muhuri wa wakati wa tukio, kamba ya utangulizi "eam:", ikifuatiwa na data 4 tatu, ambazo ni:

Kusoma mhimili wa Accelerometer XYZ katika nambari mbichi za vifaa vya rejista za vifaa vya kusoma

Usomaji wa mhimili wa Gyroscope XYZ katika nambari mbichi za rejista za vifaa vya rejista

Kusoma mhimili wa Magnetometer XYZ katika vifaa vya sensorer ghafi sajili rejista za usomaji

onboard inakadiriwa Roll / Pitch / Raw kwa kiwango

Faili ya data iliyoundwa kwa kutumia programu ya chatu ya kompyuta itatumia fomati ya faili inayofanana, ili programu tunayotumia katika hatua ya uchambuzi wa data haitasumbuliwa na chanzo cha data kinachozalishwa na programu yetu ya chatu au programu ya android.

Wacha tuanze kuweka alama kwa kutumia njia (2).

Ili kuingiliana na vifaa vya kipimo cha bluetooth, ladha mbili za SDK hutolewa:

1) Python SDK, ambayo inaweza kusanikishwa na "pip3 install m2controller", python3 ndio lugha inayotumika. Mifano ya nambari ya matumizi ya mtumiaji imehifadhiwa katika https://github.com/xiapeiqing/m2robots/tree/maste ……. Kwa jaribio hili, tutatumia hati ya chatu pendulum1.py

2) Java SDK, ambayo haitumiki katika hii inayoweza kufundishwa kwa sababu tunataka taswira ya baadaye na uchambuzi wa data iliyopatikana ya pendulum, ambayo inaweza kuchukua juhudi kidogo zaidi kwetu kupanga katika Java.

Msimbo wa chanzo wa ukusanyaji wa data ya python3 una maoni mengi kwa maelezo ya utendaji wa nambari. Picha ya nambari ya chanzo imetolewa hapa.

#! / usr / bin / env chatu # - * - kuorodhesha: UTF-8 - * - kutoka kwa m2controller kuagiza m2controller kutoka m2controller kuagiza m2Const kuagiza ishara wakati wa kuagiza wakati wa kuingiza usrCfg kuagiza pendulum2

ombiToka = Uongo

################################################################

# tunataka kutumia faili hiyo hiyo ya kumbukumbu inayoita mkutano ili moduli ya uchambuzi wa data, pendulum2.py, iweze kujua jinsi tunavyopata faili ya data ya logi # # # # ############ # m2flightData% s.txt "% (datetime.datetime.fromtimestamp (time.time ()). strftime ('% Y% m% d_% H% M% S')) dataLogfile = open (logfilename," w ")

def signal_handler (sig, fremu):

ombi la kimataifa Toka kuchapisha ('mtumiaji Ctrl-C kutoka kwa utekelezaji wa programu') ombiExit = Ishara ya kweli. ishara (ishara. SIGINT, signal_handler

################################################################

# juu ya kila data ya kipimo itapatikana kwa kiwango cha 20Hz, kazi hii ya "kupigia simu" itaitwa # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ()) strftime ('% H:% M:% S.% f') [: - 3] dataStr = "% s, eam:% d,% d,% d,% d,% d,% d,% d,% d,% d,% 2.1f,% 2.1f,% 2.1f / n "% (strTimeStamp, telemetry ['m_fAccelHwUnit'] [0], telemetry ['m_fAccelHwUnit'] [1], telemetry ['m_fAccelHwUnit'] [2], telemetry ['m_fGyroHwUnit'] [0], telemetry ['m_fGyroHwUnit'] [1], telemetry ['m_fGyroHwUnit'] [2], telemetry ['m_fMagHwUnit'] [0], telemetry 'm_fMagHwUnit'] [1], telemetry ['m_fMagHwUnit'] [2], telemetry ['m_fRPYdeg'] [0], telemetry ['m_fRPYdeg'] [1], telemetry ['m_fRPYdeg'] [2] ## # ############ # # # # # # # # # # # # # # # # # # # # # dataStr)

################################################################

# anzisha kidhibiti, kumbuka kuweka uwanja wa BleMACadress kuwa anwani ya MAC ya kifaa chako #### # # # # # # # Mdhibiti = # # # # # # vifaa # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ############ # # # # # # # #

################################################################

ukusanyaji # wa data umekamilika, sasa wacha tuchambue data ya kumbukumbu # # # # # # # # # # # # #

Kwa sasisho la muda mrefu, tafadhali angalia

Sasa wacha tueleze njia yake ya operesheni. Mpango huu wa chatu umeandikwa juu ya kifurushi kinachoweza kusakinishwa kwa bomba, kinachoitwa m2controller. Kifurushi cha kiwango cha chini kinatoa utaratibu wa kupiga simu tena, ili kila sasisho la kipimo kilichopokelewa litasababisha kazi ya kupigia simu tuliyoandika, na kuhifadhi data kwenye faili ya logi ya hapa. Fomati ya yaliyomo kwenye data ya faili ya kumbukumbu ni sawa na ile inayozalishwa na programu rafiki ya android, ili faili ya kumbukumbu ya data iliyoundwa na programu ya chatu au programu ya rafiki ya andriod inaweza kubadilika.

Ishara ya mtumiaji ctrl-C, iliyonaswa na mfumo wa uendeshaji, hupitishwa kwa programu hiyo, na kusimamisha kitanzi kisicho na mwisho kinachosubiri ujio mpya wa data ya kipimo.

Mpaka sasa, faili ya kumbukumbu imeundwa kwa mafanikio, na programu hii itaita mpango wa uchambuzi ili kusoma matokeo yetu ya majaribio.

Hapa kuna majaribio mawili, na kulinganisha kunaonyesha tofauti inayojulikana sana kwa kushikamana na kifaa cha gramu 7 katika maeneo tofauti.

Katika Mtini. 2, tunatumia kiwango kuamua uzito halisi wa vifaa hivi vya kipimo cha bluetooth.

Mtini. 3 inaonyesha usanidi wa pendulum ambapo kifaa cha gramu 7 kimeshikamana na mwisho wa chini wa pendulum. Usanidi wa usanidi kwenye Mtini. 4 ina misa ya 7gram iko karibu sana na pivot ya kuzunguka.

Mtini. 5 ni mtazamo wa karibu wa muundo wa pendulum.

Hatua ya 4: Uchambuzi wa Takwimu

Uchambuzi wa Takwimu
Uchambuzi wa Takwimu
Uchambuzi wa Takwimu
Uchambuzi wa Takwimu
Uchambuzi wa Takwimu
Uchambuzi wa Takwimu

Vifaa vya kipimo cha bluetooth vina uzito wa ~ 7gram, ambayo ina uzito mdogo kuliko fimbo ya kuni yenye urefu wa ~ 1.6meter. Tumia dhana ya "fimbo sare ngumu", na tuna kipindi hiki cha kipindi cha pendulum, T1 = 2 * pi * (2l / 3g) ^ 0.5

Ili kupata mvuto kila wakati, tunaweza kutumia 9.8m / s ^ 2. Lakini nguvu ya mvuto sahihi zaidi kwenye geolocation yoyote ile inaweza kupatikana kutoka kwa huduma hii ya wavuti:

www.wolframalpha.com/widgets/view.jsp?id=e…

Kwa san francisco, ni 9.81278m / s ^ 2

Urefu wa pendulum hupimwa kuwa 64.5"

2 * pi * sqrt (2 * 64.5 * 0.0254 / (3 * 9.81278)) inatoa kipindi cha pendulum kinachotarajiwa cha 2.0962 (sec).

Wacha tuone ikiwa inakubaliana na majaribio yetu.

Katika jaribio la 1, usanidi wa pendulum una kifaa cha gramu 7 kilichoshikamana na mwisho wa chini wa pendulum. Faili yangu ya kumbukumbu inaweza kupakuliwa katika:

xiapeiqing.github.io/doc/kits/pendulum/pen…

Ipe jina jipya "PendulumTestData.txt" na uweke kwenye folda ile ile ya mpango wa uchambuzi wa chatu. Picha ya nambari ya chanzo imetolewa hapa.

. timedelta kuagiza seaborn kama sns kutoka sklearn.cluster kuagiza KMeans kutoka kwa makusanyo kuagiza Counter ###### # # # # # # # ############ # # def parseDataLogFile (datafilename): # # # # # # # datafilename # # # # # # # ############ # # # # # fGyroHwUnit_x = fGyroHwUnit_y = fGyroHwUnit_z = fMagHwUnit_x = fMagHwUnit_y = fMagHwUni t_z = fRPYdeg_r = fRPYdeg_p = fRPYdeg_y = kwa safu katika readCSV: jaribu: x = datetime.strptime (safu [0].split (',') [0], '% H:% M:% S.% f ') timestampS.append (timedelta (masaa = x.hour, dakika = x.minute, sekunde = x.second, microseconds = x.microsecond).total_seconds ()) fAccelHwUnit_x.append (kuelea (safu [1] [4:])) fAccelHwUnit_y.append (kuelea (safu [2])) fAccelHwUnit_z.append (kuelea (safu [3])) fGyroHwUnit_x.append (kuelea (safu [4])) fGyroHwUnit_y.append (kuelea (safu [5])) fGyroHwUnit_z.ambatana (kuelea (safu [6])) fMagHwUnit_x.append (kuelea (safu [7])) fMagHwUnit_y.append (kuelea (mstari [8])) fMagHwUnit_z.endesha (safu [9])) fRPYdeg_r.append (kuelea (safu [10])) fRPYdeg_p.append (kuelea (safu [11])) fRPYdeg_y.append (kuelea (safu [12])) isipokuwa: pitisha stempu ya mudaS = np.asarray (muhuri wa muda) muhuri wa muda = muhuri wa muda - muhuri wa muda [0] fAccelHwUnit_x = np.asarray (fAccelHwUnit_x) fAccelHwUnit_y = np.asarray (fAccelHwUnit_y) fAccelHwUnit_z = np.asarray (fAccelHwUnit_z) fGyroHwUnit_x = np.asarray (fGyroHwUnit_x) fGyroHwUnit_y = np.asarray (fGyroHwUnit_y) fGyroH wUnit_z = np.asarray (fGyroHwUnit_z) fMagHwUnit_x = np.asarray (fMagHwUnit_x) fMagHwUnit_y = np.asarray (fMagHwUnit_y) fMagHwUnit_z = np.asarray (fMagHwUnit_z) fRPYdeg_r = np.asarray (fRPYdeg_r) fRPYdeg_p = np.asarray (fRPYdeg_p) fRPYdeg_p = fRPYdeg_p - np.mean (fRPYdeg_p) fRPYdeg_y = np.asarray (fRPYdeg_y)

################################################################

# tunahitaji makadirio sahihi ya masafa ya sampuli kwa makadirio sahihi ya kipindi cha kukosolewa # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # sehemu ya lami katika pato la mfumo wa kumbukumbu ya mtazamo wa uchambuzi wa kipindi cha pendulum # # # # # # # # # # # # # # # # # # # # # # # # # # ############ # # # # tumia pato la kasi ya kuharakisha uchambuzi wa kipindi cha pendulum # # # # # # # # # # # # # # # # # # # # # # # ############ # # # # tumia pato la kipimo kibichi cha gyro kwa uchambuzi wa kipindi cha pendulum # # # # # # # # # # # gyro ') chapisha (' umefanya, hongera:-) ') plt.show () # # # # # # # # # # # # # # # # # kupotea # tunatumia K-maana ya kutenganisha data ya upunguzaji ya 20Hz kutoka kwa wauzaji wa nje, ambayo husababishwa na pakiti iliyoachwa # mbizi kwenye "ishara na mfumo kwa maelezo zaidi" ############# # ########### (timestampS): plt.figure () sampleIntervalS = np.diff (timestampS) sns.distplot (sampleIntervalS) plt.ylabel ('histogram') plt.xlabel ('vipindi vya vipimo') nguzoCnt = 5 km = KMeans (n_clusters = clusterCnt) km.fit (sampleIntervalS.reshape (-1, 1)) centroids = km.] FsHz = 1 / centroids [tukioCnt.index (max (tukioCnt))] kurudi FsHz

################################################################

# tumia spectrometer, yaani, muda mfupi FFT kupata sehemu ya masafa, pipa la kilele ni makadirio yetu bora ya upunguzaji wa pendulum # # 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # mtini, (ax1, ax2) = plt. viwanja (nrows = 2) ax1.plot (timestampS, timeSeqData, marker = 'o', markerfacecolor = 'blue', markersize = 2, color = 'skyblue', linewidth = 1) kichwa1.set_title ("pendulum time domain kipimo -% s"% strComment) ax1.set_xlabel ("wakati wa sampuli (pili)") ax1.set_ylabel (strComment); NFFT = 2048 # urefu wa sehemu za upepo

Pxx, freqs, mapipa, im = ax2.specgram (timeSeqData, NFFT = NFFT, Fs = FsHz, noverlap = NFFT / 2)

kichwa2.set_title ("Spectrogram") ax2.set_xlabel ("sampuli") ax2.set_ylabel ("frequency (Hz)");

# Njia ya `mfano 'inarudisha vitu 4. Wao ni:

# - Pxx: kipindi cha vipindi # - freqs: vector frequency # - mapipa: vituo vya mapipa ya muda # - im: matplotlib.image. AxesImage mfano inayowakilisha data kwenye plot pkresult = np.where (Pxx == np.amax (Pxx)) oscFreqHz = freqs [pkresult [0] [0] chapa ('pendulum oscillation Freq (Hz) =% f, Kipindi (Sec) =% f, chanzo cha data ya makadirio:% s'% (oscFreqHz, 1 / oscFreqHz, strComment)) kurudi 1 / oscFreqHz

################################################################

# lazima tuendeshe programu hii kwa uhuru, yaani, tusiitwe na pendulum1.py, # tunafafanua jina la faili ya data ya logi ya msingi ili ichanganwe # # # # # # # # # # # # # # # : defaultFilename = './PendulumTestData.txt' import os.path if os.path.isfile (defaultFilename):

Kwa sasisho la muda mrefu, tafadhali angalia

Nambari ya chanzo ina maoni ya kina, wacha tupe muhtasari wa kiwango cha juu cha hesabu ya hesabu hapa.

1) Kwanza tulisoma yaliyomo kwenye faili ya CSV kwenye kompyuta, kwa kutumia kifurushi cha chatu kinachoitwa "csv". Tuna kipimo cha mara kwa mara.

21: 34: 26.362, eam: 0, -128, 14464, -8, 144, -96, 2112, -1280, 1664, -0.5, -5.5, 40.5

21: 34: 26.373, eam: 128, 0, 14272, -8, 136, 40, 2112, -1280, 1664, -0.5, -6.5, 40.0

21: 34: 26.412, eam: 448, -64, 14208, -8, 136, 24, 2176, -1280, 1664, -0.5, -7.5, 40.5

21: 34: 26.462, eam: 448, -128, 14272, -8, 120, 16, 2176, -1280, 1664, -0.5, -8.0, 40.5

2) Kwa kuwa kiwango cha kipimo ni muhimu sana na huanzisha moja kwa moja kosa la kukadiria kipindi cha pendulum, tunataka kukadiria. Kipindi chetu cha kipimo cha majina ni 50ms, i.e., 20Hz. Wastani juu ya vipimo vyote huonekana sawa, lakini mara kwa mara tunapoteza pakiti ya usafirishaji wa data, muda wa sasisho unakuwa 100ms au 150ms,…

Ikiwa tunapanga tukio la data hizi, ona Mtini. 1, kama mwanadamu, tunaweza kuwa na thamani ya kupigia jicho ya 0.05sec. Walakini, tunaweza kufanya bora zaidi ya hapo?

Tunahitaji kutumia njia ya uainishaji kuchagua tu nzuri kwa hesabu ya wastani. Python ina sanduku la zana lililoitwa KMeans kutusaidia kwa kuunganisha, au kusema uainishaji. Dhana hizi hutumiwa katika data nyingi kubwa na maeneo ya AI.

3) Mtini. 2 ina picha mbili. Mpango wa juu ni mlolongo wa kikoa cha wakati wa kipimo chetu cha kuzunguka kwa dig. Kwa kutaja mwhuri wa mwendo wa x-axis katika Pili, tunaweza kusoma takriban mizunguko 22.5 katika 50second, ambayo inatafsiri kwa kipindi cha 2.22 Sec pendulum. Je! Kuna njia ya kugeuza mchakato huu na kuwa na makisio sahihi zaidi? Ndio, tunaweza kutumia zana ya hisabati inayoitwa spectrogram, ambayo hutumia sehemu ndogo ya data ya kipimo na kutuambia mzunguko wake, angalia takwimu hapa chini. Usomaji wa y-axis kwa laini nyeusi ni mzunguko wa oscillation wa pendulum. Kuwa laini ya usawa inathibitisha oscillation ya pendulum haikubadilika wakati wote wa jaribio. Thamani inverse ya mzunguko wa oscillation ni kipindi cha oscillation ya pendulum.

Ripoti ya mwisho iliyofanywa na programu hiyo ni muhtasari wa maandishi:

pendulum oscillation Freq (Hz) = 0.449224, Kipindi (Sec) = 2.226059, chanzo cha data ya makadirio: lami

Tunaweza kupata hesabu yetu ya mapema ya hesabu ya macho, 2.22sec, inaambatana sawa na thamani ya hesabu ya programu.

Ikilinganishwa na thamani ya kinadharia ya 2.0962 (sec), tuna makosa 5% iliyobaki. Jinsi ya kuwaondoa? Kumbuka dhana ni "fimbo sare ngumu"? Hata uzito wa ziada wa gramu 7 unaonekana kuwa mdogo, ndio sababu kubwa ya kosa lililobaki.

Sasa tunahamisha kifaa, karibu na pivot. Angalia hatua ya awali kwa picha ya karibu. Faili ya kumbukumbu ambayo niliunda inaweza kupakuliwa hapa:

xiapeiqing.github.io/doc/kits/pendulum/pen…

Tumia hatua zile zile za uchambuzi, na tunapata Kipindi cha 2.089867 (Sec), ona Mtini. 3, ambayo ni karibu sawa na utabiri wa nadharia. Kubwa!

Kwa kuwa hatuna tu kipimo cha pembe, lakini pia kipimo cha gyroscopic na kipimo cha accelerometer kwa kiwango sawa. Tumia uchambuzi sawa kwa vipimo vingine viwili, tunapata matokeo kwenye Mtini. 4 na 5. Makadirio kutoka kwa vyanzo vyote vitatu vya vipimo vinakubaliana, ambayo hutufanya tujiamini zaidi juu ya mafanikio ya jaribio letu.

Hapa kuna matokeo kama pato la mwisho la programu ya chatu inayoendesha:

pendulum oscillation Freq (Hz) = 0.478499, Kipindi (Sec) = 2.089867, chanzo cha data ya makadirio: lami

pendulum oscillation Freq (Hz) = 0.478499, Kipindi (Sec) = 2.089867, chanzo cha data ya makadirio: accel

pendulum oscillation Freq (Hz) = 0.478499, Kipindi (Sec) = 2.089867, chanzo cha data ya makadirio: gyro

Mawazo ya mwisho katika hatua hii, matokeo ya makadirio yanawezaje kufanana kwa kutumia chanzo tofauti cha data ya kuingiza? Hii ni intuition ya kupinga. Nitawaachia wasomaji swali hili. Hapa kuna dokezo: kumbuka tunatumia FFT ya muda mfupi kukadiria masafa ya oscillation? Katika kikoa cha dijiti, makadirio ya masafa hutolewa katika mapipa madhubuti ya masafa badala ya makadirio ya idadi inayoelea.

Hatua ya 5: Mapendekezo ya Kazi ya Baadaye

Kuna aina chache za mapendekezo ya kazi ya baadaye.

Katika hatua ya awali, tunaweza kudhibiti makosa yetu ya majaribio kutoka ~ 5% hadi chini ya 1%, je! Tunaweza kufanya vizuri zaidi ya hapo? Kugundua ukubwa wa oscillation hupungua kwa kasi, sababu moja inayochangia inaweza kuwa buruta ya hewa inayosababishwa wakati wa kuzungusha pendulum. Sehemu ya msalaba wa pendulum inaweza kuhitaji kurekebishwa kuwa ya sura ya kunyoosha ili kupunguza buruta ya aerodynamic.

Je! Tunaweza kutumia faida tofauti-tofauti ya kujifunza kwa kutumia mbinu za vichungi zinazobadilika ili kutoa ishara ya ukubwa wa kilele. Wakati huo huo, linganisha upungufu wa ukubwa na nguvu za nje.

Hatuwezi kupata chochote rahisi kuliko "harakati rahisi ya harmonic". Je! Tunaweza kutumia vifaa ambavyo tunachambua pendulum kuchanganua kitu ngumu zaidi, shughuli ya michezo, mlolongo wa uzinduzi wa roketi ya maji, nk?

Furaha ya utapeli

Ilipendekeza: