Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай зүйлүүд:
- Алхам 2: АЖИЛЛАХ ЗАРЧИМ:
- Алхам 3: Оролт, боловсруулалт:
- Алхам 4:
- Алхам 5:
- Алхам 6: Боловсруулах хэсэг:
- Алхам 7:
- Алхам 8:
- Алхам 9:
- Алхам 10:
- Алхам 11:
- Алхам 12: ХӨДӨЛГӨӨНИЙ ХЯНАЛТ:
- Алхам 13:
Видео: Gesture Hawk: Зургийн боловсруулалтанд суурилсан интерфэйсийг ашиглан гараар удирддаг робот: 13 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Gesture Hawk нь TechEvince 4.0 дээр дүрс боловсруулахад суурилсан хүний машины интерфейс хэлбэрээр харуулагдсан. Дифференциал жолоодох зарчмаар ажилладаг робот машиныг удирдахын тулд бээлийгээс өөр нэмэлт мэдрэгч, өмсдөг зүйл шаардлагагүй байдаг нь түүний ашиг тус юм. Энэхүү зааварчилгаанд бид системд ашиглагдаж буй объектуудыг хянах, дохио зангаа илрүүлэх ажлын зарчмыг авч үзэх болно. Энэхүү төслийн эх кодыг Github-аас https://github.com/shwetank6044/gesture-hawk.git линкээр татаж авах боломжтой.
Алхам 1: Шаардлагатай зүйлүүд:
- L298N мотор драйвер
- DC мотор
- Робот машины явах эд анги
- Ардуино Уно
- LiPo батерей
- Arduino USB кабель (урт)
- Python програмтай OpenCV номын сан
Алхам 2: АЖИЛЛАХ ЗАРЧИМ:
Gesture Hawk бол гурван үе шаттай боловсруулах систем бөгөөд дээрх диаграмаас харж болно.
Алхам 3: Оролт, боловсруулалт:
Оролт барихыг дээрх диаграммд өгөгдсөн илүү өргөн хүрээний ангиллаар ойлгож болно.
Гарын хэлбэрийг хүрээлэн буй орчноос гаргаж авахын тулд бид тодорхой өнгөний маск эсвэл шүүлтүүр (энэ тохиолдолд ягаан цэнхэр) ашиглах хэрэгтэй. Үүнийг хийхийн тулд та зургийг дараах кодын хэсгийг ашиглан BGR -ээс HSV формат руу хөрвүүлэх хэрэгтэй.
hsv = cv2.cvtColor (хүрээ, cv2. COLOR_BGR2HSV)
Одоо дараагийн алхам бол гар эсвэл маскаар шүүлтүүрээр дамжуулан гаргаж авах HSV параметрүүдийн хүссэн хүрээг олох явдал юм. Үүний тулд тохирох хүрээг олохын тулд төмөр зам ашиглах нь хамгийн сайн арга юм. Энэхүү төсөлд ашиглагдах зам мөрний дэлгэцийн агшинг энд харуулав.
Алхам 4:
Алхам 5:
Энд маск бүтээх ийм мөрийг хийхийн тулд доор өгсөн кодын хэсэг байна:
cv2 импортлох
npdef юу ч биш (x) гэж импортлох: cv2.namedWindow ('зураг') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'зураг', 110, 255, юу ч биш) cv2.createTrackbar ('l_S ',' image ', 50, 255, юу ч биш) cv2.createTrackbar (' l_V ',' image ', 50, 255, юу ч биш) cv2.createTrackbar (' h_H ',' image ', 130, 255, юу ч биш) cv2. createTrackbar ('h_S', 'image', 255, 255, юу ч биш) cv2.createTrackbar ('h_V', 'image', 255, 255, юу ч биш) while (1): _, frame = img.read ()
hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'image') lS = cv2.getTrackbarPos ('l_S', 'image') lV = cv2.getTrackVPos, ' 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'image') low_R = np. массив ([lH, lS, lV]) дээд_R = np.мөрөл ([hH, hS, hV]) маск = cv2.inRange (hsv, доод_R, дээд_R) res = cv2.bitwise_and (хүрээ, хүрээ, маск = маск) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF if k == 27: break cv2.destroyAllWindows ()
Алхам 6: Боловсруулах хэсэг:
За, бид гарны геометрийн хэлбэртэй болсон, одоо үүнийг ашиглаж, гар дохио зангаа тодорхойлоход ашиглах цаг болжээ.
Гүдгэр их бие:
Гүдгэр их биетэйгээр бид хэлбэрийн хэт цэгүүдээр ойролцоогоор олон өнцөгтийг байрлуулахыг хичээдэг. Зүүн талд байгаа зураг нь гүдгэр цэгүүдээр улаанаар тэмдэглэгдсэн хэлбэрт өгөгдсөн ойролцоо полигоныг харуулав.
Гүдгэр цэгүүд нь ойролцоо олон өнцөгтийн талаас хамгийн алслагдсан хэлбэртэй цэгүүд юм. Гэхдээ гүдгэр биетэй холбоотой асуудал бол түүнийг тооцоолох явцад бид бүх гүдгэр цэгүүдийн массивыг авах болно, гэхдээ бидэнд хэрэгтэй зүйл бол цэнхэр үзүүртэй гүдгэр цэг юм. Энэ нь яагаад шаардлагатай байгааг бид танд хэлэх болно.
Энэ гүдгэр цэгийг олохын тулд бид хамгийн ойр талтай гүдгэр цэгийн зайг олох перпендикуляр зайн томъёог ашиглах хэрэгтэй. Цэнхэр үзүүртэй цэг нь хажуу талаасаа хамгийн их зайтай болохыг бид ажигласан тул бид энэ цэгийг олж авлаа.
Алхам 7:
Алхам 8:
Дараа нь бид эрхий хурууны үзүүрийг (эсвэл туйлын цэгийг) хэвтээ байрлалтай энэ гүдгэр цэг рүү холбосон шугамын налууг олох хэрэгтэй.
Алхам 9:
Дээрх тохиолдолд дохио зангаа зүүн тийш эргэх тохиолдолд α өнцөг нь 0-90 градусын хооронд байх ёстой. Энэ нь tan (α) эерэг байх ёстой.
Алхам 10:
Дээрх тохиолдолд, хэрэв дохио зангаа баруун тийш эргэх бол α өнцөг нь 180-90 градусын хооронд байх ёстой. Энэ нь tan (α) нь сөрөг байх ёстой.
Тиймээс, хэрэв Тан α эерэг байвал зүүн эргэх болно. Хэрэв Tan α сөрөг байвал баруун тийш эргэ. Одоо хамгийн чухал зогсоох командыг хэрхэн илрүүлэхийг харах цаг болжээ.
Энд заасан харьцааг (цохилт, туршилтаар олсон) шалгаж, хамгийн их тохиолдолд энэ зайны харьцаа энэ хязгаарт хэвээр байна.
Алхам 11:
Эцэст нь хэлэхэд урд талын хөдөлгөөнийг OpenCV дээрх matchShape () функцээр шинжилдэг. Энэ функц нь дээрх тоолуурын гурвалжин дээрх сургалтын жишээг дээрх зургийн зүүн талын контуртай харьцуулсан хоёр тоолуурын хэлбэрийг харьцуулдаг. Энэ нь хоёр контур хэлбэрийн өөрчлөлтийн дагуу 0 -ээс 2 эсвэл 3 хүртэлх утгыг буцаана. Үүнтэй ижил контурын хувьд энэ нь 0 -ийг буцаана.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Энд cn1 ба cnt2 нь харьцуулах ёстой хоёр хэлбэр юм.
Алхам 12: ХӨДӨЛГӨӨНИЙ ХЯНАЛТ:
PySerial:
Бид python -ийн PySerial номын санг ашиглан боловсруулсан өгөгдлийг Arduino USB кабелиар дамжуулан Arduino Uno руу дамжуулах зорилгоор цуваа өгөгдөл болгон хөрвүүлэв. Тодорхой дохио зангаа opencv-ээр илрүүлсний дараа бид 'x' гэсэн түр зуурын хувьсагч үүсгэж, түүнд ямар нэгэн өвөрмөц утгыг өгөөд дараах командын мөрийг ашиглан цуваа оролт болгон хөрвүүлэв.
Pyserial номын санг импортлохын тулд цуваа #импортлох
Цуваа ('', baudrate = '9600', timeout = '0') # цуваа гаралтыг тохируулах.. PORT NAME бол өгөгдөл дамжуулах портны нэр юм.
serial.write (b'x ') # x бол порт руу илгээсэн цагаан толгой … b нь энэ мөрийг байт болгон хөрвүүлэх явдал юм.
Arduino боловсруулах:
Одоо arduino -ийг кодчилсон бөгөөд өөр өөр x цуваа бүрийг роботын жигд хөдөлгөөнийг хариуцдаг тодорхой үйлдэлд шугаман зураглуулдаг (зүүн хөдөлгөөнийг илрүүлэх нь хөдөлгүүрийг баруун тийш эргүүлэхэд хүргэдэг). Кодыг зөв өөрчилснөөр бид дугуй тус бүрийн хөдөлгөөнийг орчуулгын болон эргэлтийн байдлаар хянах боломжтой.
L298N мотор драйвер:-
Мотор драйвер нь мотор ба тэжээлийн эх үүсвэрийн хооронд зуучлагчаар ашиглагддаг тул бага хүчдэлийн түвшингээс болж моторыг шууд асаах боломжгүй байдаг. Li-Po Battery нь 12V оролтын терминалдаа холбогдсон бөгөөд бид arduino-ийн 5V залгуурыг моторт драйверын 5V оролттой холбож, эцэст нь Li-Po болон ардуиног мотор драйверийн нийтлэг залгуурт холбодог.
Одоо моторын терминалууд өгөгдсөн залгуурт холбогдсон байна. Эцэст нь бид моторын оролтын терминалуудыг arduino -ийн ХОУХ -ны гаралтын залгуурт холбож, хөдөлгөөний эргэлт, орчуулгын асуудлыг нарийвчлан шийдэх боломжийг олгодог.
Зөвлөмж болгож буй:
SCARA робот: Фовард ба урвуу кинематикийн талаар суралцах !!! (Plot Twist нь PRODUCTING ашиглан ARDUINO дээр бодит цагийн интерфэйсийг хэрхэн хийхийг сурах болно !!!!): 5 алхам (зурагтай)
SCARA робот: Фовард ба урвуу кинематикийн талаар суралцах !!! (Plot Twist PROCESSING ашиглан ARDUINO дээр бодит цагийн интерфэйсийг хэрхэн хийхийг сурах !!!!): SCARA робот бол салбарын ертөнцөд маш алдартай машин юм. Энэ нэр нь сонгомол нийцтэй угсралтын роботын гар эсвэл сонгомол нийцтэй үений роботын аль алиныг илэрхийлдэг. Энэ бол үндсэндээ гурван градусын эрх чөлөөний робот бөгөөд эхний хоёр дисплей юм
IOT дээр суурилсан дохио зангаагаар удирддаг робот: 10 алхам (зурагтай)
IOT -д суурилсан дохио зангаагаар удирддаг робот: Энэхүү робот бол дохио зангаагаар удирддаг бөгөөд интернетийн тусламжтайгаар хаанаас ч удирдах боломжтой робот юм. Энэхүү төслийн хурдатгал хэмжигч MPU 6050 нь бидний гарын хөдөлгөөний талаархи мэдээллийг цуглуулахад ашиглагддаг. Энэ нь бидний гарны хурдатгалыг гурван хэсэгт хэмждэг
Плотти Ботти: Интернетээр удирддаг зургийн робот! 10 алхам
Плотти Ботти: Интернетээр удирддаг зургийн робот
Дижитал зургийн зургийн жааз, WiFi холбосон - Raspberry Pi: 4 алхам (зурагтай)
Дижитал гэрэл зургийн зургийн жааз, WiFi холбосон - Raspberry Pi: Энэ бол дижитал зургийн жааз руу орох маш хялбар бөгөөд хямд өртөгтэй зам юм. Файл дамжуулах (үнэгүй) програмыг ашиглан "дарж чирж" WiFi -ээр зураг нэмэх, устгах давуу талтай. . Үүнийг 4.50 фунт стерлинг болох Pi Zero -ээр тэжээх боломжтой. Та мөн шилжүүлж болно
Ардуино UNO ашиглан 4 оронтой дэлгэцийн интерфэйсийг хэрхэн яаж хийх вэ: 6 алхам (зурагтай)
Ардуино НҮБ-тай 4 оронтой дэлгэцийн интерфэйсийг хэрхэн яаж хийх вэ: Энэ заавар нь 4 оронтой дэлгэцийг Arduino UNO-той хамт ашиглах үндсэн аргуудыг заах болно