Мазмұны:

Өздігінен жүретін автокөлікті құрастырыңыз - (Бұл нұсқаулық жұмыс үстінде): 7 қадам
Өздігінен жүретін автокөлікті құрастырыңыз - (Бұл нұсқаулық жұмыс үстінде): 7 қадам

Бейне: Өздігінен жүретін автокөлікті құрастырыңыз - (Бұл нұсқаулық жұмыс үстінде): 7 қадам

Бейне: Өздігінен жүретін автокөлікті құрастырыңыз - (Бұл нұсқаулық жұмыс үстінде): 7 қадам
Бейне: GEELY MONJARO СОСТОЯНИЕ ЧЕРЕЗ 7000км ПРОБЕГА / КАЧЕСТВО КИТАЙСКОЙ СБОРКИ И ОСНОВНЫЕ МОМЕНТЫ ИЗНОСА 2024, Шілде
Anonim
Image
Image

Сәлеметсіз бе, Егер сіз менің қашықтағы USB ойын тақтасы бар диск роботындағы нұсқаулыққа назар аударсаңыз, бұл жоба ұқсас, бірақ кішірек. Сіз сондай-ақ Youtube-тегі робототехника, үйдегі дауысты тану немесе автокөлікті өздігінен басқаратын автокөлік тізімдерінен көмек немесе шабыт ала аласыз.

Мен үлкен роботтан бастадым (Wallace 4), бірақ мен жергілікті Meetup тобын құрғандықтан, маған кішірек көлемде бірдеңе қажет болды, ал топ компьютерді көруге өте қызығушылық танытты.

Мен Udemy курсын кездестірдім: бұл жобаның идеясын берген жеке автокөлікті құрастырыңыз.

Егер сізді Udemy курсы қызықтырса, онда тексеруді жалғастыра аласыз; ол мезгіл -мезгіл үлкен жеңілдікпен сатылымға шығады. Ескерту: 1 -ші және 2 -ші бөлімдер бар - сіз екі курсты пакетке (жеңілдікпен) қалай алуға болатынын зерттеуіңіз керек.

Бұл нұсқаулықтың мақсаты екі жақты. Біріншіден, курстың белгілі бір бөліктеріне (мысалы, бөлшектер мен аппараттық құралдарға) кейбір көрсеткіштер мен баламалар беру. Екіншіден, курсты кеңейту.

Udemy курсының негізгі мақсаты:

кіші доңғалақты роботты автокөлікті екі жолақты кішірейтілген жолда өздігінен жүргізуге дағдыландыру.

Ол жолдың жолағын және жолдың соңына жеткенде тануы керек.

Ол тоқтау белгісін (және тоқтатуды) тануы керек.

Сондай -ақ, ҚЫЗЫЛ және ЖАСЫЛ бағдаршам.

Ол сондай -ақ кедергіні (басқа машинаны) танып, маневр жасауы керек.

Бұл нұсқаулық курсқа не қосады:

Кішкентай автокөлікті қашықтан басқарылатын USB Gamepad көмегімен басқарыңыз, дәл осы нұсқаулықтағыдай.

Курста ұсынылатын балама нұсқаларды беріңіз.

Сізге курсты сатып алудың қажеті жоқ шығар:

Бұл нұсқаулық сізге бастау үшін қажет болуы мүмкін.

Жабдықтар

Негізгі (ұсынылған) бөліктер:

Робот шассиі

Төрт қозғалтқыш

Ардуино

Raspberry Pi (3, 3B+, 4)

Камера (USB веб -камерасы немесе Picamera модулі)

Батарея қуаты

Қосу/өшіру қосқыштары

секіргіш сымдар

тұрақсыздықтар (пластик және металл болуы мүмкін)

Бөлшектерді сатып алмас бұрын нұсқаулықты толық қарап шығыңыз, сонымен қатар бейнелерді қараңыз.

Бұл жобаны жасағаннан кейін мен нақты бөліктер соншалықты маңызды емес екенін түсінемін.

1 -қадам: бөлшектер туралы толығырақ…

Image
Image
Бөлшектер туралы толығырақ…
Бөлшектер туралы толығырақ…
Бөлшектер туралы толығырақ…
Бөлшектер туралы толығырақ…

Байланысты бейнеде мен тапқан бөліктер мен кейбір мәселелер туралы егжей -тегжейлі айтылады.

  • Әр түрлі шасси / қозғалтқыштарды іздеңіз
  • Қозғалтқыштарда оларға дәнекерленген сымдар болуы керек
  • Сізде бұрғылау және бұрғылау қондырғылары, НЕМЕСЕ тесіктері көп шасси болуы керек
  • Есіңізде болсын, салмақ мәселесі. Барлығы мүмкіндігінше жеңіл болуы керек.
  • L298 H-Bridge мотор жүргізушісі тамаша жұмыс істейді. ЕСКЕРТПЕ: бұрандалы терминал блоктарымен алыңыз (суретті қараңыз)
  • Сізге пластиктен де, металдан да қажет болады, M3 өлшемі - ең жақсы таңдау.

Пластмассадан жасалған тақталар тақталарды шассиге бекіту үшін жақсы (мотор драйвері, Arduino, Raspberry, қуатты компьютер, қосу/өшіру қосқышы және т.б.).

Металл кедергілер шассиді (беріктігін) жинау үшін жақсы, сонымен қатар, әсіресе сіз дамып жатқанда (бағдарламалау, тестілеу). Даму үшін металл тоқтаулар тіректер ретінде қызмет етуі мүмкін. Егер сіз нағыз автокөлікпен жұмыс жасайтын болсаңыз, сіз көлікті дөңгелектері ауада болатындай және еркін қозғалатын етіп көтергіңіз келеді. Бұл өте маңызды! Сіз қателесесіз және сіз көліктің ұшып кетуін қаламайсыз.

Бұрғылау + бұрғылау ұштары

Мен шынымен де, егер мүмкін болса, бұрғылауды және екі жақты жабысқақ таспаның орнына тұрақтылықты қолдануды ерекше атап өткім келеді. Сіз бұл жоба кезінде тақталарды бірнеше рет алып тастап, қайта орналастырасыз, және таспаны қолдану өте қиын болады.

Бұрғылауды қолдану оның орнын өзгертуді жеңілдетеді (әсіресе шасси пластиктен болса) және ол кәсіби көрінеді.

2 -қадам: Даму кезінде машинаны қуаттандыру

Даму кезінде автокөлікті қуаттандыру
Даму кезінде автокөлікті қуаттандыру
Даму кезінде автокөлікті қуаттандыру
Даму кезінде автокөлікті қуаттандыру

Менің ойымша, бұл жобаны бастаудың ең жылдам, ең оңай жолы:

  • Arduino эскизін әзірлеу үшін Arduino -ны компьютерге USB арқылы қосыңыз
  • Raspberry Pi бағдарламалық қамтамасыз ету үшін сізде кемінде 3 ампер болатын 5В USB қуаты болуы керек. Және оны қосу/өшіру қосқышы болуы керек. Егер сізде компьютерге қосылған қуатты USB хаб болмаса, сіз таңқурайға тікелей компьютерден қуат бере алмайтын шығарсыз.
  • Қозғалтқыштарды/дөңгелектерді сынауға дайын болған кезде, ең оңай - бұл жақсы фотосурет. Алайда, олар арзан емес.

Бұл бөлімдегі менің айтайын дегенім, әзірлеу кезінде батарея қуатын пайдаланғыңыз келмейді, себебі бұл сіздің прогресті айтарлықтай баяулатады.

Сонымен қатар, жоғарыда келтірілген ұсыныстарға ұқсас нәрсені жасай отырып, сіз автокөлікті қалай қуаттандыратыны туралы алаңдамайсыз. Сіз бұл шешімді кейінірек жобада кейінге қалдыра аласыз.

3 -қадам: Нақты пайдалану кезінде машинаны қуаттандыру

Нақты пайдалану кезінде автокөлікті қуаттандыру
Нақты пайдалану кезінде автокөлікті қуаттандыру
Нақты пайдалану кезінде автокөлікті қуаттандыру
Нақты пайдалану кезінде автокөлікті қуаттандыру

Егер сіз логикаға сәйкес 5В қуатының курсын ұстануды шешсеңіз (немесе мен не істесем), онда 5В USB қуат банктерінің барлығы бұл жоба үшін жақсы емес екенін біліңіз.

Мұндағы басты мәселе - сізге 5В қажет, бірақ сізге кемінде 3 ампер қажет! Бұл туралы ойланыңыз - сізге ноутбукты қуаттандыратын қуат банкі қажет (мүмкін).

Егер сіз АҚШ -та тұрсаңыз, менің ойымша, мұны істеудің ең жақсы әдістерінің бірі - Best Buy -дан сатып алу. Неге? 14 күндік ақшаны қайтару саясатының арқасында.

Мен жұмыс істейтін біреуін таппас бұрын үш түрлі қуат банкін сынап көруім керек болды. Қалғандары Raspberry Pi-ді төмен кернеуге шағымданады.

Мен ең арзан қуат банкінен бастадым және жұмыс істейтін біреуін тапқанға дейін келесі модельді (бұл қымбатырақ) сынап көруді жалғастырдым.

Arduino -ны қалай қосуға болады

Udemy курсында автор Arduino -ны қуат банкінен тікелей қуаттандыруды таңдады (ол арнайы компьютер арқылы) және Arduino GPIO коннекторындағы қуат түйреуіштерін қолданды.

Мен Arduino -ны Raspberry Pi -ден USB кабелі арқылы қосуды таңдадым.

Сіз қайсысы жақсы екенін шешуіңіз керек.

Қозғалтқышты/мотор драйверін қалай қуаттандыруға болады

Udemy курсында автор қозғалтқышты/драйверді 5В қуат банкінен тікелей қосуды таңдады. Егер сіз бұл әдісті қолдансаңыз, екі мәселе бар.

  1. Қозғалтқыштар бірінші айнала бастағанда, олар ең көп ток алады. Бұл қуат кернеуінің 5 В -тан төмен түсуіне және таңқурайдың қалпына келуіне әкелуі мүмкін.
  2. Қозғалтқыштарды қуаттандыру үшін тек 5В кернеуі сіздің қозғалтқыштарға мүмкіндігінше көп қуат бермейтіндігіңізді білдіреді, және автомобиль баяу қозғалады (баяу). Мен қозғалтқыштарды (сол қуат көзімен) сынап көрдім (суретті қараңыз) кемінде 9В. Олар 9В кернеуде жақсы жұмыс істейді.

9В (немесе одан да көп) туралы бақылаулар

Егер сіз осы Нұсқаулыққа арналған барлық фотосуреттер мен бейнелерді қарасаңыз, мен өзімнің 9В қуат көзін жасау үшін реттелетін ПХД жинағанымды байқадыңыз. Мен жол бойы бірнеше нәрсені үйрендім.

Дәл қазір мен қозғалтқыштарды қуаттандыру үшін бірнеше (3) 9В батарея батареяларын қолданамын. Мен сілтілі және NiMH қайта зарядталатын батареяларды қолдандым.

Оқу тәжірибесі №1: NiMH 9V батареяларын дұрыс зарядтауға көп уақыт қажет (бірнеше сағат).

Мүмкін болатын шешім: көп батареялы NiMH зарядтағышына инвестиция салыңыз. Бұл «ақылды» зарядтағыш болуы керек.

Кемшілігі: олар арзан емес.

Оқу тәжірибесі №2: 9В батареялары бірнеше шағын ішкі ұяшықтардан тұрады. Егер сол ұяшықтардың біреуі өлсе, онда батареяның бәрі жарамсыз болады. Менде бұл мәселе болған жоқ, бірақ мен бұл туралы оқыдым.

№3 оқу тәжірибесі: 9В батареялардың барлығы бірдей кернеу емес. Бұл маңызды. Себебі кернеу неғұрлым жоғары болса, соғұрлым жылдамдық мүмкін болады. Кейбір батарея элементтері (және зарядтағыштар) тек 8,4 В құрайды. Кейбіреулер одан да аз. Кейбірі 9,6 В.

Оқу тәжірибесі № 4: 9В батареялары, әсіресе NiMH батареялары, салмағы бойынша жеңіл. Жақсы нәрсе. Алайда, олардың көпшілігі шығыс токтың мА -ын ғана қамтамасыз етеді. Сондықтан оларды параллель орналастыруға тура келді. Сізге жалпы ампердің қуаты шамамен 2 ампер қажет, тіпті қысқа уақыт ішінде.

№5 оқу тәжірибесі: 9,6В аккумуляторлық батареялар бар, олар радиобасқарылатын автомобильдер үшін қолданылады. Мен әлі біреуін қолданған жоқпын, бірақ менің ойымша, олар мен сияқты 9В параллель батареялардан гөрі ток береді. Сонымен қатар, сіз бір құрылғыны зарядтай аласыз. Пакеттер әр түрлі мөлшерде келеді. Және салмақты ескеру қажет. Содан кейін сіз бүкіл машинаны немесе тек қозғалтқыштарды қуаттандыру үшін пакетті қолданасыз ба? Егер бүкіл көлік үшін сізге Raspberry Pi үшін 5В төмендететін реттегіш қажет болады.

L298 H-Bridge осы мақсатта 5В шығара алады, бірақ мен оның Raspberry Pi үшін қанша ток шығара алатындығына алаңдаймын, егер ол L298 тақтасында тым көп жүктеме болса.

Егер сіз екі бөлек қуат көзіне ие болуды шешсеңіз, онда сізде салмақ мәселесі болуы мүмкін (тым ауыр).

4 -қадам: Gamepad жүргізуге арналған бағдарламалық қамтамасыз ету

Менің ойымша, мен бұл бөлімнің көп бөлігін қашықтан басқарылатын USB Gamepad Instructable арқылы роботпен басқардым, сондықтан мен бұл жерде қайталамаймын.

Басқа нұсқаулықтағы бағдарламалау/бағдарламалық қамтамасыз ету бөлімдері тек ұсыныс. Менің ойымша, адам сынақ пен қателік арқылы көбірек біледі.

5 -қадам: камераны қосу

Камераны қосу
Камераны қосу
Камераны қосу
Камераны қосу
Камераны қосу
Камераны қосу

Udemy курсында автор менің ойымша, камераны көтеру жолын жасау үшін дөңгелек ағаш дюбельдер мен желім тапаншасын қолданады.

Сіз камераны екі жолақты жолға қарайтындай етіп көтергіңіз келеді, осылайша ол жолақтарды оңай тани алады.

Мен АҚШ -та тұратын жерде ағаштан жасалған сүлгілер өте арзан болды. Сіз оларды Lowe немесе Home Depot -тен сатып ала аласыз. Мен дөңгелек дюбельдердің орнына төртбұрышты дюбельдерді таңдадым.

Мен сонымен қатар камералық мұнараға неғұрлым берік негіз жасауды таңдадым, мен мұнара мен оны ойнауға және машинада қайсысы жақсы болатынын сынап көруге болатындай етіп, оны көліктен алып тастайтын етіп жасадым.

Сонымен қатар, мен мұнараға USB веб -камерасынан бастаймын, бірақ кейінірек Picamera модулін қолдануға көшемін деген оймен жасадым.

Сіз балық көзіне арналған камераға инвестиция салғыңыз келуі мүмкін.

Мен өте қымбат емес ыстық желім тапаншасын сатып алдым, бірақ мен мұнара негізін жақсырақ нығайтқым келді, сондықтан мен бәрін жақсырақ ұстау үшін бұрандаларды бұрап, бұрандаларды қостым.

Содан кейін мен негізді машинаның корпусына бекітіп қойдым.

Егер мен кейінірек заттарды жылжытқым келсе, мен шассидің негізін босатамын, шассидің жаңа жерінде жаңа тесіктер бұрғылаймын және мұнараны шассиге қайта бекітемін.

Мен бәрін бақылау әдісі ретінде үлкен роботтан (Wallace Robot 4) Python мен Node.js «мені ұстан» кодын алып келдім. Осы бөлімдегі фотоларды қарап, «мені ұстан» туралы толығырақ мәлімет беретін youtubes тізімін қараңыз.

Мен айтқанымдай, алдымен USB веб -камерасын орнату оңай болды. Кейінірек мен Picamera модулін орната аламын.

6 -қадам: Бетті тану - позицияны анықтаңыз

Image
Image

Бұл бөлім Udemy курсының назарында емес, бірақ бұл қызықты жаттығу болды.

Егер сіз «python opencv жүзді тануды» іздейтін веб -сайт жасасаңыз, сіз мұны қалай жасауға болатыны туралы көптеген жақсы мысалдар таба аласыз және олардың барлығы бірдей қадамдарды орындайды.

  1. «haar» бет файлын жүктеңіз
  2. камераны инициализациялау
  3. жақтауды алатын циклды бастаңыз
  4. түсті суретті сұр масштабқа түрлендіру
  5. бетті табу үшін оны opencv -ге беріңіз.
  6. ішкі циклды бастаңыз (әр табылған тұлға үшін) (менің жағдайда, егер менде 1 -ден көп болса, тоқтату үшін код қосамын)

Осы мақсатта, біз бетті анықтағаннан кейін, біз бетті көрсететін қиялы квадраттың X, Y, W және H білеміз.

Егер сіз роботтың алға немесе артқа қозғалуын қаласаңыз, W -ді ескеруіңіз керек. Егер W тым үлкен болса (тым жақын), роботты артқа жылжытыңыз. Егер W тым кішкентай болса (тым алыс), роботты алға жылжытыңыз.

Солға/оңға қозғалыс сәл күрделі, бірақ ақылға қонымды емес. Сол жақ пен оң жақ беттің орналасуын қалай анықтау керектігін көрсететін осы бөлімнің суретін қараңыз.

ЕСКЕРТУ:

Егер сіз OpenCV веб -мысалдарының кез келгенін іске қоссаңыз, олардың барлығы беті шаршыға салынған opencv «көріп отырған» нәрсенің нақты көрінісін көрсетеді. Егер сіз байқасаңыз, бұл шаршы тұрақты емес (тұрақты), тіпті сіз қозғалмасаңыз да.

Бұл мәндердің өзгеруі роботтың үнемі қозғалыста болуына әкеледі, алға немесе артқа, солға немесе оңға.

Осылайша, сізде алға/артқа және солға/оңға дельта болуы керек.

Оңға және солға қарай жүрейік:

Сіз солға және оңға есептегеннен кейін айырмашылықты алыңыз (дельта):

дельта = абс (солға - оңға)

Сіз абсолютті қабылдауыңыз керек, себебі сіз олардың қайсысы үлкен болатынын білмейсіз.

Содан кейін сіз дельта минимумнан үлкен болған жағдайда ғана жылжуға тырысу үшін шартты кодты қосасыз.

Сіз дәл осылай алға және артқа жасай аласыз.

7 -қадам: Беттің орналасуы - жылжымалы робот

Сізге роботтың солға немесе оңға, алға немесе артқа жылжуы қажет екенін білген соң, мұны қалай істейсіз?

Бұл нұсқаулық жұмыс үстінде болғандықтан, мен дәл қазір осы жобаға пайдалану үшін үлкен роботымның кодын көшіріп алдым. Ютубтағы робототехниканың ойнату тізімін қараңыз, онда осының бәрі көрсетілген.

Қысқаша айтқанда, менде код бар.

Python бетін тану сценарийі Node.js серверіне http сұрауларын жасайды

Node.js сервері жылжу бағыттары бойынша http сұрауларын тыңдайды, оларды реттелетін сериялық хаттамаға түрлендіреді

Node.js сервері мен Arduino арасындағы реттелетін сериялық хаттама

Роботты жылжыту бойынша нақты командаларды орындайтын Arduino эскизі

Udemy курсы мұны жоғарыдағыдай жасамайды. Бірақ мен жақсы жетістіктерге жетуді және суретті нақты тануға назар аударғым келгендіктен, мен бұрынғы кодты қайта қолдандым.

Ұсынылған: