Orodha ya maudhui:

Wallace Autonomous Robot - Sehemu ya 4 - Ongeza Umbali wa IR na Sensorer za "Amp": Hatua 6
Wallace Autonomous Robot - Sehemu ya 4 - Ongeza Umbali wa IR na Sensorer za "Amp": Hatua 6

Video: Wallace Autonomous Robot - Sehemu ya 4 - Ongeza Umbali wa IR na Sensorer za "Amp": Hatua 6

Video: Wallace Autonomous Robot - Sehemu ya 4 - Ongeza Umbali wa IR na Sensorer za
Video: Происхождение человека: документальный фильм об эволюционном путешествии | ОДИН КУСОЧЕК 2024, Julai
Anonim
Image
Image
Ongeza Mzunguko wa Kusaidia (MCP3008)
Ongeza Mzunguko wa Kusaidia (MCP3008)

Halo, leo tunaanza hatua inayofuata ya kuboresha uwezo wa Wallace. Hasa, tunajaribu kuboresha uwezo wake wa kugundua na kuzuia vizuizi kwa kutumia sensorer za umbali wa infrared, na pia kuchukua faida ya uwezo wa mtawala wa gari wa Roboclaw kufuatilia hali ya sasa na kuibadilisha kuwa "sensor" halisi (programu). Mwishowe, tutaangalia jinsi ya kuzunguka bila SLAM (eneo la wakati mmoja na ramani) (kwa sasa), kwani roboti bado haina IMU (kitengo cha kipimo cha hali ya hewa) au sensorer za ToF (wakati wa kukimbia).

Kwa urambazaji, mwanzoni itakuwa malengo mawili tu:

  1. epuka vizuizi
  2. tambua wakati imekwama mahali fulani na haifanyi maendeleo yoyote. ("maendeleo" inamaanisha ilisonga mbele umbali wowote wa maana)
  3. lengo linalowezekana la 3 linaweza kuwa kujaribu kujaribu kujipanga sawa na ukuta.

Mradi huu ulianza na kitanda cha roboti na kupata harakati za kimsingi za kufanya kazi kwa kutumia kibodi na unganisho la ssh.

Awamu ya pili ilikuwa kuongeza mzunguko wa kutosha kusaidia kuandaa nyongeza ya sensorer nyingi.

Katika Iliyofundishwa hapo awali, tuliongeza sensorer kadhaa za sauti za HCSR04 na roboti sasa inaweza kuzuia vizuizi wakati inazunguka nyumba.

Ingawa inafanya vizuri jikoni na barabara ya ukumbi na nyuso nzuri, zenye gorofa, ni kipofu kabisa wakati inakaribia chumba cha kulia. Haiwezi "kuona" meza na miguu ya kiti.

Uboreshaji mmoja unaweza kuwa wimbo wa mikondo ya kawaida ya gari, na ikiwa maadili yanaruka, basi roboti lazima iwe imegonga kitu. Ni "mpango B" mzuri au hata C. Lakini hiyo haisaidii sana kuzunguka eneo la kulia.

(Sasisha: kwa kweli, kwa sasa, ufuatiliaji wa sasa ni mpango A wakati wa kugeuza kwani nimeondoa kwa muda na sensorer kutoka nyuma).

Video ya sehemu hii ni sehemu ya mwisho ya sensorer za kuzuia kikwazo.

Kile unachokiona kwenye video ni sensorer sita za sauti za mbele za HCSR04, na sensorer mbili za Sharp IR. Sensorer za IR hazikucheza sana kwenye video. Nguvu zao 'ni wakati roboti hujikuta katika eneo la kulia linakabiliwa na meza na miguu ya kiti.

Kwa kuongezea sensorer, mfuatiliaji wa sasa ulianza kucheza haswa wakati wa kugeuza, ikiwa itaanguka kwa kitu.

Mwishowe, hutumia historia ya hatua 100 zilizopita, na uchambuzi wa kimsingi kujibu swali moja:

"Hivi karibuni kumekuwa na maendeleo ya kweli ya mbele (au imekwama katika densi kadhaa inayorudia)?"

Kwa hivyo kwenye video unapoona kurudi-nyuma kurudiwa, halafu inageuka, inamaanisha ilitambua muundo wa kurudi nyuma, kwa hivyo inajaribu kitu kingine.

Lengo pekee la programu hii lilikuwa kujaribu kujaribu kuendelea mbele, na jaribu kuzuia vizuizi.

Hatua ya 1: Ongeza Mzunguko wa Kusaidia (MCP3008)

Ongeza Mzunguko wa Kusaidia (MCP3008)
Ongeza Mzunguko wa Kusaidia (MCP3008)
Ongeza Mzunguko wa Kusaidia (MCP3008)
Ongeza Mzunguko wa Kusaidia (MCP3008)
Ongeza Mzunguko wa Kusaidia (MCP3008)
Ongeza Mzunguko wa Kusaidia (MCP3008)

Kabla ya kuongeza sensorer za IR, tutahitaji mzunguko wa kiufundi kati yao na Raspberry Pi.

Tutaongeza kibadilishaji cha Analog-to-digital cha MCP3008. Kuna rasilimali nyingi mkondoni jinsi ya kuunganisha chip hii kwenye Raspberry Pi, kwa hivyo sitaenda sana hapa.

Kwa kweli, tuna chaguo. Ikiwa toleo la sensorer za IR hufanya kazi kwa 3V, vivyo hivyo na MCP3008, na tunaweza kuunganisha moja kwa moja kwenye Raspberry.

[3V IR sensor] - [MCP3008] - [Raspberrry Pi]

Kwa upande wangu, hata hivyo, ninaendesha zaidi 5V, kwa hivyo hiyo inamaanisha shifter ya kiwango cha mwelekeo-mbili.

[5V IR sensor] - [MCP3008] - [5V-to-3V bi-directional bus] - [Raspberry Pi]

Kumbuka: Kuna pato moja tu la ishara kutoka kwa sensa ya IR. Inakwenda moja kwa moja kwa moja ya mistari ya ishara ya analog ya MCP3008. Kutoka kwa MCP3008, kuna mistari 4 ya data ambayo tunahitaji kuunganisha (kupitia basi inayoongoza pande mbili) kwa Raspberry Pi.

Kwa sasa, roboti yetu itaenda kutumia tu sensorer mbili za IR, lakini tunaweza kuongeza zaidi. Njia nane za kuingiza Analog za MCP3008.

Hatua ya 2: Sensorer za IR

Sensorer za Mlima IR
Sensorer za Mlima IR
Sensorer za Mlima IR
Sensorer za Mlima IR
Sensorer za IR
Sensorer za IR
Sensorer za IR
Sensorer za IR

Sharp hufanya sensorer tofauti za IR, na zina safu tofauti na eneo la chanjo. Nilitokea kuamuru mfano wa GP2Y0A60SZLF. Mfano utakaochagua utaathiri uwekaji na mwelekeo wa sensa. Kwa bahati mbaya kwangu, sikufanya utafiti wa sensorer zipi kupata. Ilikuwa zaidi ya "ni zipi ninaweza kupata kwa wakati mzuri na bei kutoka kwa chanzo mashuhuri, kati ya zile wanazotoa" uamuzi.

(Sasisho: Walakini, hiyo inaweza kuwa haijalishi, kwani sensa hizi zinaonekana kuchanganyikiwa na taa za ndani za ndani. Bado ninachunguza suala hilo)

Kuna angalau njia tatu za kuweka sensorer hizi kwenye roboti.

  1. Kuwaweka katika nafasi iliyowekwa, mbele, wakitazama mbali kidogo kutoka kwa kila mmoja.
  2. Waweke kwenye servo, mbele, wakitazama mbali kidogo kutoka kwa kila mmoja.
  3. Kuwaweka katika nafasi iliyowekwa, mbele, lakini pembe za kushoto zaidi na kulia zaidi, zilizoelekezwa kwa kila mmoja.

Kwa kulinganisha chaguo # 1 na chaguo # 3, nadhani # 3 itashughulikia zaidi eneo la mgongano. Ukiangalia picha, chaguo # 3 linaweza kufanywa sio tu ili uwanja wa sensa uingiane, lakini pia zinaweza kufunika kituo na zaidi ya upana wa nje wa roboti.

Kwa chaguo # 1, zaidi ya sensorer zimewekwa pembe kutoka kwa kila mmoja, zaidi ya mahali pa kipofu katikati.

Tungeweza kufanya # 2, (niliongeza picha zingine na servo kama uwezekano) na kuzifanya zifagie, na ni wazi hii inaweza kufunika eneo kubwa zaidi. Walakini, ninataka kuchelewesha utumiaji wa servo kwa muda mrefu iwezekanavyo, kwa angalau sababu mbili:

  • Tutatumia moja ya vituo vya mawasiliano vya PWM kwenye Raspberry Pi. (Inawezekana kuongeza hii lakini bado…)
  • Mchoro wa sasa na servo unaweza kuwa muhimu
  • Inaongeza zaidi kwa vifaa na programu

Ningependa kuacha chaguo la servo baadaye wakati wa kuongeza sensorer muhimu zaidi, kama Time-of-Flight (ToF), au labda kamera.

Kuna faida nyingine inayowezekana na chaguo # 2 ambayo haipatikani na chaguzi zingine mbili. Sensorer hizi za IR zinaweza kuchanganyikiwa, kulingana na taa. Inawezekana kwamba roboti hupata usomaji wa kitu ambacho kiko karibu sana wakati kwa kweli hakuna kitu cha karibu. Na chaguo # 3, kwani uwanja wao unaweza kuingiliana, sensorer zote zinaweza kusajili kitu kimoja (kutoka pembe tofauti).

Kwa hivyo tunaenda na chaguo la uwekaji # 3.

Hatua ya 3: Wakati wa Mtihani

Image
Image

Baada ya kufanya uhusiano wote kati ya Raspberry Pi, MCP3008 ADC, na sensorer Sharp IR, ni wakati wa kujaribu. Jaribio rahisi tu kuhakikisha kuwa mfumo unafanya kazi na sensorer mpya.

Kama ilivyo katika Maagizo ya awali, ninatumia maktaba ya wiringPi C iwezekanavyo. Hufanya mambo kuwa rahisi. Kitu ambacho sio dhahiri sana kupitia kukagua wavuti ya wiringPi, ni kwamba kuna msaada wa moja kwa moja kwa MCP3004 / 3008.

Hata bila hiyo, unaweza kutumia tu ugani wa SPI. Lakini hakuna haja ya. Ukiangalia kwa karibu ghala ya Gordon ya wiringPi, utapata orodha ya chips zinazoungwa mkono, ambayo moja yao ni ya MCP3004 / 3008.

Niliamua kuambatisha nambari kama faili kwa sababu sikuweza kuionyesha vizuri kwenye ukurasa huu.

Hatua ya 4: Sensor Virtual - AmpSensor

Njia tofauti zaidi ambazo unaweza kufanya roboti ipokee habari juu ya ulimwengu wa nje, ni bora zaidi.

Roboti hiyo sasa ina sensorer nane za sauti za sauti za HCSR04 (sio lengo la hii inayoweza kufundishwa), na sasa ina sensorer mbili za umbali wa Sharp IR. Kama nilivyosema hapo awali, tunaweza kuchukua faida ya kitu kingine: kipengele cha kuhisi cha mikondo ya Roboclaw.

Tunaweza kufunika simu hiyo ya swala kwa mdhibiti wa magari katika darasa la C ++ na kuiita AmpSensor.

Kwa kuongeza "nadhifu" kadhaa kwenye programu, tunaweza kufuatilia na kurekebisha kawaida-ya kuchora wakati wa harakati moja kwa moja (mbele, nyuma), na pia harakati za kuzunguka (kushoto, kulia). Mara tu tunapojua safu hizo za amps, tunaweza kuchagua dhamana muhimu, ili ikiwa AmpSensor itapata usomaji wa sasa kutoka kwa mdhibiti wa magari ambao unazidi thamani hii, tunajua motors labda zimekwama, na hiyo kawaida inaonyesha roboti imepiga ndani ya kitu.

Ikiwa tunaongeza kubadilika kwa programu (safu za amri, na / au uingizaji wa kibodi wakati wa operesheni), basi tunaweza kuongeza / kupunguza kizingiti cha "muhimu-amps" tunapojaribu kwa kuruhusu tu roboti isonge na kugonga vitu, zote moja kwa moja ndani, au wakati zinazunguka.

Kwa kuwa sehemu yetu ya urambazaji ya programu inajua mwelekeo wa harakati, tunaweza kutumia habari hiyo labda, kusimamisha harakati, na kujaribu kurudisha harakati kwa muda mfupi kabla ya kujaribu kitu kingine.

Hatua ya 5: Urambazaji

Roboti kwa sasa ni mdogo katika maoni ya ulimwengu halisi. Inayo sensorer chache za umbali wa kuzuia kikwazo, na ina mbinu ya kurudi nyuma ya ufuatiliaji wa sare ya sasa ikiwa sensorer za umbali zinakosa kikwazo.

Haina motors zilizo na encoders, na haina IMU (inertial-kipimo-unit), kwa hivyo hiyo inafanya kuwa ngumu zaidi kujua ikiwa inasonga kweli au inazunguka, na ni kiasi gani.

Wakati mtu anaweza kupata dalili ya umbali na sensorer zilizopo kwenye roboti, uwanja wao wa maoni ni pana, na hakuna kutabirika. Sonar ya sauti inaweza kutafakari nyuma kwa usahihi; infrared inaweza kuchanganyikiwa na taa zingine, au hata nyuso nyingi za kutafakari. Sina hakika ni muhimu kupata shida kujaribu kujaribu mabadiliko kwa umbali kama mbinu ya kujua ikiwa roboti inakwenda na ni kiasi gani na inaelekea wapi.

Kwa makusudi nilichagua kutotumia mdhibiti mdogo kama Arduino kwa sababu a) Sipendi mazingira ya psuedo-C ++, b) na kwamba maendeleo mengi yatamaliza kumbukumbu ya kusoma (?), Na kwamba mimi ingehitaji kompyuta mwenyeji kukuza (?). Au labda mimi hufanyika tu kama Raspberry Pi.

Pi inayoendesha Raspbian, hata hivyo, sio OS ya wakati halisi, kwa hivyo kati ya usumbufu wa sensorer hizi, na OS 'haisomi haswa kila wakati, nilihisi kuwa madhumuni ya sensorer hizi yalifaa zaidi kwa kuzuia kikwazo na sio kipimo-umbali halisi.

Njia hiyo ilionekana kuwa ngumu na bila faida nyingi, wakati tunaweza kutumia sensorer bora za ToF (wakati wa kukimbia) baadaye (kwa kusudi hilo) (SLAM).

Njia moja ambayo tunaweza kutumia ni kuweka aina fulani ya wimbo wa amri gani za harakati zimetolewa ndani ya sekunde X za mwisho au amri.

Kwa mfano, sema kwamba roboti imekwama ikitazama kona diagonally. Seti moja ya sensorer huiambia kuwa iko karibu sana na ukuta mmoja, kwa hivyo inazunguka, lakini basi seti nyingine ya sensorer inaiambia kuwa iko karibu sana na ukuta mwingine. Inaishia kurudia tu muundo wa upande kwa upande.

Mfano hapo juu ni kesi moja rahisi sana. Kuongeza ujanja kunaweza tu kuongeza muundo unaorudiwa kwa kiwango kipya, lakini roboti inabaki imekwama kwenye kona.

Mfano, badala ya kuzunguka huko na huko mahali, inazunguka kwa njia moja, inabadilika nyuma kwa muda mfupi (ambayo huondoa dalili muhimu za umbali), na hata ikiwa inazunguka katika mwelekeo mwingine, bado inaendelea mbele kwa pembe fulani kurudi kwenye kona, kurudia patter ngumu zaidi ya jambo lile lile.

Hiyo inamaanisha kweli tunaweza kutumia historia ya amri, na tuangalie jinsi ya kutumia na kutumia habari hiyo.

Ninaweza kufikiria njia mbili za kimsingi (za kawaida) za kutumia historia ya harakati.

  • kwa idadi ya mwisho ya X, je! zinafanana na patttern Y. Mfano rahisi unaweza kuwa (na hii ilitokea) "MBELE, RUDISHA, MBELE, RUDISHA,…..". Kwa hivyo kuna kazi hii inayolingana ambayo inarudi ama ya KWELI (muundo umepatikana) au UONGO (haupatikani). Ikiwa KWELI, katika sehemu ya urambazaji ya programu, jaribu mfuatano mwingine wa harakati.
  • kwa idadi ya mwisho ya X, kuna harakati ya jumla au wavu mbele. Mtu anawezaje kuamua ni nini harakati halisi ya mbele? Vizuri.. kulinganisha moja rahisi ni kwamba kwa hatua za mwisho za X, "MBELE" hufanyika zaidi ya "REVERSE". Lakini hiyo sio lazima iwe pekee. Vipi kuhusu hii: "KULIA, KULIA, KUSHOTO, KULIA". Katika kesi hiyo, roboti inalazimika kufanya zamu kulia kutoka kwenye kona au kwa sababu ilikaribia ukuta kwa pembe, ambayo inaweza kuzingatiwa maendeleo ya kweli. Kwa upande mwingine, "KUSHOTO, KULIA, KUSHOTO, KULIA…" inaweza kuzingatiwa maendeleo halisi ya mbele. Kwa hivyo, ikiwa "KULIA" ikitokea zaidi ya "KUSHOTO", au "KUSHOTO ikitokea zaidi ya" KULIA ", basi hiyo inaweza kuwa maendeleo ya kweli.

Mwanzoni mwa Agizo hili, nilitaja kuwa lengo la 3 linaweza kuwa mraba au kujipanga kwa ukuta. Kwa hiyo, hata hivyo, tunahitaji zaidi ya "je! Tunakaribia kitu fulani". Kwa mfano, ikiwa tunaweza kupata sensorer mbili za sauti zinazoangalia mbele (sio lengo la nakala hii) kutoa majibu mazuri, thabiti kuhusu umbali, ni wazi ikiwa mtu ataripoti thamani tofauti sana kuliko ile nyingine, roboti imekaribia ukuta kwa pembeni, na angeweza kujaribu kuendesha ili kuona ikiwa maadili hayo yanakaribia (inakabiliwa na ukuta mraba).

Hatua ya 6: Mawazo ya Mwisho, Awamu inayofuata…

Natumahi huyu anayefundishwa alitoa maoni.

Kuongeza sensorer zaidi huleta faida kadhaa, na changamoto.

Katika kesi hiyo hapo juu, sensorer zote za sauti zilifanya kazi vizuri pamoja na ilikuwa sawa mbele na programu hiyo.

Mara tu sensorer za IR zilipoletwa kwenye mchanganyiko, ikawa changamoto zaidi. Sababu ni kwamba sehemu zingine za maoni zilifunikwa na zile za sensorer za sauti. Sensorer za IR zilionekana kuwa nyeti kidogo na zisizotabirika na mabadiliko ya hali nyepesi, wakati kwa kweli sensorer za sauti haziathiriwi na taa.

Na kwa hivyo changamoto ilikuwa katika nini cha kufanya ikiwa sensa ya sauti inatuambia kuwa hakuna kikwazo, lakini sensor ya IR ni.

Kwa sasa, baada ya kujaribu-na-makosa, mambo yaliishia katika kipaumbele hiki:

  1. kuhisi amp
  2. Kuhisi IR
  3. kuhisi sauti

Na kile nilichofanya ni kupunguza tu unyeti wa sensorer za IR, kwa hivyo wangegundua tu vitu vya karibu sana (kama vile miguu ya kiti iliyokaribia)

Hadi sasa, hakujakuwa na hitaji la kufanya programu yoyote inayounganisha nyuzi nyingi au inayokatiza, ingawa mara kwa mara huwa na upotezaji wa udhibiti kati ya Raspberry Pi na mtawala wa magari wa Roboclaw (upotezaji wa mawasiliano ya serial).

Hapa ndipo mzunguko wa E-Stop (angalia Maagizo yaliyotangulia) ingeweza kutumika. Walakini, kwa kuwa sitaki (bado) kushughulika na kulazimika kuweka upya Roboclaw wakati wa maendeleo, na roboti haiendi haraka sana, na nipo ili kuifuatilia na kuifunga, bado sina imeunganisha E-Stop.

Hatimaye, nyuzi nyingi zitahitajika.

Hatua Zifuatazo…

Asante kwa kufika hapa.

Nilipata sensorer za VL53L1X IR laser ToF (wakati-wa-kukimbia), kwa hivyo hiyo ni uwezekano wa mada ya Inayofundishwa inayofuata, pamoja na servo.

Ilipendekeza: