Мазмұны:

Допты бақылайтын робот: 8 қадам
Допты бақылайтын робот: 8 қадам

Бейне: Допты бақылайтын робот: 8 қадам

Бейне: Допты бақылайтын робот: 8 қадам
Бейне: ТЕЗ КӨРІҢІЗ! БҰЛ ТУРАЛЫ ҚЫТАЙЛАР ЕШКІМГЕ АЙТПАЙДЫ 2024, Шілде
Anonim
Допты бақылайтын робот
Допты бақылайтын робот
Допты бақылайтын робот
Допты бақылайтын робот
Допты бақылайтын робот
Допты бақылайтын робот

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

ЕСКЕРТПЕ: Бұл бөлім Дикин университетіне, 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 -қадам: Схемалар

Image
Image
Схемалар
Схемалар
Схемалар
Схемалар

Жоғарыда мен өз жобамның схемасын ұсындым және онымен бірге Баспа схемасы (ПХД) бар.

Міне, сізге қажет негізгі байланыстар:

• Біріншіден, 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)

Ұсынылған: