Cov txheej txheem:

Kev sim hauv Kev Tshawb Fawb Cov Ntaub Ntawv Zoo (Siv Python): 11 Cov Kauj Ruam
Kev sim hauv Kev Tshawb Fawb Cov Ntaub Ntawv Zoo (Siv Python): 11 Cov Kauj Ruam

Video: Kev sim hauv Kev Tshawb Fawb Cov Ntaub Ntawv Zoo (Siv Python): 11 Cov Kauj Ruam

Video: Kev sim hauv Kev Tshawb Fawb Cov Ntaub Ntawv Zoo (Siv Python): 11 Cov Kauj Ruam
Video: Mathematics with Python! Evaluating Polynomials 2024, Lub Xya hli ntuj
Anonim
Kev sim hauv Kev Nkag Siab Cov Ntaub Ntawv (Siv Python)
Kev sim hauv Kev Nkag Siab Cov Ntaub Ntawv (Siv Python)

Muaj ntau cov ntaub ntawv nkag mus qhia, yog li thaum kuv xav tsim lub cav ntoo ntawm kuv tus kheej Kuv tau saib ib puag ncig ntawm ib pawg. Qee qhov ua tau zoo, qee qhov tsis ntau, yog li kuv txiav txim siab coj qee lub tswv yim zoo dua thiab ua kuv tus kheej daim ntawv thov. Qhov no ua rau txoj haujlwm ob qho tib si zoo dua thiab nyuaj dua li qhov kuv tau xav thawj zaug. Ib feem ntawm nws tau dhau los ua kev sim hauv kev ua cov ntaub ntawv sensor. Cov lus qhia no cia koj sim ua qhov kev sim zoo ib yam lossis zoo ib yam.

(Koj tuaj yeem saib tag nrho cov cai thiab rub tawm nws ntawm: Code ntawm GitHub Koj tuaj yeem nkag mus saib, tej zaum hauv lwm lub qhov rais, nrog tsuas yog 2 nyem)

Feem ntau cov ntaub ntawv nkag mus suav nrog cov hauv qab no:

  • Kev nrhiav cov ntaub ntawv: Nyeem qee cov ntaub ntawv los ntawm lub sensor. Feem ntau qhov no tsuas yog nyeem qhov sib piv rau hloov pauv digital (ADC) ntawm lub cuab yeej zoo li Arduino.
  • Kev ua cov ntaub ntawv: Thaum nyeem ADC tus nqi cov hloov pauv ib txwm yuav tsum tau ntsuas kom haum rau chav nyob. Tej zaum kuj yuav tsum tau ua qee qhov kev hloov kho kom ntsuas tau qhov txiaj ntsig txhawm rau kho qhov ntsuas tsis raug.
  • Lim: Cov ntaub ntawv feem ntau muaj qee lub suab nrov, qhov no tuaj yeem lim tau yog li koj tab tom nrhiav lub teeb liab hauv koj cov ntaub ntawv, tsis yog suab nrov.
  • Kev khaws cov ntaub ntawv: Cov ntaub ntawv raug khaws tseg, tej zaum yog cov ntawv sau, tej zaum mus rau huab. Cov ntaub ntawv yuav tsum muaj sia nyob txawm tias lub zog tawm mus. Nws yog qhov yooj yim los khaws cov ntaub ntawv ntau dhau, peb muaj qhov ua kom yuam kev me me los txo qhov chaw khaws cov ntaub ntawv.
  • Cov ntaub ntawv tso tawm: Cov hauv kev los saib koj cov ntaub ntawv, tsis yog cov ntaub ntawv nkag mus tiag, tab sis yog tias koj tsis ua qee yam ntawm cov ntaub ntawv vim li cas sau nws?
  • Kev Nkag Mus Rau Chaw Taws Teeb: Tsis tsim nyog tab sis zoo kom muaj.

Cov ntawv qhia feem ntau suav nrog qee qhov tab sis tsis yog txhua qhov saum toj no, lossis ua lawv hauv txoj hauv kev yooj yim heev. Cov lus qhia no yuav hais txog 2 ntawm cov teeb meem feem ntau hla kev nkag mus thiab raws li cov nyiaj tau muab rau koj txhais tau tias ntawm kev teeb duab koj cov ntaub ntawv yam tsis siv kev pabcuam huab. Koj tuaj yeem siv tag nrho cov khoom lossis rub tawm cov khoom me me thiab cov khoom thiab rov ua dua lawv rau hauv qhov haujlwm ntawm koj tus kheej.

Kauj Ruam 1: Cov Cuab Yeej thiab Cov Khoom

Cov Cuab Yeej thiab Cov Khoom
Cov Cuab Yeej thiab Cov Khoom

Qhov piv txwv no yog txhua yam hauv Python yog li nws yuav ua haujlwm, thiab cov khoom siv tuaj yeem siv rau, zoo nkauj npaum li cas OS suav nrog Mac, PC, Linux thiab Raspberry Pi.

Yog li txhawm rau siv cov lus qhia no txhua yam koj xav tau yog khiav Python 3.6 ib puag ncig, thiab rub cov ntawv txuas. Tom qab khiav cov cai kuv tau teeb tsa, koj tuaj yeem hloov kho nws rau koj tus kheej kev sim. Raws li ib txwm nrog Python koj yuav xav tau ntxiv qee pob khoom/modules kom tau txais txhua yam ua haujlwm. Kuv tus Spyder ib puag ncig los nrog qhov zoo nkauj npaum li txhua qhov yuav tsum tau ua hauv qhov chaw (saib: Daim Duab Qhia Qhia Pom nrog Python Screen Scraping). Thaum koj thawj zaug saib xyuas rau ib qho lus yuam kev lawv yuav qhia rau koj paub txog ib feem uas ploj lawm hauv koj ib puag ncig.

Ob kauj ruam tom ntej yuav qhia koj yuav tsim thiab khiav qhov kev sim ntawm koj tus kheej li cas, tab sis nws zoo dua yog tos kom txog thaum koj ua qhov kev sim ua ntej koj sim ua koj tus kheej.

Txhawm rau nkag siab cov cai koj yuav tsum muaj kev paub me ntsis nrog cov khoom siv taw qhia Python, piav qhia uas dhau ntawm qhov uas tau qhia no, tab sis Google yuav tsum muab kev pabcuam rau koj uas koj xav tau.

Nco tseg cov cai: (Code ntawm GitHub Koj tuaj yeem nkag mus saib, tej zaum hauv lwm lub qhov rais, nrog tsuas yog 2 nyem) tam sim no hauv Python 3.6, yog li muaj 3.6 yuav zoo tshaj. Cov laus dua ntawm cov cai nyob ntawm no hauv kab ntawv txuas hauv qab no.

Kauj Ruam 2: Tsim Kev sim

Tsim Kev sim
Tsim Kev sim

Muaj peb txoj haujlwm txheej txheem (thiab kab) hauv kev tsim kev sim. Txhua qhov kev sim yog ua haujlwm hauv LoggingSim kwv hauv cov ntaub ntawv simulate_logging.py. Cia saib qhov kev sim 1 (tsuas yog thawj daim duab) uas peb yuav ua hauv cov kauj ruam tom ntej:

def experiment_with_sample_rates (tus kheej):

luam tawm "" "Kev sim nrog Cov Qauv Nqes Tes Saib cov piv txwv sib txawv los ntawm kev hloov pauv delta T" "" self.start_plot (plot_title = "Qauv Nqe - Ntu 1/3: Delta T = 1.0") self.add_sensor_data (name = "dt = 1. ", amplitude = 1., noise_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()

Txhua qhov kev sim tau sau raws li nws tus kheej txoj haujlwm yog li peb muaj kab ntawv piav qhia txoj haujlwm (def kev sim…..)

Cov tom ntej, tsis hais kab lus, (start_plot (….) Tsim lub hom phiaj rau kev sim thiab muab nws lub npe.

Tom ntej no, kab lus tsis hais kab lus, (add_sensor_data (…) tau muab faib ua ob peb kab. Nws simulates lub ntsuas ntsuas lub teeb liab uas muaj peev xwm nrov thiab qee qhov ua haujlwm. Cov lus sib cav muaj raws li hauv qab no:

  • lub npe: lub npe muab tso rau hauv kab ntawv kawg los txheeb xyuas cov ntaub ntawv
  • amplitude: qhov teeb liab loj npaum li cas, peb ib txwm siv qhov dav ntawm 1. hauv cov lus qhia no.
  • noise_amp: lub suab nrov loj npaum li cas, 0. tsis muaj suab nrov, peb yuav pib ntawm no.
  • delta_t: lub sijhawm nruab nrab ntawm kev ntsuas, tswj tus nqi piv txwv.
  • max_t: lub sijhawm ntau tshaj plaws uas peb khaws cov ntaub ntawv, peb ib txwm siv 10 hauv cov lus qhia no.
  • run_ave: ua haujlwm siv qhov nruab nrab khiav, 0 txhais tau tias tsis ua.
  • trigger_value: ua tiav siv qhov ua rau, 0 txhais tau tias tsis ua

qhov kawg, tsis hais kab lus, (self.show_plot ……) qhia txog kab ntawv.

Txhawm rau ua tej yam me ntsis nyuab dua koj tuaj yeem muaj ntau kab ntawm kab lossis ntau daim duab hauv kev sim, qhov no yuav tsum pom meej los ntawm kev sim uas ua raws.

Kauj ruam 3: Khiav qhov kev sim

Nov yog txoj cai rau kev sim sim. Raws li ib txwm muaj nyob hauv Python nws tau muab tso rau qhov kawg ntawm cov ntawv.

sim_logging = LoggingSim ()

sim_logging.experiment_with_sample_rates ()

Nov tsuas yog 2 kab:

  • Tsim lub cav txiav cav (LoggingSim ())
  • Khiav nws (sim_logging.experiment_with_sample_rates ())

Hauv kab ntawv rub tawm Kuv muaj ob peb kab ntxiv thiab cov lus pom, nws yuav tsum yooj yim los txiav txim.

Kauj Ruam 4: Kev sim: Tus Qauv Piv Txwv

Kev sim: Qauv Tus Nqi
Kev sim: Qauv Tus Nqi
Kev sim: Qauv Tus Nqi
Kev sim: Qauv Tus Nqi
Kev sim: Qauv Tus Nqi
Kev sim: Qauv Tus Nqi

Lub simulator, raws li teeb tsa ntawm no, ib txwm tso tawm qhov zoo nkauj sine yoj ntawm qhov dav 1. Rau qhov kev sim no peb yuav cuam tshuam nrog tus nqi piv txwv, raws li kho los ntawm delta_t, lub sijhawm sib txawv ntawm cov qauv. Peb yuav tsis muaj suab nrov lossis lwm yam ua haujlwm. Txoj cai siv 3 tus qauv piv txwv (delta_t = 1.0, 0.1 thiab 0.01.) Txij li cov kab ntawv poob saum toj ntawm txhua lwm qhov kev sim tau teeb tsa los tsim 3 kab sib txawv. Cov duab ua tau yog cov duab rau theem no.

def experiment_with_sample_rates (tus kheej):

luam tawm "" "Kev sim nrog Cov Qauv Nqes Tes Saib cov piv txwv sib txawv los ntawm kev hloov pauv delta T" "" self.start_plot (plot_title = "Kev sim piv txwv 1/3: Delta T = 1.0") self.add_sensor_data (name = "dt = 1. ", amplitude = 1., noise_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------- ----------------------------------- self.start_plot (plot_title = "Kev sim piv txwv tus nqi 2/3: Delta T = 0.1 ") self.add_sensor_data (name =" dt = 1. ", amplitude = 1., noise_amp =.0, delta_t = 0.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------------------------------------------ tus kheej.start_plot (plot_title = "Kev sim ua piv txwv tus nqi 3/3: Delta T = 0.01") self.add_sensor_data (name = "dt = 1.", amplitude = 1., noise_amp =.0, delta_t = 0.01, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()

Txhawm rau khiav nws siv kab: sim_logging.experiment_with_sample_rates ()

Cov lus xaus tau:

  • Tsawg heev qhov piv txwv yog qhov phem heev.
  • Cov nqi siab feem ntau zoo dua.

(Python 3.6 Code ntawm GitHub txuas hauv qab no ntawm kev qhia, 2.7)

Kauj Ruam 5: Kev sim: Qhia nrov nrov

Kev sim: Qhia nrov nrov
Kev sim: Qhia nrov nrov

Hauv qhov kev sim no peb khaws tib lub teeb liab, siv tus piv txwv nruab nrab, thiab muaj qhov sib txawv ntawm cov suab nrov (noise_amp =.0,.1, 1.0.) Khiav nws nrog: sim_logging.experiment_showing_noise (). Cov zis yog ib daim duab nrog 3 kab.

Qhov Ua Tau Xaus:

Lub suab nrov ua rau nws nyuaj rau pom lub teeb liab, txo nws yog tias koj tuaj yeem ua tau

Cov cai:

# ------------------------------------------------

def kev sim_showing_noise (tus kheej): luam tawm "" "Kev sim qhia lub suab nrov Saib qhov sib txawv ntawm lub suab nrov los ntawm kev hloov lub suab nrov nrov." "" self.start_plot (plot_title = "Kev sim qhia lub suab nrov") self.add_sensor_data (lub npe = "suab nrov = 0.0 ", amplitude = 1., noise_amp =.0, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name =" suab nrov = 0.1 ", amplitude = 1., noise_amp =. 1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name = "nrov = 1.0", amplitude = 1., noise_amp = 1., delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()

Kauj Ruam 6: Kev sim: Txo lub suab nrov nrog Qhov Nruab Nrab

Kev sim: Txo lub suab nrov nrog qhov txav nruab nrab
Kev sim: Txo lub suab nrov nrog qhov txav nruab nrab
Kev sim: Txo lub suab nrov nrog qhov txav nruab nrab
Kev sim: Txo lub suab nrov nrog qhov txav nruab nrab

Qhov nruab nrab txav mus (piv txwv li ntev 8) siv qhov ntsuas 8 kawg thiab ntsuas nruab nrab. Yog tias lub suab nrov tsis zoo peb cia siab tias nws yuav nruab nrab mus rau ze 0. Khiav qhov kev sim nrog: sim_logging.experiment_showing_noise (). Tso tawm ib daim duab.

Cov lus xaus tau:

  • Qhov nruab nrab txav tsis tshem tawm ntau lub suab nrov
  • Ntev dua qhov txav nruab nrab qhov txo suab nrov ntau dua
  • Qhov nruab nrab txav mus ntev tuaj yeem txo qis thiab cuam tshuam lub teeb liab

Cov cai:

# ------------------------------------------------

def experiment_with_moving_average (tus kheej): luam tawm "" "Kev sim nrog MovingAverage Saib qhov sib txawv txav nruab nrab los ntawm kev hloov qhov ntev. Txhua tus muaj suab nrov tib yam." "" # ------------------ ------------------------------ self.start_plot (plot_title = "MovingAverage-Part 1/2: Tsis Muaj Qhov Nruab Nrab") tus kheej.add_sensor_data (name = "ave len = 0", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () self.start_plot (plot_title = "MovingAverage-Part 2/2: Len 8 and 32") self.add_sensor_data (name = "ave len = 8", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 8, trigger_value = 0) self.add_sensor_data (name = "ave len = 32", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 32, trigger_value = 0) self.show_plot ()

Kauj Ruam 7: Kev sim: Tsiv Nruab Nrab thiab Tus Qauv Piv Txwv

Kev sim: Tsiv Nruab Nrab thiab Tus Qauv Piv Txwv
Kev sim: Tsiv Nruab Nrab thiab Tus Qauv Piv Txwv

Hauv qhov kev sim no peb sib piv cov teeb meem nyoos nrog suab nrov thiab 2 qhov sib txawv sib txawv ntawm kev txo lub suab nrov.

  1. Tus nqi nruab nrab nruab nrab thiab nruab nrab khiav nruab nrab
  2. Cov qauv siab thiab siab ntev khiav nruab nrab

Khiav nws nrog: sim_logging …… Cov zis yog ib daim duab. Kuv xav tias nws yog qhov tseeb tias #2 ua haujlwm zoo dua ntawm kev txo lub suab nrov yog li peb yuav xaus qhov ntawd:

Tus nqi coj mus kuaj siab thiab siab ntev khiav nruab nrab yog qhov zoo

Tab sis koj yuav tsum nco ntsoov tias muaj tus nqi. #2 siv sijhawm ntau ntxiv thiab ua rau ntau cov ntaub ntawv kom tau txais kev cawmdim. Tus nqi yuav lossis tsis tsim nyog nws. Hauv qhov kev sim tom ntej no peb yuav ntxiv qhov ntsuas, ib lub cuab yeej los txo cov ntaub ntawv khaws cia.

Cov cai:

def kev sim_with_moving_average_and_sample_rate (tus kheej):

luam "" "Kev sim nrog Kev Hloov Nruab Nrab thiab Tus Qauv Piv Txwv, dt, khiav nruab nrab tau hloov pauv" "" # ---------------------------- -------------------- self.start_plot (plot_title = "Moving Average and Sample Rate") self.add_sensor_data (lub npe = "dt =.1 ra = 0 trig = 0 ", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name =" dt =.1 ra = 10 trig = 0 ", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (name = "dt =.01 ra = 100 trig = 0", amplitude = 1., noise_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value = 0) self.show_plot ()

Kauj Ruam 8: Kev sim: Nkag Mus Nrog Tus Kheej

Kev sim: Nkag Mus Nrog Lub Teeb
Kev sim: Nkag Mus Nrog Lub Teeb

Hauv qhov kev sim no peb ntxiv qhov ntsuas. Ua ntej, kuv txhais li cas los ntawm tus txhais? Tus txhais yog txheej txheem uas peb khaws cov ntaub ntawv tab sis tsuas yog khaws nws tom qab qee qhov sib txawv tau hloov pauv los ntawm tus lej tseem ceeb. Hauv cov kev sim no kuv tso lub sijhawm rau (x axis) sib txawv. Los ntawm kev siv tus txhais kuv tuaj yeem nqa cov ntaub ntawv siab los ntawm kev ntsuas nrawm thiab txo nws mus rau qhov tsim nyog ntau ntawm cov ntaub ntawv. Nws yog qhov tshwj xeeb muaj txiaj ntsig nrog cov qauv ua piv txwv siab thiab ua haujlwm nruab nrab ntev.

Kuv tau noj kab #2 los ntawm qhov kev sim zaum kawg uas yog "zoo" ntxiv qhov ua rau. Khiav nws nrog: sim_logging …… Cov zis yog ib daim duab, x kab.

Ua li cas? Peb tau txais cov phiaj xwm "zoo" nrog cov ntaub ntawv tsim nyog (tib yam li #1). Muaj qee tus nqi hauv kev ua haujlwm siab dua. Zuag qhia tag nrho, txawm li cas los xij, cov txiaj ntsig tau zoo ib yam li #1 tus qauv qis dua nrog kev lim tsawg dua. Koj tuaj yeem xaus:

  • Kev ua haujlwm nruab nrab ntev nrog ua rau tuaj yeem ua rau txo suab nrov zoo nrog cov ntaub ntawv tsim nyog.
  • Kev ua tiav ntxiv yuav tsis muab qhov txiaj ntsig zoo dua ntawd thiab los nrog tus nqi.

Cov cai:

# ------------------------------------------------

def experiment_with_trigger (tus kheej): luam tawm "" "Kev sim nrog Kev ua kom pom, dt, khiav nruab nrab thiab ua rau txhua yam sib txawv" "" # ----------------------- ------------------------- self.start_plot (plot_title = "Trigger 1/1-Triggering On") self.add_sensor_data (name = "dt =.1 ra = 10, trig = 0 ", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (name =" dt =.01 ra = 100, trig =.1 ", amplitude = 1., noise_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =.1) self.show_plot ()

=

Kauj Ruam 9: Kev sim: Nkag Mus Nrog Qhov Ua Tau - Lub suab nrov dua

Kev sim: Nkag Mus Nrog Lub Teeb - Lub Suab nrov nrov
Kev sim: Nkag Mus Nrog Lub Teeb - Lub Suab nrov nrov

Cia ua qhov kev sim tib yam li cov kauj ruam kawg thiab ua kom nrov nrov. Khiav nws nrog: sim_logging …… Cov zis yog ib daim duab, 2 kab.

Tam sim no cov txheej txheem ntxiv zoo li muaj nqis ntau dua thaum. Qhov kev txiav txim siab tsim nyog ntawm no yuav yog:

Kev xaiv tus nqi thiab hom kev ua rau txo suab nrov nyob ntawm koj lub teeb liab thiab suab nrov

Cov cai:

def kev sim_with_trigger_louder_noise (tus kheej):

luam tawm "" "Lub suab nrov dua li kev sim ua ntej" "" self.start_plot (plot_title = "Kev sim nrog Lub suab nrov nrov") self.add_sensor_data (name = "… dt =.1 ra = 10", amplitude = 1., noise_amp =.5, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (name = "..dt =.01 ra = 100 tv =.1", amplitude = 1., noise_amp =.5, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =.1) self.show_plot ()

Kauj Ruam 10: Ua Koj Tus Kheej

Ua Koj Tus Kheej
Ua Koj Tus Kheej

Txij ntawm no kuv vam tias koj pom tias cov txheej txheem hauv cov lus qhia no tuaj yeem muaj txiaj ntsig hauv kev txiav cov ntaub ntawv, tab sis lawv kuj tseem yuav tsum tau siv nrog qee qhov kev xav. Kev sim nrog lawv tuaj yeem pab tus txheej txheem ntawd.

Qee cov lus hais txog kev sim thiab yam uas koj yuav saib rau hauv:

  • Sine nthwv dej tsis yog qhov teeb meem nthuav dav nkaus xwb, sim lwm tus, lwm yam nthwv dej lossis nce toj lossis…..
  • Kuv siv qhov kev faib khoom ib txwm rau lub suab nrov, muaj ntau yam suab nrov; koj yuav tsum xav txog lwm tus
  • Khiav nruab nrab yog ib qho yooj yim, tab sis tsis yog txoj hauv kev rau saib nrov nrov

Nco tseg: txiav cov duab los ntawm Wikipedia.

Kauj Ruam 11: Siv Cov Txheej Txheem hauv Koj Li Software

Siv cov txheej txheem hauv koj li Software logging
Siv cov txheej txheem hauv koj li Software logging

Kuv cov cai yog qhov xav tau thiab ua rau khiav nruab nrab thiab ua rau tsuas yog tuaj yeem theej rau hauv koj qhov Python ib puag ncig thiab tom qab ntawd siv. Cov khoom yog:

  • DataTrigger hauv data_trigger.py
  • Tsiv mus nruab nrab hauv txav_average.py

Kuv lub hom phiaj tseem ceeb LoggingSim hauv simulate_logging.py yuav tsum muab piv txwv zoo rau koj tias yuav siv nws li cas. Yog tias koj siv lwm yam lus koj tuaj yeem nyeem kuv cov cai thiab siv ua koj hom lus.

Txoj cai no tuaj yeem muab koj txoj haujlwm nkag tau cov ntaub ntawv zoo dua, sim nws.

Cov duab saum toj no yog los ntawm Teeb Koj Lub Hnub Ci Lub Zog los ntawm russ_hensel uas siv tib yam khoom nruab nrab khiav.

Pom zoo: