Агуулгын хүснэгт:

Робот гар: Женсен: 4 алхам
Робот гар: Женсен: 4 алхам

Видео: Робот гар: Женсен: 4 алхам

Видео: Робот гар: Женсен: 4 алхам
Видео: РАЗДАЕТ WIFI СЛЕДИТ ЗА ЧЕЛОВЕКОМ 4G камера видеонаблюдения 2024, Аравдугаар сар
Anonim
Робот гар: Женсен
Робот гар: Женсен

Женсен бол Arduino платформ дээр бүтээсэн робот гар бөгөөд зөн совинтой хөдөлгөөн төлөвлөлтөд гол анхаарлаа хандуулдаг бөгөөд докторын зэрэг хамгаалсан Чарльз Б. Маллохын удирдлаган дор 1 кредитээс хамааралгүй төсөл юм. Энэ нь гарыг гараар хөдөлгөх замаар програмчлагдсан хэд хэдэн хөдөлгөөнийг давтаж чаддаг. Үүнийг бүтээх урам зоригийг UMass Amherst M5 үйлдвэрлэгчийн орон зайд бүтээгдсэн бусад робот зэвсгийг хараад олж авсан юм. Цаашилбал, би CAD програм хангамжийг ашиглахыг сурч, Arduino -ийн дэвшилтэт төсөл хийхийг хүсч байсан. Үүнийг би эдгээр бүх зүйлийг хийх боломж гэж харсан.

Алхам 1: Анхны дизайн ба хамрах хүрээ

Анхны дизайн ба хамрах хүрээ
Анхны дизайн ба хамрах хүрээ

Энэхүү төсөлд зориулж миний сонгосон CAD програм хангамж бол OnShape бөгөөд миний загварчилсан анхны зүйл бол HiTec HS-422 аналог servo юм. Би servo -ийг орон нутгаас авах боломжтой бөгөөд боломжийн үнээр сонгосон. Энэ нь мөн өөрийн эд ангиудыг зохион бүтээхээс өмнө OnShape -ийг сурах сайн туршлага болсон юм. Төслийн эхэн үед би гараа ямар чадвартай болохыг хүсч байгаагаа ерөнхий ойлголттой байсан. Би үүнийг зохистой хөдөлгөөнтэй, юм авахад чиглүүлэгч байхыг хүсч байсан. Би CAD дээр загварчлах ажлыг үргэлжлүүлэх үед эдгээр ерөнхий үзүүлэлтүүд нь дизайныг мэдээлсэн. Энэ үед надад байсан дизайны өөр нэг хязгаарлалт бол миний 3D принтер дээрх хэвлэх орны хэмжээ байв. Тийм ч учраас дээрх зураг дээр харж буй суурь нь харьцангуй энгийн дөрвөлжин юм.

Төслийн энэ үе шатанд би гараа хэрхэн яаж удирдахыг хүсч байгаагаа тархины шуургаар дамжуулж байсан. Надад урам зориг өгсөн нэг робот гар нь удирдлагын зориулалтаар хүүхэлдэй гараа ашигласан. Нөгөө нэг нь гараа хэрэглэгч янз бүрийн байрлалд шилжүүлсэн зөн совингийн програмчлалын аргыг ашигласан. Дараа нь гар нь эдгээр байрлалуудад эргэж орно.

Миний анхны төлөвлөгөө бол гараа барьж дуусгах, дараа нь эдгээр хоёр хяналтын аргыг хэрэгжүүлэх явдал байв. Би үүний дараа хэзээ нэгэн цагт үүнийг хянах компьютерийн аппликейшн хийхийг хүсч байсан. Төслийн энэ талын хамрах хүрээг багасгаж чадсан гэж та хэлж магадгүй. Эхний хоёр хяналтын аргууд дээр ажиллаж эхлэхэд би зөн совингийн програмчлалын арга нь миний бодож байснаас хамаагүй төвөгтэй болохыг олж мэдэв. Тэр үед л би үүнийг гол анхаарлаа хандуулж, бусад хяналтын аргуудыг тодорхойгүй хугацаагаар хойшлуулахаар шийдсэн юм.

Алхам 2: Хяналт

Хяналт
Хяналт

Миний сонгосон хяналтын арга нь иймэрхүү байдлаар ажилладаг: та гараа гараараа янз бүрийн байрлалд шилжүүлж, эдгээр байрлалыг "хадгалдаг". Аливаа байрлал нь гарны холбоос бүрийн хоорондох өнцгийн тухай мэдээлэлтэй байдаг. Байрлалыг хадгалж дууссаны дараа та тоглуулах товчлуурыг дарахад гар нь эдгээр байрлал бүрт дараалан буцаж ирдэг.

Энэхүү хяналтын аргын хувьд ойлгох ёстой олон зүйл байсан. Серво бүрийг хадгалсан өнцгөөр эргүүлэхийн тулд би эдгээр өнцгүүдийг ямар нэгэн байдлаар "хадгалах" ёстой байсан. Энэ нь миний ашиглаж байсан Arduino Uno -ийг servo бүрийн өнөөгийн өнцгийг хүлээн авах боломжтой болгоход шаардлагатай байв. Энэхүү хяналтын аргыг ашигладаг робот гар бүтээсэн миний найз Жереми Паради надад хобби серво бүрийн дотоод потенциометрийг ашиглахад тусалсан юм. Энэ бол servo нь өөрийн өнцгийг кодлоход ашигладаг потенциометр юм. Би туршилтын серво сонгож, дотоод потенциометрийн дунд зүү рүү утас гагнаж, гадна талын утсыг тэжээхийн тулд хашлага дотор нүх гаргав.

Би одоо потенциометрийн дунд зүү дээрх хүчдэлийг уншиж одоогийн өнцгийг хүлээн авах боломжтой болсон. Гэсэн хэдий ч хоёр шинэ асуудал гарч ирэв. Нэгдүгээрт, дунд зүүгээс ирж буй дохион дээр хүчдэлийн өсөлт гэх мэт чимээ гарсан. Энэ асуудал сүүлд жинхэнэ асуудал болсон. Хоёрдугаарт, өнцөг илгээх, өнцөг хүлээн авах утгын хүрээ өөр байв.

Хоббигийн servo моторуудад 0 -ээс 180 градусын хооронд ямар нэгэн өнцөг рүү шилжихийг хэлэх нь тухайн өнцөгт тохирох өндөр хугацаатай ХОУХ -ны дохиог илгээх явдал юм. Үүний эсрэгээр Arduino -ийн аналог оролтын зүү ашиглан потенциометрийн дунд зүү дээрх хүчдэлийг уншиж, servo эвэр 0 -ээс 180 градусын хооронд шилжихэд тусдаа утгын мужийг буцаана. Тиймээс хадгалагдсан оролтын утгыг servo -ийг ижил өнцгөөр буцаахад шаардлагатай PWM гаралтын утга руу хөрвүүлэхийн тулд зарим математик шаардлагатай байсан.

Миний анхны бодол бол хадгалсан өнцөг бүрийн харгалзах гаралтын ХОУХ -ийг олохын тулд энгийн хүрээний газрын зургийг ашиглах явдал байв. Энэ ажилласан, гэхдээ тийм ч нарийвчлалтай биш байсан. Миний төслийн хувьд 180 градусын өнцөгт харгалзах ХОУХ -ны өндөр хугацааны утгуудын хүрээ нь аналог оролтын утгаас хамаагүй том байсан. Нэмж дурдахад эдгээр хоёулаа хоёулаа тасралтгүй байгаагүй бөгөөд зөвхөн бүхэл тооноос бүрдэнэ. Тиймээс би хадгалсан оролтын утгыг гаралтын утгатай харьцуулж үзэхэд нарийвчлал алдагдсан. Яг энэ үед миний servo -г шаардлагатай газарт нь хүргэхийн тулд хяналтын гогцоо хэрэгтэй гэж би бодсон.

Би PID хяналтын давталтын кодыг бичсэн бөгөөд оролт нь дунд зүүний хүчдэл ба гаралт нь ХОУХ -ны гаралт байсан боловч надад зөвхөн салшгүй хяналт хэрэгтэй байгааг хурдан олж мэдэв. Энэ хувилбарт гаралт ба оролт хоёулаа өнцгийг илэрхийлдэг тул пропорциональ ба дериватив хяналтыг нэмэх нь түүнийг хэтрүүлэх эсвэл хүсээгүй зан гаргах хандлагатай байдаг. Интеграл хяналтыг тааруулсны дараа хоёр асуудал байсаар байв. Нэгдүгээрт, хэрэв одоогийн болон хүссэн өнцгийн хоорондох анхны алдаа их байсан бол servo хэт хурдан хурдасгах болно. Би салшгүй хяналтын тогтмолыг багасгаж болох боловч энэ нь ерөнхий хөдөлгөөнийг хэт удаашруулсан. Хоёрдугаарт, энэ хөдөлгөөн нь аймшигтай байв. Энэ нь аналог оролтын дохионы дуу чимээний үр дүн байв. Хяналтын гогцоо энэ дохиог тасралтгүй уншиж байсан тул хүчдэлийн огцом өсөлт нь цочрол үүсгэв. (Энэ үед би бас нэг туршилтын servo -оосоо дээрх зураг дээрх угсралт руу шилжсэн. Мөн програм хангамж дахь servo бүрийн хувьд хяналтын давталтын объект хийсэн.)

Би гаралт дээр экспоненциал жигнэсэн дундаж (EWMA) шүүлтүүр тавьж хэт хурдан хурдатгалын асуудлыг шийдсэн. Гаралтыг дунджаар хийснээр хөдөлгөөний том үсрэлтүүд буурсан (үүнд дуу чимээнээс гарах чимээ орно). Гэсэн хэдий ч оролтын дохионы дуу чимээ асуудал хэвээр байсаар ирсэн тул миний төслийн дараагийн үе шат үүнийг шийдэхийг оролдож байна.

Алхам 3: Дуу чимээ

Дуу чимээ
Дуу чимээ

Дээрх зураг

Улаан өнгөөр: анхны оролтын дохио

Цэнхэр: боловсруулалтын дараа оролтын дохио

Оролтын дохионы дуу чимээг бууруулах эхний алхам бол түүний шалтгааныг ойлгох явдал байв. Осциллограф дээрх дохиог шалгаж үзэхэд хүчдэлийн огцом өсөлт нь 50 Гц давтамжтай байгааг тогтоожээ. ХБХ -ийн дохио нь servos руу илгээгдэж байгааг 50 Гц давтамжтай мэдсэн юм. Сервогийн хөдөлгөөн нь потенциометрийн V+ зүү дээр хүчдэлийн огцом өсөлтийг бий болгож, улмаар дунд зүү дээрх уншилтыг алдагдуулж байна гэж би таамаглав.

Энд би дуу чимээг бууруулах анхны оролдлогоо хийсэн юм. Би servo бүрийг дахин нээж, потенциометрийн V+ зүүгээс утас нэмэв. Тэднийг уншихын тулд надад Arduino Uno -оос илүү аналог оролт хэрэгтэй байсан тул би яг энэ үед Arduino Mega руу шилжсэн. Миний кодонд би өнцгийн оролтыг дунд зүү дээрх хүчдэлийн аналоги уншилтаас дунд зүү дээрх хүчдэл ба V+ зүү дээрх хүчдэлийн харьцаа болгон өөрчилсөн. Миний найдаж байсан зүйл бол тээглүүр дээр хүчдэлийн огцом өсөлт байсан бол энэ нь харьцаагаар хүчингүй болно.

Би бүх зүйлийг буцааж хийж, туршиж үзсэн боловч нэмэгдсэн хэвээр байна. Энэ үед миний хийх ёстой зүйл бол миний бодлыг судлах явдал байв. Үүний оронд миний дараагийн санаа бол потенциометрийг бүхэлд нь тусдаа цахилгаан тэжээлд оруулах явдал байв. Би V+ утсыг Arduino дээрх аналог оролтоос салгаж, тусдаа тэжээлийн эх үүсвэрт холбосон. Би өмнө нь тээглүүрийг туршиж үзсэн тул ямар хүчдэлд тэжээхийг мэдэж байсан. Би бас servo бүрийн хяналтын самбар ба V+ зүү хоёрын холболтыг таслав. Би бүгдийг буцааж тавиад өнцгийн оролтын кодыг өмнөх шиг нь буцааж, дараа нь туршиж үзсэн. Хүлээгдэж байснаар оролтын зүү дээр хүчдэлийн огцом өсөлт гарсангүй. Гэсэн хэдий ч шинэ асуудал гарч ирэв - потенциометрийг тусдаа цахилгаан тэжээлд оруулах нь servos -ийн дотоод хяналтын гогцоог бүрэн сүйтгэв. Хэдийгээр V+ тээглүүр нь өмнөх хүчдэлийг хүлээн авсан ч servo -ийн хөдөлгөөн тогтворгүй, тогтворгүй байв.

Яагаад ийм зүйл болсныг би ойлгоогүй тул эцэст нь servo -д газардсан холболтоо шалгасан. Газар даяар дунджаар 0.3 вольтын хүчдэлийн уналт байсан бөгөөд servos гүйдэл татах үед энэ нь бүр илүү огцом нэмэгдсэн байна. Эдгээр тээглүүрийг "газар" гэж үзэхээ больж, "лавлах" тээглүүрээр дүрслэх нь илүү дээр байсан нь надад тодорхой байсан. Серво дахь хяналтын самбар нь потенциометрийн дунд зүү дээрх хүчдэлийг V+ ба лавлагааны зүү дээрх хүчдэлтэй харьцуулж хэмжсэн байх ёстой. Потенциометрийг тусад нь ажиллуулах нь харьцангуй хэмжилтийг алдагдуулдаг, учир нь одоо бүх зүү дээр хүчдэл нэмэгдэхийн оронд энэ нь зөвхөн лавлах зүү дээр болсон юм.

Миний зөвлөгч, доктор Маллох надад энэ бүгдийг засахад тусалсан бөгөөд бусад зүүтэй харьцуулахад дунд зүү дээрх хүчдэлийг хэмжихийг санал болгов. Энэ бол өнцгийн оролтын дуу чимээг бууруулах гурав дахь сүүлчийн оролдлогынхоо төлөө би хийсэн зүйл юм. Би servo бүрийг онгойлгож, тасалсан утсаа дахин холбож, потенциометрийн лавлах зүүгээс ирж буй гурав дахь утсыг нэмэв. Би кодондоо өнцгийн оролтыг дараах илэрхийлэлтэй тэнцүү болгосон: (дунд зүү - лавлах зүү) / (V+зүү - лавлах зүү). Би үүнийг туршиж үзсэн бөгөөд энэ нь хүчдэлийн үсрэлтийн нөлөөг амжилттай бууруулсан. Нэмж дурдахад би энэ оролт дээр EWMA шүүлтүүр тавьсан. Энэхүү боловсруулсан дохио болон анхны дохиог дээрх зураг дээр үзүүлэв.

Алхам 4: Аливаа зүйлийг боох

Аливаа зүйлийг боох
Аливаа зүйлийг боох

Дуу чимээний асуудлыг өөрийн чадлынхаа хэрээр шийдсэн тул би дизайныхаа эцсийн хэсгүүдийг засаж, хийж эхлэв. Гар нь суурийн servo -д хэт их ачаалал өгч байсан тул би том холхивч ашиглан гарны жинг дэмждэг шинэ суурийг хийв. Би ч гэсэн бариулыг хэвлээд, ажиллуулахын тулд бага зэрэг зүлгүүр хийсэн.

Эцсийн үр дүнд би маш их баяртай байна. Зөн совинтой хөдөлгөөн төлөвлөлт нь тууштай ажилладаг бөгөөд бүх зүйлийг харгалзан хөдөлгөөн нь жигд, үнэн зөв байдаг. Хэрэв өөр хэн нэгэн энэ төслийг хийхийг хүсч байсан бол би эхлээд үүнийг илүү энгийн хувилбар болгохыг уриалж байна. Хожим нь хоббогийн servo мотор ашиглан ийм зүйл хийх нь маш гэнэн байсан бөгөөд үүнийг ажиллуулахад надад тулгарч байсан бэрхшээл нь үүнийг харуулах болно. Гар сайн ажиллаж байгаа шигээ үүнийг гайхамшиг гэж би боддог. Би компьютертэй харьцах, илүү нарийн төвөгтэй програм ажиллуулах, илүү нарийвчлалтай хөдлөх чадвартай робот гар хийхийг хүсч байгаа тул дараагийн төслийнхөө төлөө үүнийг хийх болно. Би өндөр чанартай дижитал робот техникийн servo ашиглах бөгөөд энэ нь надад энэ төсөлд тулгарсан олон бэрхшээлээс зайлсхийх болно гэж найдаж байна.

CAD баримт бичиг:

cad.onshape.com/documents/818ea878dda7ca2f…

Зөвлөмж болгож буй: