Мазмуну:
- 1 -кадам: КЕРЕКТҮҮ нерселер:
- 2 -кадам: ЭМГЕК ПРИНЦИПИ:
- 3 -кадам: Киргизүү жана иштетүү:
- 4 -кадам:
- 5 -кадам:
- 6 -кадам: БОЛУШТУ БОЛУШ:
- 7 -кадам:
- 8 -кадам:
- 9 -кадам:
- 10 -кадам:
- 11 -кадам:
- 12 -кадам: КЫЙМЫЛДЫ БАШКАРУУ:
- 13 -кадам:
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Gesture Hawk TechEvince 4.0де жөнөкөй сүрөт иштетүүгө негизделген адам-машина интерфейси катары көрсөтүлдү. Анын пайдалуулугу дифференциалдуу айдоо принцибинде иштеген робот машинаны башкаруу үчүн колкаптан башка эч кандай кошумча сенсорлордун же тагынуучу кийимдердин кереги жоктугунда. Бул көрсөтмөдө, биз сизди системада колдонулган объектилерди көзөмөлдөө жана жаңсоолорду аныктоо боюнча иштөө принциби аркылуу алып чыгабыз. Бул долбоордун булак кодун Githubдан шилтеме аркылуу жүктөп алсаңыз болот:
1 -кадам: КЕРЕКТҮҮ нерселер:
- L298N мотор айдоочу
- DC Motors
- Робот машинанын шасси
- Arduino Uno
- LiPo батареялары
- Arduino USB кабели (узун)
- Python менен OpenCV китепканасы
2 -кадам: ЭМГЕК ПРИНЦИПИ:
Gesture Hawk - бул жогоруда көрсөтүлгөн диаграммадан көрүнүп тургандай, үч фазалуу иштетүү системасы.
3 -кадам: Киргизүү жана иштетүү:
Киргизүүнү жогорудагы диаграммада берилген кененирээк категорияларда түшүнсө болот.
Кол формасын айлана -чөйрөдөн алуу үчүн, биз белгилүү бир түстүн маскировкасын же фильтрин колдонушубуз керек (бул учурда - кызгылт көк). Бул үчүн сиз сүрөттү BGRден HSV форматына айландырышыңыз керек, аны төмөнкү коддун үзүндүсү аркылуу жасоого болот.
hsv = cv2.cvtColor (кадр, cv2. COLOR_BGR2HSV)
Эми, кийинки кадам - HSV параметрлеринин керектүү диапазонун табуу, масканы же фильтр аркылуу колун чыгарып алуу. Бул үчүн эң жакшы ыкма - ылайыктуу диапазонду табуу үчүн трек тилкелерин колдонуу. Мына бул долбоор үчүн колдонулган трек тилкесинин скриншоту.
4 -кадам:
5 -кадам:
Бул жерде, маска куруу үчүн мындай тректи жасоо үчүн төмөндө берилген коддун үзүндүсү бар:
cv2 импорттоо
npdef эч нерсе эмес (x): pass cv2.namedWindow ('image') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'image', 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 (кадр, 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.array ([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 градуска чейин болушу керек. Башкача айтканда, тан (α) оң болушу керек.
10 -кадам:
Жогорудагы учурда, эгер ымдоо оңго бурулса α бурчу 180ден 90 градуска чейин болушу керек. Башкача айтканда, тан (α) терс болушу керек.
Демек, эгер Тан α оң болсо, анда солго бурулат. Эгерде Тан α терс болсо, анда оңго бурулат. Эми, эң маанилүү токтоочу буйрукту кантип табууга болорун көрүүгө убакыт келди.
Бул жерде көрсөтүлгөн катыш (хит жана сыноо аркылуу табылган) каралат жана максималдуу учурларда бул аралыктардын катышы ушул белгилүү диапазондо калат.
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 китепканасын импорттоо үчүн сериялык #импорттоо
serial. Serial ('', baudrate = '9600', timeout = '0') # сериялык чыгарууну орнотуу.. ПОРТ АТЫ - бул маалымат бериле турган порттун аты.
serial.write (b'x ') # x портко жөнөтүлгөн алфавит… b бул сапты байтка айландыруу.
Arduino иштетүү:
Эми ардуино коддолгон, ошондуктан ар бир сериялык х роботтун жылмакай кыймылы үчүн жооптуу болгон белгилүү бир иш -аракеттерге сызыктуу түрдө картага түшүрүлгөн (сол кыймылдын аныкталышы моторлорду солго бурууга түрткү берет дейли). Биз кодду туура өзгөртүү менен ар бир дөңгөлөктүн кыймылын трансляциялык, ошондой эле ротациялык көзөмөлдөй алабыз.
L298N мотор айдоочу:-
Мотор драйвери мотор менен энергия булагынын ортосунда ортомчу катары колдонулат, анткени моторлор төмөн чыңалуу рейтингине байланыштуу түздөн -түз иштей албайт. Li-Po Батареясы анын 12В кирүү терминалына туташкан жана биз ардуинонун 5В розеткасын мотор айдоочусунун 5V кирүүчү розеткасына акыры Li-Po менен ардуинону мотор драйверинин жалпы розеткасына туташтырабыз.
Эми моторлордун терминалдары берилген розеткаларга туташтырылган. Акырында, биз мотор үчүн кирүүчү терминалдарды PWM чыгаруу розеткаларына туташтырабыз, бул бизге кыймылдын айлануу жана которуу аспектилерин так чечүүгө мүмкүнчүлүк берет.
Сунушталууда:
RC Controled Rgb Led Strip: 4 кадам (Сүрөттөр менен)
RC Controlled Rgb Led Strip: Бөлмөнүн жекече жарыктандыруусу үчүн RC көзөмөлдөгөн лента тилкесин түзүңүз! Аны өчүрүү же күйгүзүү же түсүн өзгөртүү үчүн ресивердин алдында калышыңыз керек. Бул кызыксыз жана кайра эмес
DIY Image Sensor жана Digital Camera: 14 Steps (Сүрөттөр менен)
DIY сүрөт сенсору жана санарип камера: Интернетте өзүңүздүн кинокамераңызды куруу боюнча көптөгөн окуу куралдары бар, бирок менимче, өз сүрөт сенсорун куруу жөнүндө эч нерсе жок! Текчеде сүрөт сенсорлору көптөгөн компаниялардын интернеттеринде бар жана аларды колдонуу дизайнды жасайт
Walking Strandbeest, Java/Python жана App Controled: 4 Steps (Сүрөттөр менен)
Walking Strandbeest, Java/Python жана App Controlled: Бул Strandbeest комплект Тео Жансен ойлоп тапкан Strandbeestке негизделген DIY эмгеги. Гениалдуу механикалык дизайнга таң калып, аны толук маневрлүүлүк менен, андан кийин компьютердик интеллект менен жабдууну каалайм. Бул көрсөтмөдө, биз биринчи бөлүмдө иштейбиз
Web Controled Rover: 14 Кадам (Сүрөттөр менен)
Web Controlled Rover: Роботторду куруу жана ойноо - бул менин жашоомдогу эң башкы күнөөм. Башкалар гольф же лыжа ойношот, бирок мен роботторду курайм (анткени мен гольф же лыжа ойной албайм :-). Мен аны эс алдыруучу жана кызыктуу деп эсептейм! Ботторумдун көбүн жасаш үчүн, мен шасси комплекттерин колдоном. Комплекттерди колдонуу мага эмне кылууга жардам берет
Quantimetric Image Processing: 5 Steps
Квантиметрдик сүрөт иштетүү: (Жогорудагы сүрөттө сүрөттөрдү иштетүүнүн квантиметрдик ыкмасы менен салыштыруу көрсөтүлөт. Жакшыртылган натыйжага көңүл бургула. Оң жактагы сүрөттө мындай нерселер өлчөнөт деген туура эмес божомолдон келип чыккан кызыктай артефакттар көрсөтүлгөн