Мазмұны:
- Жабдықтар
- 1 -қадам: Кіріспе
- 2-қадам: Бұл жобада қолданылатын материалдар мен жұмсақ бұйымдар
- 3 -қадам: не істеу керек?
- 4 -қадам: Схемалар
- 5 -қадам: Қалай істеу керек?
- 6-қадам: жалған код
- 7 -қадам: код
- 8 -қадам: Сыртқы сілтемелер
Бейне: Допты бақылайтын робот: 8 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Сонымен, мен допты қадағалайтын роботты қалай жасау керектігін айтамын, ол робот, ол допты анықтайды және оны қадағалайды. Бұл негізінен қазіргі әлемде қолдануға болатын автоматтандырылған бақылау әдісі. Ендеше, жай ғана еніп, құрылысты бастайық …
ЕСКЕРТПЕ: Бұл бөлім Дикин университетіне, IT мектебіне, SIT-210 енгізілген жүйелерді әзірлеуге берілген
Жабдықтар
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
1 -қадам: Кіріспе
Бүгінгі бақылаудың маңызды кемшілігі бар, ол адамдардың қатысуына негізделген, біз білетініміздей, олардың назарын оңай аударуға болады, сондықтан аймақтарды автономды және үздіксіз бақылай алатын жүйені табу біздің маңыздылығымыз болды. Сонымен қатар, біз бір уақытта шешім қабылдай отырып, жағымсыз немесе қажет емес нәрселер мен қауіптерді анықтағымыз келеді және соған сәйкес жауап бергіміз келеді. Автоматтандырылған бақылауға қол жеткізу үшін интеллектуалды жүйелер мен компьютерлердің көмегімен объектілерді бақылау маңызды және шешуші болып табылады.
Сыртқы бақылаудың кез келген жүйесі өз аумағында қозғалатын объектілерді бақылай алады, осы объектілерді жіктей алады және олардың кейбір әрекеттерін анықтай алады. Мен бұл объектілерді шынайы сценарийлерде бақылау және жіктеу әдісін жасадым. Бір камерада объектілерді бақылау фондық шегеру арқылы орындалады, содан кейін аймақ сәйкестігі. Бұл шектеу қораптарының жылдамдығын, өлшемін және қашықтығын қоса алғанда, бірнеше белгілерді ескереді.
2-қадам: Бұл жобада қолданылатын материалдар мен жұмсақ бұйымдар
Қолданылатын аппараттық компоненттер:
- Raspberry Pi (x1)
- Raspberry Pi камера модулі (x1)
- Ультрадыбыстық сенсор (x3)
- SparkFun Dual H-Bridge мотор драйверлері L298 (x1)
- Тұрақты ток қозғалтқышы (x1)
- Нан тақтасы (x1)
- Қосылатын сымдар
Қолданылған бағдарламалық қамтамасыз ету:
OpenCV
Қол құралдары:
Python
3 -қадам: не істеу керек?
Кез келген сыртқы бақылау жүйесі өзінің қарау аймағында қозғалатын объектілерді бақылай алады, осы объектілерді жіктей алады және олардың кейбір әрекеттерін анықтай алады. Мен бұл объектілерді шынайы сценарийлерде бақылау және жіктеу әдісін жасадым. Бір камерада объектілерді бақылау фондық шегеру арқылы орындалады, содан кейін аймақ сәйкестігі. Бұл шектеу қораптарының жылдамдығын, өлшемін және қашықтығын қоса алғанда, бірнеше белгілерді ескереді.
Кадрлық суреттерді анықтау кезінде маңызды нәрсе кадрдың түсуін болдырмау болды, өйткені егер бот кадрдың түсуіне байланысты доптың қозғалыс бағытын байқамаса, бот шектеулі күйге түсуі мүмкін. Егер доп камера диапазонынан шықса, ол біз шектелген күйге енеді, бұл жағдайда бот 360 градусқа бұрылып, доп шеңберге оралғанша айналасындағы кеңістікті қарайды. камера, содан кейін өз бағытымен қозғала бастайды.
Кескінді талдау үшін мен әр кадрды аламын, содан кейін оны қажетті түспен бояймын. Содан кейін мен барлық контурларды тауып, олардың ішіндегі ең үлкенін тауып, оны тіктөртбұрышқа байладым. Ал негізгі суретте тіктөртбұрышты көрсетіп, тіктөртбұрыштың центрінің координаттарын табыңыз.
Ақырында, бот доптың координаттарын өзінің координат осінің ортасына келтіруге тырысады. Робот осылай жұмыс істейді. Мұны фотон бөлшегі тәрізді IoT құрылғысын қолдану арқылы жақсартуға болады, ол сізге бірдеңе анықталғанда және робот оның соңынан келе жатқанында немесе робот ізін жоғалтып, енді базаға оралғанда хабарлауға мүмкіндік береді..
Кескінді өңдеу үшін таңқурай pi -ге OpenCV бағдарламалық жасақтамасын орнату қажет, бұл мен үшін өте қиын болды.
OpenCV орнату үшін қажетті ақпаратты мына сілтеме арқылы ала аласыз: мына жерді басыңыз
4 -қадам: Схемалар
Жоғарыда мен өз жобамның схемасын ұсындым және онымен бірге Баспа схемасы (ПХД) бар.
Міне, сізге қажет негізгі байланыстар:
• Біріншіден, Raspberry Pi Camera модулі Raspberry Pi -ге тікелей қосылған.
• Ультрадыбыстық сенсорлар VCC жалпы терминалға GND (жер) арқылы қосылады, ал ультрадыбыстық сенсордың қалған екі порты Raspberry Pi -дегі GPIO түйреуіштеріне қосылады.
• Қозғалтқыштар H-Bridge көмегімен қосылады.
• Қуат Батарея көмегімен беріледі.
Мен сондай -ақ ультрадыбыстық сенсордың жұмысын және оның қалай жұмыс істейтінін түсінуге көмектесетін бейнені қостым.
сонымен қатар жоғарыдағы бейнені таба алмасаңыз, мына сілтемеге өтуге болады.
5 -қадам: Қалай істеу керек?
Мен бұл жобада допты қадағалай алатын негізгі робот бейнеленген. Робот кадрларды алу және допты бақылау арқылы суретті өңдеу үшін камераны пайдаланады. Допты қадағалау үшін оның түсі, өлшемі, пішіні сияқты әр түрлі мүмкіндіктер қолданылады.
Робот қатты кодталған түсті табады, содан кейін сол түсті шарды іздейді және оған сәйкес жүреді. Мен бұл жобада Raspberry Pi-ді микроконтроллер ретінде таңдадым, себебі ол бізге камера модулін пайдалануға мүмкіндік береді және кодта үлкен икемділік береді, өйткені ол питон тілін қолданады, ол пайдаланушыларға өте ыңғайлы, сонымен қатар суреттерді талдау үшін OpenCV кітапханасын пайдалануға мүмкіндік береді.
H-көпірі қозғалтқыштардың айналу бағытын өзгертуге немесе оларды тоқтатуға арналған.
Кескінді талдау үшін мен әр кадрды аламын, содан кейін оны қажетті түспен бояймын. Содан кейін мен барлық контурларды тауып, олардың ішіндегі ең үлкенін тауып, оны тіктөртбұрышқа байладым. Ал негізгі суретте тіктөртбұрышты көрсетіп, тіктөртбұрыштың центрінің координаттарын табыңыз.
Ақырында, бот доптың координаттарын өзінің координат осінің ортасына келтіруге тырысады. Робот осылай жұмыс істейді. Мұны фотон бөлшегі тәрізді IoT құрылғысын қолдану арқылы жақсартуға болады, ол сізге бірдеңе анықталғанда және робот оның соңынан келе жатқанында немесе робот ізін жоғалтып, енді базаға оралғанда хабарлауға мүмкіндік береді.. Мұны істеу үшін біз құрылғыларды қосатын және IFTTT триггерлері болып табылатын арнайы триггерлерде белгілі бір әрекеттерді орындауға мүмкіндік беретін онлайн -бағдарламалық платформаны қолданатын боламыз.
6-қадам: жалған код
Міне, біз допты анықтайтын OpenCV көмегімен анықтау бөлігінің жалған коды.
7 -қадам: код
Жоғарыда код үзінділері, ал төменде кодтың толық сипаттамасы берілген.
# қажетті пакеттерді импорттаңыз
БАРЛЫҚ ҚАЖЕТТІ пакеттерді импорттаймыз
picamera.array импортынан PiRGBArray #Таңқурай pi -де шешілу мәселесі болғандықтан, VideoCapture арқылы кадрларды түсіре алмайды
пикамера импортынан PiCamera импорт RPi. GPIO ретінде GPIO импорттық уақыт импорты np
ҚАЗІР БІЗ ЖАБДЫҚТЫ РЕТТЕП, РАСПБЕРРИ ПИ -ге қосылған PIN -кодтарды тағайындаймыз
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Сол жақ ультрадыбыстық сенсор
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Алдыңғы ультрадыбыстық сенсор
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Оң жақ ультрадыбыстық сенсор
GPIO_ECHO3 = 35
MOTOR1B = 18 #Сол жақ мотор
MOTOR1E = 22
MOTOR2B = 21 #Оң мотор
MOTOR2E = 19
LED_PIN = 13 #Егер ол допты тапса, онда ол жарықдиодты жанады
# Ілгектерді шығыс және кіріс ретінде орнатыңыз
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # GPIO.setugger (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # GPIO.set Trigger (GPIO_ECHO2, GPIO. IN) GPIO.set GPIO_TRIGGER3, GPIO. OUT) # GPIO.setugger (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Триггерді False (Low) күйіне орнатыңыз
GPIO. шығысы (GPIO_TRIGGER1, жалған) GPIO. шығысы (GPIO_TRIGGER2, жалған)
БҰЛ ФУНКЦИЯ УЛТРАСОНДЫҚ СЕНСОРЛАРДЫҢ БӘРІН ҚОЛДАНАДЫ, БОТЫМЫЗДАҒЫ ОБЕКТІЛЕРДЕН Дистанцияны жинайды.
# Модульді реттеуге рұқсат етіңіз
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # PIN және шығыс ретінде түйреуіштерді орнату GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Эхо # триггерді False күйіне орнату (Төмен) GPIO.output (GPIO_TRIGGER, False) #Модульге уақытты ұйықтауға рұқсат ету.ұйықтау (0.01) #арақашықтық> 5: #GPIO.output (GPIO_TRIGGER, True) уақытын іске қосу үшін 10us импульсін жіберіңіз. Ұйқы (0.00001) GPIO. шығару (GPIO_TRIGGER, False) begin = time.time (), ал GPIO.input (GPIO_ECHO) == 0 және time.time ()
DC MOTORS -ті RASPBERRY PI -мен жұмыс істеуге алу
GPIO. орнату (MOTOR1B, GPIO. OUT)
GPIO. орнату (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
РОБОТТЫ ОРНАТУ ЖӘНЕ ОНЫ БАҒЫТТЫ БАҒЫТТА ҚОЛДАНДЫРУ ФУНКЦИЯЛАРЫН АНЫҚТАУ
def forward ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW), GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) defotturnurn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E), GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)
def stop ():
GPIO. шығысы (MOTOR1E, GPIO. LOW) GPIO. шығысы (MOTOR1B, GPIO. LOW)
КАМЕРА МОДУЛІН ЖҰМЫС ЖАСАУ ЖӘНЕ ПАРАМЕТРЛЕРДІ РЕТТЕУ
#КАМЕРА ТҮСІРУ
# камераны инициализациялаңыз және шикі камераны түсіру камерасына сілтеме алыңыз = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (камера, өлшемі = (160, 120)) # камераға рұқсат етіңіз жылыну уақытына ұйықтау (0,001)
ЕНДІ БҰТТЫҚ ДОҢДАН КЕЙІН НЕГІЗГІ ОРЫНДАУ ЖӘНЕ КЕДІГІР КЕДЕРГІЛІКТЕН АУЫРУ.
while (1 <10): { #қашықтық ультрадыбыстық сенсордың арақашықтығынан келедіC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #оң жақ ультрадыбыстық сенсордың қашықтығынан келетін қашықтықR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #сол жақ ультрадыбыстық сенсордың қашықтығыL = сонар (GPIO_TRIGG1), GPIO_ECHO1) if (қашықтықC = 8: оңға бұрылу () уақыт.ұйық (0.00625) тоқтау () уақыт.ұйық (0.0125) алға () уақыт.ұйық (0.00625) аялдама () уақыт.ұйық (0.0125) #табылғанда == 0: солға бұрылу () уақыт.ұйық (0,00625) элиф қашықтығыL> = 8: солға бұрылу () уақыт.ұйықтау (0,00625) тоқтау () уақыт.ұйықтау (0,0125) алға () уақыт.ұйық (0,00625) тоқтау () уақыт.ұйқы (0.0125) оңға бұрылу () уақыт.ұйық (0.00625) тоқтау () уақыт.ұйықтау (0.0125) басқа: тоқтату () уақыт.ұйықтау (0.01) басқа: #әйтпесе ол алға жылжиды () уақыт.ұйықтау (0.00625) егер (қашықтықC> 10): #it шардың координаттарын камераның қиял осіне әкеледі. if (centre_x = 20): if (centre_x0): flag = 1 солға бұрылу () time.sleep (0.025) алға () time.sleep (0.00003125)) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)
басқа:
#егер ол допты тапса және ол тым жақын болса, онда ол жарықдиодты жанады. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow («draw», frame) rawCapture.truncate (0) # дайындық кезінде ағынды тазарту келесі кадр}
ҚАЖЕТТІ ТІЗІМДЕРДІ ЖАСАҢЫЗ
GPIO.cleanup () #барлық GPIO түйреуіштерін босатады
8 -қадам: Сыртқы сілтемелер
Демонстрациялық бейнеге сілтеме: мына жерді басыңыз (Youtube)
Git-hub кодына сілтеме: мына жерді басыңыз (Git-Hub)
Ұсынылған:
BLUETOOTH арқылы дауысты бақылайтын робот: 3 қадам
BLUETOOTH арқылы дауысты бақылайтын робот: Бұл роботты біздің телефон басқарады. Қолданбаға сілтеме: https://play.google.com/store/apps/details?id=com….Бұл роботты біздің дауыс басқарады. Сонымен қатар, оны батырмалар арқылы басқаруға болады. Бұл робот тек демонстрацияға арналған
Пинго: Қозғалысты анықтайтын және жоғары дәлдіктегі пинг-понгтан допты ұшыру: 8 қадам
Пинго: Қозғалысты анықтайтын және жоғары дәлдіктегі пинг-понгтан допты ұшырушы: Кевин Нитиема, Эстебан Поведа, Энтони Маттакчиона, Рафаэль Кей
WIFI бақылайтын ZUMO робот: 3 қадам
WIFI БАСҚАРЫЛҒАН ZUMO ROBOT: Жабдықтарға шолу: RedBearLab CC3200: Texas Instrument SimpleLink CC3200 құрылғысы сымсыз MCU болып табылады, ол 80 МГц жиілікке дейін жұмыс істейтін жоғары сапалы ARM Cortex-M4 ядросын біріктіреді, бұл бір ғана IC көмегімен тұтас қосымшаны әзірлеуге мүмкіндік береді
Допты гольф детекторы: 5 қадам
Гольф допының детекторы: мен гольф ойыншысы емеспін, бірақ мен анда -санда ойнаймын. Мен допты алысырақ соғу клуб пен гольф доптарының жылдамдығына қатысты екенін естідім, бірақ мен қаншалықты жылдам соққанымды білмедім. Менде Mouser -ден OmniPreSense радар сенсоры болды және олар жүктейтін қосымшаны жүктедім
PID басқарылатын допты теңестіретін Стюарт платформасы: 6 қадам
PID басқарылатын допты теңестіретін Стюарт платформасы: мотивация және жалпы түсінік: Физик ретінде мен жаттығуда физикалық жүйелерге қызығамын және түсінуге тырысамын. Мен күрделі мәселелерді олардың негізгі және негізгі ингредиенттеріне бөлу арқылы шешуге үйреттім, содан кейін