Мазмуну:

RADbot: 7 кадам
RADbot: 7 кадам

Video: RADbot: 7 кадам

Video: RADbot: 7 кадам
Video: BIT.TRIP RUNNER 2-7 Radbot 2024, Ноябрь
Anonim
RADbot
RADbot

EF 230 үчүн Джексон Брейкелл, Тайлер Маккуббинс жана Жакоб Талердин долбоору

Марста космонавттар өтө ысыктан чаң бороонуна чейин ар кандай коркунучтарга дуушар болушат. Көп учурда этибарга алынбай турган бир фактор - бул планетанын бетинде жашаган күчтүү радиоизотоптордун коркунучу. RADbot Марстын бетиндеги астронавттарды изилдөөгө жардам берет, ал рок үлгүлөрүн саякат учурунда жогорку активдүүлүк менен аныктайт, ошондой эле роботтун бузулушуна жол бербестен анын жаргы сенсорлорун, жарык сенсорлорун, бампердик сенсорлорун жана камерасын колдонгон коопсуздук функциялары бар. кечирилгис Марс жеринде. Космонавттарды жер үстүндөгү мүмкүн болгон радиоактивдүү коркунучтар жөнүндө эскертүүдөн тышкары, роботтун радиоактивдүү үлгүлөрүнүн жайгашуу өзгөчөлүгү уран жана башка актиниддердин ири кендерин камтыган аймактарды аныктоо үчүн курал катары ишке ашырылышы мүмкүн. Космонавттар бул элементтерди казып, жетиштүү түрдө байытып, планетада туруктуу, өзүн-өзү кармай турган колонияны кубаттандырууга жардам бере турган ядролук реакторлордо жана термоэлектр генераторлорунда колдоно алмак.

Кадимки Марс роверинен айырмаланып, биздин дизайнда сатыкка чыкпаган компоненттер жана акылга сыярлык баалар бар. Каражатыңыз жана каалооңуз бар болсо, бул колдонмону аткаруу менен өзүңүз да кура аласыз. Сураныч, өзүңүздүн RADbotту кантип жасоону үйрөнүү үчүн окуңуз.

1 -кадам: Керектүү тетиктерди жана материалдарды алыңыз

Керектүү тетиктерди жана материалдарды алыңыз
Керектүү тетиктерди жана материалдарды алыңыз
Керектүү тетиктерди жана материалдарды алыңыз
Керектүү тетиктерди жана материалдарды алыңыз
Керектүү тетиктерди жана материалдарды алыңыз
Керектүү тетиктерди жана материалдарды алыңыз

Баштоо үчүн сизге эмне керек (сүрөттөр тизмектелген тартипте жайгаштырылган)

1. Бир Roomba (ар кандай жаңы модели)

2. Бир Гейгер-Мюллердин эсептегичи

3. Бир Raspberry Pi

4. USB розеткасы бар бир тактай камерасы

5. USB кабелине бир микро USB

6. USB кабелинен бир USB

7. Жетиштүү активдүүлүктүн бир радиоактивдүү үлгүсү (~ 5μSv же андан жогору)

8. Matlab орнотулган бир компьютер

9. Жабыштыргыч (Оңой алынышы үчүн скотч)

2-кадам: Камераны жана Гейгер-Мюллердин эсептегичин конфигурациялоо

Камераны жана Гейгер-Мюллердин эсептегичин конфигурациялоо
Камераны жана Гейгер-Мюллердин эсептегичин конфигурациялоо

Эми сизде RADbot түзүү үчүн бардык керектүү материалдар бар болгондон кийин, биз камераны жөн эле жайгаштыруудан баштайбыз, ал эсептегичтеги ишти окуй алат. Гейгер-Мюллер эсептегичин Roombанын аягына мүмкүн болушунча жакыныраак коюңуз жана анын сенсору тосулбаганын текшериңиз. Эсептегичти өзүңүз тандаган клей менен бекем орнотуп, камераны бет маңдайына орнотууну улантыңыз. Камераны эсептегичтин дисплейине мүмкүн болушунча жакыныраак коюп, сырттан кирүүлөрдүн программага таасирин тийгизбеши үчүн жана өзүңүздү ыңгайлуу сезгенден кийин ордуна коюңуз. Камеранын коопсуздугун биротоло сактоону сунуштайбыз, анткени, кодуңуз бүткөндө, сиз камераны компьютериңизге жайгаштырып, камераны анын көрүү талаасына жараша жайгаштырууга мүмкүндүк берген сүрөттү көрсөтө аласыз. Камера да, эсептегич да бекем орношкондон кийин, камераны Raspberry Pi'дин USB кирүүлөрүнүн бирине USB кабелинен USB кабелине туташтырыңыз жана Raspberry Pi'ни микро USB менен USB кабелине Roomba'га туташтырыңыз.

3 -кадам: Сиздин Roomba туташуу жана Light Sensor кодун түзүү

Сиздин Roomba туташуу жана Light Sensor кодун түзүү
Сиздин Roomba туташуу жана Light Sensor кодун түзүү

Биринчиден, EF 230 веб -сайтынын Roomba курал кутусун жүктөп алып, аны көрсөтүлгөн папкаларга салыңыз. Roombaга туташуу үчүн, Raspberry Piге чапталган стикерге шилтеме кылып, тырмакчага алынбастан, буйрук терезесине "r = roomba (x)" деп киргизиңиз жана бул жерде x Roomba номерин билдирет. Roomba обонду ойношу керек, ал эми таза баскыч анын айланасында жашыл шакекти көрсөтүшү керек. Кодуңузду "while" билдирүүсү менен баштаңыз жана сенсорлор тизмесинде көрүнгөн жарык сенсорлоруна кайрылыңыз. Команда терезесине "r.testSensors" деп терүү менен сенсор тизмесин ачыңыз.

Жарыктын канчалык чагылышын аныктай турган объектибиздин түсүнө таянып, while функциясын> функциясы катары аткарууну талап кылыңыз. Биздин учурда, биз алдыңкы жарык сенсорун кодду иштетүү үчүн койдук, эгерде сол же оң борбордук жарык сенсорлорунда окуу> 25 болсо. Аткарыла турган билдирүү үчүн, Roombанын ылдамдыгын "r.setDriveVelocity (x, y)" деп терүү менен жайыраак коюңуз, мында x жана y тиешелүү түрдө сол жана оң дөңгөлөктөрдүн ылдамдыгы. "Башка" билдирүүсүн киргизиңиз, ошондо Roomba такталбаган баалуулуктарды жайлатпайт жана башка ылдамдыкты эске албаганда, белгиленген ылдамдыктын буйругун кайра киргизиңиз. While билдирүүсүн "end" менен бүтүрүңүз. Бул код сегменти Roombаны объектке жакындатат жана таасирди азайтуу үчүн белгилүү бир диапазонго жеткенде жайлайт.

Тиркелген биздин коддун скриншоту, бирок миссияңыздын параметрлерине эң ылайыктуу кылып түзөтө аласыз.

4 -кадам: Бампер кодун түзүү

Бампер кодун түзүү
Бампер кодун түзүү

Roomba жайлап бараткандыктан, ал физикалык бамперди иштетпесе дагы, объектке тийгизген таасирин азайтат. Бул код сегменти үчүн кайра "while" циклинен баштаңыз жана анын туюнтмасын чындык деп коюңуз. Билдирүү үчүн, T өзгөрмөсүн бампердин чыгуусуна барабар кылып коюңуз, же 0 же 1, жалган жана чындык. Бул үчүн "T = r.getBumpers" колдоно аласыз. T структура катары чыгат. "If" билдирүүсүн киргизиңиз жана T.front субструктурасы үчүн анын туюнтмасын 1ге барабар кылыңыз жана "r.setDriveVelocity (x, y)" же "r.stop" колдонуп, диск ылдамдыгын 0 деп коюңуз. ". Кийинки коддогу шарт аткарылгандан кийин Roomba жыла алышы үчүн "тыныгуу" киргизиңиз. "Башка" дегенди кошуп, дисктин ылдамдыгын Roombанын кадимки круиздик ылдамдыгына коюңуз.

Тиркелген биздин коддун скриншоту, бирок миссияңыздын параметрлерине эң ылайыктуу кылып түзөтө аласыз.

5 -кадам: Эсептегичти окуу үчүн код түзүү, аны чечмелөө жана булактан чегинүү

Эсептегичтин экранын окуу үчүн код түзүү, аны чечмелөө жана булактан чегинүү
Эсептегичтин экранын окуу үчүн код түзүү, аны чечмелөө жана булактан чегинүү

