Мазмуну:
- 1 -кадам: Колдоо схемасын кошуу (MCP3008)
- 2 -кадам: IR сенсорлорун орнотуңуз
- 3 -кадам: Сыноо убактысы
- 4 -кадам: Виртуалдык сенсор - AmpSensor
- 5 -кадам: Навигация
- 6 -кадам: Акыркы ойлор, кийинки этап …
Video: Уоллес автономдуу роботу - 4 -бөлүк - IR аралыкты жана "Amp" сенсорлорун кошуу: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Саламатсызбы, бүгүн биз Уоллестин мүмкүнчүлүктөрүн жакшыртуунун кийинки этабын баштайбыз. Тактап айтканда, биз инфрақызыл алыстык сенсорлорунун жардамы менен тоскоолдуктарды аныктоо жана андан качуу жөндөмүн өркүндөтүүгө аракет кылып жатабыз, ошондой эле Roboclaw мотор контроллеринин агымды көзөмөлдөө жана виртуалдык (программалык) "сенсорго" айлантуу жөндөмүнөн пайдаланууга аракет кылып жатабыз. Акыр -аягы, биз SLAMсиз кантип чабыттоо керектигин карап чыгабыз (бир убакта жайгашуу жана картага түшүрүү) (азырынча), анткени роботто азырынча IMU (инерциянын өлчөө бирдиги) же ToF (учуу убактысы) сенсорлору жок.
Чабыттоо менен, алгач эки негизги максат болот:
- тоскоолдуктардан алыс болуңуз
- бир жерге тыгылып калганын жана эч кандай жылыш болбогонун таануу. ("прогресс" кандайдыр бир маанилүү аралыкты алдыга жылдырганын билдирет)
- мүмкүн болгон 3 -максат, дубалга төрт бурчтуу түрдө тегизделүүгө аракет кылуу болушу мүмкүн.
Бул долбоор робот топтому жана клавиатура жана ssh туташуусун колдонуу менен иштөө үчүн негизги кыймылдарды алуу менен башталды.
Экинчи этап көптөгөн сенсорлорду кошууга даярдануу үчүн жетиштүү колдоо схемасын кошуу болгон.
Мурунку Нускамада, биз бир нече HCSR04 акустикалык сенсорлорун коштук жана робот эми батирдин айланасында жүрүп жатканда тоскоолдуктардан кача алат.
Ашканада жана коридордо жакшы, катуу тегиз беттери бар болсо да, ашканага жакындаганда таптакыр сокур болуп калат. Бул стол менен отургучтун буттарын "көрө албайт".
Бир өркүндөтүү типтүү мотор токторун көзөмөлдөө болушу мүмкүн, эгерде баалуулуктар секирип кетсе, анда робот бир нерсеге тийген болушу керек. Бул жакшы "план B" же ал тургай C. Бирок бул чындыгында ашкананын айланасында жүрүүгө жардам бербейт.
(Жаңыртуу: чындыгында, азыркы учурда, учурдагы мониторинг-бул артка бурууда А планы, анткени мен убактылуу жана арткы сенсорлорду алып салдым).
Бул бөлүмдүн видеосу тоскоолдуктардан качуу сенсорлорунун акыркы этабын түзөт.
Видеодо сиз көргөн алты алдыңкы HCSR04 акустикалык сенсор жана эки Sharp IR сенсор. IR сенсорлору видеодо көп ойногон жок. Алардын роботу негизинен робот столдун жана отургучтун буттарын караган ашканага түшкөндө болот.
Сенсорлордон тышкары, учурдагы монитор бир нерсеге урунуп калса, айрыкча артка бурулганда ойногон.
Акыр -аягы, ал акыркы 100 кыймылдын тарыхын жана бир суроого жооп берүү үчүн кээ бир негизги анализди колдонот:
"Жакында чыныгы алдыга жылуу болду беле (же кээ бир кайталануучу бийде калып калдыбы?)"
Ошентип, видеодо алдыга-артка кайталанганын көргөнүңүздө, ал бурулат, бул алдыга-артка үлгүсүн тааныганын билдирет, демек башка нерсени сынап көрөт.
Программалык камсыздоонун бул версиясынын бирден -бир программаланган максаты - үзгүлтүксүз алдыга жылууга аракет кылуу жана тоскоолдуктарды болтурбоо.
1 -кадам: Колдоо схемасын кошуу (MCP3008)
IR сенсорлорун кошуудан мурун, алардын жана Raspberry Piнин ортосундагы интерфейс схемасы керек болот.
Биз MCP3008 аналогдук-санариптик алмаштыргычты кошобуз. Бул чипти Raspberry Pi менен кантип туташтыруу керектиги жөнүндө көптөгөн онлайн ресурстары бар, ошондуктан мен бул жерге көп кирбеймин.
Негизи, бизде тандоо бар. Эгерде IR сенсорлорунун версиясы 3Вде иштесе, MCP3008 да ошондой болот жана биз андан кийин Малинага түз туташа алабыз.
[3V IR сенсор] - [MCP3008] - [Raspberrry Pi]
Менин учурда, бирок, мен көбүнчө 5В иштеп жатам, демек, бул эки багыттуу деңгээлди алмаштыруучу дегенди билдирет.
[5V IR сенсору]-[MCP3008]-[5Втан 3Вга чейин эки багыттуу автобус]-[Raspberry Pi]
Эскертүү: IR сенсорунан бир гана сигнал чыгаруу бар. Бул түздөн -түз MCP3008дин аналогдук сигнал линияларынын бирине барат. MCP3008ден баштап, Raspberry Pi менен байланышуу үчүн 4 маалымат линиясы бар (эки багыттуу автобус аркылуу).
Учурда биздин робот эки IR сенсорунун жардамы менен чуркайт, бирок биз дагы оңой кошо алмакпыз. MCP3008 сегиз аналогдук киргизүү каналы.
2 -кадам: IR сенсорлорун орнотуңуз
Sharp бир нече ар кандай IR сенсорлорун түзөт жана алар ар кандай диапазондорго жана камтуу аймагына ээ. Мен GP2Y0A60SZLF моделине заказ кылдым. Сиз тандаган модель сенсордун жайгашуусуна жана багытына таасир этет. Тилекке каршы, мен кайсы сенсорлорду алуу керек экенин так изилдебедим. Бул көбүнчө "мен сунуштагандардын ичинен кадыр -барктуу булактан акылга сыярлык убакта жана баада ала алам" деген чечим болчу.
(Жаңыртуу: Бирок бул мааниге ээ эмес, анткени бул сенсор ички жарыктандыруу менен чаташып кеткендей көрүнөт. Мен дагы эле бул маселени изилдеп жатам)
Бул сенсорлорду роботко орнотуунун жок дегенде үч жолу бар.
- Аларды белгиленген абалда, алдыңкы жагына, бир -биринен бир аз алысыраак каратып коюңуз.
- Аларды servoго, алдыңкы жагына, бир -биринен бир аз алысыраак каратып коюңуз.
- Аларды алдыга, бирок солго жана оңго эң алыскы бурчтарга, бири -бирине каратылган абалда коюңуз.
#1 тандоону #3 тандоого салыштырганда, #3 кагылышуу аймагын көбүрөөк камтыйт деп ойлойм. Эгерде сиз сүрөттөрдү карап көрсөңүз, анда #3 тандоо сенсордук талаалар бири -бирине төп келиши үчүн гана эмес, ошондой эле роботтун сырткы туурасы менен борборун да камтый алат.
#1 тандоосу менен сенсорлор бири -биринен канчалык бурчтуу болсо, ошончолук борбордо сокур жер пайда болот.
Биз #2 кыла алмакпыз, (мен мүмкүн болушунча servo менен кээ бир сүрөттөрдү кошуп койгом) жана аларды шыпырып салууну суранабыз, жана бул көпчүлүк аймакты камтышы мүмкүн. Бирок, мен сервону колдонууну мүмкүн болушунча узарткым келет, жок дегенде эки себептен улам:
- Биз Raspberry Piдеги PWM байланыш каналдарынын бирин колдонобуз. (Муну жакшыртууга болот, бирок дагы эле …)
- Серво менен учурдагы чүчүкулак олуттуу болушу мүмкүн
- Бул аппараттык жана программалык камсыздоону көбүрөөк кошот
Мен учуу убактысы (ToF) же балким камера сыяктуу маанилүү сенсорлорду кошкондо серво вариантын кийинкиге калтыргым келет.
#2 тандоосу менен дагы бир мүмкүн болгон артыкчылык бар, ал башка эки тандоодо жеткиликтүү эмес. Бул IR сенсорлору жарыкка жараша чаташып кетиши мүмкүн. Балким, робот жакын турган объектти окуй алат, бирок жакын жерде эч нерсе жок. #3 тандоо менен, алардын талаалары бири -бирине дал келиши мүмкүн болгондуктан, эки сенсор бир объектти каттай алышат (ар кандай бурчтан).
Ошентип, биз #3 жайгаштыруу тандоосу менен бара жатабыз.
3 -кадам: Сыноо убактысы
Биз Raspberry Pi, MCP3008 ADC жана Sharp IR сенсорлорунун ортосундагы бардык байланыштарды түзгөндөн кийин, сыноо убактысы келди. Система жаңы сенсорлор менен иштеп жатканына ынануу үчүн жөнөкөй тест.
Мурунку көрсөтмөлөрдөгүдөй, мен wiringPi C китепканасын мүмкүн болушунча колдоном. Иштерди жеңилдетет. WiringPi веб -сайтын карап чыгууда анча түшүнүксүз болгон нерсе, MCP3004/3008 үчүн түздөн -түз колдоо бар.
Ансыз деле SPI кеңейтүүсүн колдонсоңуз болот. Бирок кереги жок. Эгерде сиз Гордондун wiringPi үчүн git репозиторийине жакшылап көз чаптырсаңыз, алардын бири MCP3004/3008 үчүн колдоого алынган чиптердин тизмесине туш болосуз.
Мен бул бетте туура көрсөтүлө албагандыктан кодду файл катары тиркөөнү чечтим.
4 -кадам: Виртуалдык сенсор - AmpSensor
Роботтун тышкы дүйнө жөнүндө маалыматты алуусунун канчалык ар кандай жолдору болсо, ошончолук жакшы болот.
Учурда роботтун HCSR04 акустикалык сонар сенсорлору бар (алар бул Нускаманын фокусу эмес) жана азыр эки Sharp IR аралык аралык сенсорлору бар. Жогоруда айтылгандай, биз дагы бир нерсени пайдалана алабыз: Roboclawдун мотор-токторду сезүү өзгөчөлүгү.
Биз мотор контроллерине болгон бул сурамды C ++ классына ороп, аны AmpSensor деп атай алабыз.
Программалык камсыздоого кээ бир "акылдууларды" кошуу менен биз түз кыймыл учурунда (алдыга, артка), ошондой эле айлануу кыймылдарын (солго, оңго) көзөмөлдөп, жөнгө сала алабыз. Күчөткүчтөрдүн диапазондорун билгенден кийин, биз критикалык маанини тандай алабыз, ошондуктан, эгерде AmpSensor мотор контроллеринен бул мааниден ашып кеткен учурдагы көрсөткүчтү алса, анда биз моторлордун токтоп калганын билебиз жана бул адатта робот кагылганын көрсөтөт бир нерсеге.
Эгерде биз программалык камсыздоого бир аз ийкемдүүлүк кошсок (иштөө учурунда буйрук сабынын аргалары жана / же клавиатуранын кириши), анда биз роботту кыймылга келтирүү жана объектилерге урунуу менен эксперимент кылып жатканда "критикалык ампердин" босогосун көбөйтө / азайта алабыз, экөө тең түз же айлануу учурунда.
Программалык камсыздоонун биздин навигациялык бөлүгү кыймылдын багытын билгендиктен, биз бул маалыматты колдонуп, кыймылды токтотуп, башка нерсени аракет кылардан мурун кыска убакытка артка кайтарууга аракет кылышыбыз мүмкүн.
5 -кадам: Навигация
Робот учурда реалдуу дүйнөдө кайтарым байланышта чектелген. Ал тоскоолдуктарды болтурбоо үчүн бир нече жакын аралыкта сенсорлорго ээ жана алыстык сенсорлору тоскоолдукту өткөрүп жиберсе, учурдагы тартууну көзөмөлдөө техникасы бар.
Анын коддогучтары бар моторлору жок жана IMU (инерциялуу-өлчөө бирдиги) жок, андыктан анын чындап эле жылып баратканын же канчалык экенин билүүнү кыйындатат.
Учурда роботтогу сенсорлор менен кандайдыр бир аралыкты көрсөтүүгө болот, бирок алардын көрүү чөйрөсү кенен жана алдын ала айтуу мүмкүн эмес. Акустикалык сонар артка туура чагылдырбашы мүмкүн; инфракызыл башка жарыктандыруу, ал тургай бир нече чагылдыруучу беттер менен чаташтырылышы мүмкүн. Мен роботтун кыймылдап жаткандыгын жана канча жана кайсы багытта экенин билүү үчүн алыстыктын өзгөрүшүн көзөмөлдөөгө аракет кылуунун татыктуу экенине ишенбейм.
Мен атайылап Arduino сыяктуу микро контроллерди колдонбоону чечтим, анткени а) мага psuedo-C ++ чөйрөсү жакпайт, б) жана өтө көп өнүгүү окуу-жазуу эсин (?) Жешет иштеп чыгуу үчүн башкы компьютер керек (?). Же, балким, мен Raspberry Pi сыяктуу болуп кетем.
Raspbian иштеп жаткан Pi, бирок, бул реалдуу убакытта иштөө тутуму эмес, андыктан бул сенсорлордун туруксуздугу менен ОС такыр эле окубайт, мен бул сенсорлордун максаты тоскоолдуктарды болтурбоо үчүн ылайыктуу экенин сездим. чыныгы аралыкты өлчөө.
Бул мамиле татаалыраак жана анча деле пайдасы жоктой сезилди, качан биз бул үчүн ToF (учуу убактысы) сенсорлорун (кийинчерээк) колдоно алабыз (SLAM).
Биз колдоно турган бир ыкма-акыркы X секундада же буйруктарда кандай кыймыл-буйруктар чыгарылганын көзөмөлдөө.
Мисалы, роботтун бурчка карама -каршы тыгылып калганын айт. Сенсорлордун бир тобу анын бир дубалга өтө жакын экенин айтышат, ошондуктан ал бурулат, бирок кийин башка сенсорлор башка дубалга өтө жакын экенин айтышат. Бул жөн эле капталдагы үлгүнү кайталоо менен аяктайт.
Жогорудагы мисал абдан жөнөкөй бир мисал. Кээ бир акылдуу нерселерди кошуу кайталанган үлгүнү жаңы баскычка көтөрүшү мүмкүн, бирок робот бурчта калды.
Мисалы, алдыга жана артка бурулуунун ордуна, бир тарапка бурулат, бир аз артка бурулат (андан кийин аралыктын маанилүү көрсөткүчтөрүн тазалайт), ал эми башка жакка бурулса дагы, кандайдыр бир бурчта кайра бурчка бурулат, ошол эле нерсенин татаал паттерин кайталоо.
Бул биз чындыгында буйруктардын тарыхын колдонуп, ал маалыматты кантип колдонууну жана колдонууну карап көрө аларыбызды билдирет.
Кыймыл-тарыхты колдонуунун эки эң негизги (жөнөкөй) ыкмаларын ойлоно алам.
- акыркы X саны үчүн, алар Y паттернге дал келеби. Жөнөкөй мисал болушу мүмкүн (жана бул болгон) "АЛГА, АРТКА, АЛГА, АРТКА,…..". Ошентип, TRUE (үлгү табылды) же FALSE (табылган жок) дегенди кайтарган дал келген функция бар. Эгерде TRUE болсо, программанын чабыттоо бөлүгүндө, башка кыймылдын ырааттуулугун байкап көрүңүз.
- акыркы X саны үчүн жалпы же таза алдыга жылуу барбы. Чыныгы алдыга жылуу эмне экенин кантип аныктаса болот? Ооба.. бир оңой салыштыруу, акыркы X кыймылында "АЛГА" "РЕВЕРСке" караганда көбүрөөк болот. Бирок бул жалгыз болушу керек эмес. Бул кандай: "ТУУРА, ОҢ, СОЛ, ОҢ". Бул учурда, робот бурчтан чыгуу үчүн оң бурулуштарды жасоого туура келет же дубалга бурч менен жакындагандыктан, бул чыныгы алдыга жылуу катары каралышы мүмкүн. Башка жагынан алганда, "СОЛГО, ОҢГО, СОЛГО, ОҢГО…" чыныгы алдыга жылуу катары каралышы мүмкүн эмес. Ошентип, эгерде "ОҢ" "СОЛГО" караганда, же "СОЛ" "ОҢГО" караганда көбүрөөк пайда болсо, анда бул чыныгы прогресс болушу мүмкүн.
Бул Нускаманын башында мен мүмкүн болгон 3 -максат дубалдын тегерегине же тегизделиши мүмкүн экенин айттым. Бирок, бул үчүн бизге "биз кандайдыр бир объектке жакынбызбы" дегенден да көптү талап кылат. Мисалы, эгерде биз алдыга карай багытталган эки акустикалык сенсорду алсак (бул макаланын фокусунда эмес), аралыкка байланыштуу жакшы, туруктуу жоопторду берүү үчүн, эгер бири экинчисинен бир топ башка мааниде болсо, робот дубалга жакындады бурчта жана бул баалуулуктар бири -бирине (дубалга тик караган) жакындап калганын билүү үчүн кандайдыр бир маневр жасоого аракет кылышы мүмкүн.
6 -кадам: Акыркы ойлор, кийинки этап …
Бул Нускамада кээ бир идеяларды берди деп үмүттөнөм.
Дагы сенсорлорду кошуу кээ бир артыкчылыктарды жана кыйынчылыктарды жаратат.
Жогорудагы учурда, бардык акустикалык сенсорлор жакшы иштешкен жана программалык камсыздоо менен салыштырмалуу түз болгон.
IR сенсорлору аралашмага киргизилгенден кийин, бул бир аз татаалыраак болуп калды. Себеби, алардын кээ бир көз караштары акустикалык сенсорлордукуна окшош. IR сенсорлору айлана-чөйрө шарттарынын өзгөрүшү менен бир аз сезимтал жана күтүүсүз көрүнгөн, албетте, акустикалык сенсорлор жарыктан таасирленбейт.
Ошентип, эгерде акустикалык сенсор эч кандай тоскоолдук жок экенин айтса, эмне кылуу керек болгон, бирок IR сенсор.
Азырынча, сыноо-жаңылыштыктан кийин, нерселер ушул приоритетте аяктады:
- amp-сезүү
- IR сезгич
- акустикалык сезүү
Жана мен IR сенсорлорунун сезгичтигин төмөндөтүү үчүн гана кылдым, ошондуктан алар абдан жакын объекттерди (мисалы, жакынкы отургучтун буттары) гана аныкташат.
Азырынча Raspberry Pi менен Roboclaw мотор контроллеринин (сериялык байланыштын жоголушу) ортосунда көзөмөлдүн жоголушуна учурасам да, көп тармактуу же үзгүлтүккө учураган программалык камсыздоону жасоонун кажети жок болчу.
Бул жерде E-Stop схемасы (мурунку көрсөтмөлөрдү караңыз) кадимкидей колдонула баштайт. Бирок, мен иштеп чыгууда Roboclaw'ду баштапкы абалга келтирүү менен алектенгим келбегендиктен (жана) робот ушунчалык тез жүрбөйт, мен аны көзөмөлдөп, өчүрүү үчүн катышып жатам. E-Stopту туташтырды.
Акыр-аягы, көп жип талап кылынышы мүмкүн.
Кийинки кадамдар…
Ушул убакка чейин жеткиргениңиз үчүн рахмат.
Мен кээ бир VL53L1X IR лазердик ToF (учуу убактысы) сенсорлорун алдым, андыктан бул кийинки инструкциянын темасы, серво менен бирге.
Сунушталууда:
Таблицаны кантип түзүү жана киргизүү жана Microsoft Office Word 2007деги ошол столго кошумча мамычаларды жана/же саптарды кошуу: 11 кадам
Таблицаны кантип түзүү жана киргизүү жана Microsoft Office Word 2007деги ошол таблицага кошумча мамычаларды жана/же саптарды кошуу: Сизде иштеп жаткан жана өзүңүз жөнүндө ойлогон көптөгөн маалыматтарыңыз бар беле … " Мен кантип баарын жасай алам? бул маалыматтын жакшыраак көрүнүшү жана түшүнүүгө оңойбу? " Эгер ошондой болсо, анда Microsoft Office Word 2007деги таблица сиздин жообуңуз болушу мүмкүн
MySQLге IOT-зымсыз-температура жана нымдуулук сенсорлорун жөнөтүү: 41 кадам
MySQLге IOT-зымсыз-температура жана нымдуулук сенсорлорун жөнөтүү: NCDдин узак аралыкка IoT температурасы жана нымдуулук сенсорун киргизүү. 28 миль аралыкка чейин жана зымсыз сетка тармагынын архитектурасына ээ болгон бул сенсор нымдуулукту (± 1,7%) жана температураны (± 0,3 ° С) колдонуучу аныктаган аралыкта, уктоодо
Ардуино роботу алыстыгы, багыты жана айлануу даражасы менен (Чыгыш, Батыш, Түндүк, Түштүк) Bluetooth модулу жана Автономдуу робот кыймылынын жардамы менен үн менен башкарылат.: 6 кадам
Ардуино роботу алыстыгы, багыты жана айлануу даражасы менен (Чыгыш, Батыш, Түндүк, Түштүк) Bluetooth модулунун жана Автономдуу Робот Кыймылынын жардамы менен Үн менен Башкарылат. , Сол, Оң, Чыгыш, Батыш, Түндүк, Түштүк) Үн буйругун колдонуу менен аралыкты сантиметр менен талап кылды. Роботту автономдуу түрдө жылдырса болот
Автономдуу жана алыстан башкаруу роботу: 11 кадам
Автономдуу жана Алыстан Башкаруучу Робот: Бул робот салыштырмалуу арзан жана тез болушу керек. Бул жерде сизге баштоо үчүн керек болгон нерселер: Hardware 1 Raspberry Pi 1 Dual H-Bridge Motor Driver 1 Buck Converter 2 3V-6V DC Motors HC-SR04 Ultrasonic Sensor Башка шасси катары иштөө үчүн кутуча M
BeanBot - Arduino негизделген автономдуу кагаз роботу: 8 кадам (сүрөттөр менен)
BeanBot - Arduino негизделген автономдуу кагаз роботу!: Бош кагаздан да шыктандыруучу нерсе барбы? Эгерде сиз тентек же куруучу болсоңуз, анда долбоорлоруңузду кагазга түшүрүү менен баштай тургандыгыңыз шексиз. Менде кагаздан роботтун рамкасын жасоого болобу же жокпу деген ой пайда болду