Биздин долбоордун жүрөгүндө Geiger-Muller эсептегичи турат жана камеранын жардамы менен экранда берилүүчү маалыматтар эмнени билдирерин аныктоо үчүн төмөнкү код сегмент колдонулат. Булагыбыздын активдүүлүгүнө жараша биздин эсептегичтин экраны түсүн өзгөрткөндүгүн эске алып, биз камераны экрандын түсүн чечмелеп беребиз. "R.getImage" буйругуна барабар өзгөрмөнү коюу менен кодуңузду баштаңыз. Өзгөрмө кызыл, жашыл жана көк түстө тартылган сүрөттүн түстүү маанилеринин 3d массивин камтыйт. Орточо мааниге барабар өзгөрмөлөрдү "тиешелүү (орточо (img1 (:,,, x)))" буйругун колдонуу менен тиешелүү түстүү матрицаларга коюңуз, мында x 1 ден 3кө чейин бүтүн сан. 1, 2 жана 3 кызыл, жашыл жана көк. Шилтеме кылынган бардык буйруктардагыдай эле, тырмакчага кошулбаңыз.

Программаны 20 секундга "пауза (20)" менен токтотуп туруңуз, ошондо эсептегич үлгү боюнча так окууну ала алат, анан "if" билдирүүсүн баштайт. Биз бир нече жолу Roomba бипибизди "r.beep" аркылуу "Radioizotope табылды! Эскертүү!" Бул "күтүү (helpdlg ({'texthere'}))" буйругу менен аткарылышы мүмкүн. Ок баскандан кийин, Roomba "if" билдирүүсүндөгү коддун калган бөлүгүн аткарууну уланта берет. "r.moveDistance" жана "r.turnAngle" командаларынын айкалышы. if операторун "end" менен аяктаганыңызды текшериңиз.

Тиркелген биздин коддун скриншоту, бирок миссияңыздын параметрлерине эң ылайыктуу кылып түзөтө аласыз.

6 -кадам: Cliff Sensor Code түзүү

Cliff Sensor Code түзүү
Cliff Sensor Code түзүү

Roomba орнотулган жарга сенсорлорун колдонуу үчүн код түзүү үчүн, "while" циклинен баштаңыз жана анын туюнтмасын чын деп коюңуз. "R.getCliffSensors" ге барабар өзгөрмөнү коюңуз, бул структурага алып келет. "If" билдирүүсүн баштаңыз жана структурадан "X.leftFront" жана "X.rightFront" өзгөрмөлөрүн алдын ала аныкталган мааниден чоңураак кылып коюңуз, мында "X" "r.getCliffSensors" командасын тандаган өзгөрмө барабар бол. Биздин учурда, биз 1000ди колдондук, ак кагаз бир жартаны чагылдыруу үчүн колдонулган, жана сенсорлор жакындап калганда, кагаз 1000ден ашты, бул код жарда табылганда гана аткарылышын камсыз кылат. "Break" командасын кийин кошуп, анан "else" билдирүүсүн киргизиңиз. Эгерде эч кандай кыйроолор табылбаса аткарыла турган "else" билдирүүсү үчүн, диск ылдамдыгын ар бир дөңгөлөк үчүн кадимки крейсер ылдамдыгына коюңуз. Эгерде Roomba асканы байкаса, "тыныгуу" аткарылат, андан кийин while циклинин сыртындагы код аткарылат. "If" жана "while" укуругуна "аягын" койгондон кийин, Roomba'ны жылдыруу аралыктын буйругун колдонуу менен артка жылууга орнотуңуз. Космонавттарга жакын жерде жар бар экенин эскертүү үчүн, диск ылдамдыгынын буйругундагы x жана y ар бир дөңгөлөктүн кыймыл ылдамдыгын а жана -a деп белгилеңиз, мында а -чыныгы сан. Бул астронавтты аскага эскертип, Румбанын айлануусуна алып келет.

Тиркелген биздин коддун скриншоту, бирок миссияңыздын параметрлерине эң ылайыктуу кылып түзөтө аласыз.

7 -кадам: Жыйынтык

Жыйынтык
Жыйынтык

RADbotтун Марстагы башкы максаты - астронавттарга кызыл планетаны изилдөөдө жана колониялаштырууда жардам берүү. Үстүбүздөгү радиоактивдүү үлгүлөрдү аныктоо менен, биздин үмүтүбүз робот, же ровер, чынында, космонавттардын коопсуздугун сактай алат жана алардын базасынын (-ларынын) энергия булактарын аныктоого жардам берет. Бул кадамдардын бардыгын аткаргандан кийин, балким, кээ бир сыноолор жана каталар менен, сиздин RADbot иштеши керек. Радиоактивдүү үлгүнү тестирлөө аймагыңыздын бир жерине коюңуз, кодуңузду аткарыңыз жана ровер эмне үчүн иштелип чыкканын көрүңүз. RADbotтон ырахат алыңыз!

-EF230 RADbot командасы

Сунушталууда: