فهرست مطالب:

ربات ردیاب توپ: 8 مرحله
ربات ردیاب توپ: 8 مرحله

تصویری: ربات ردیاب توپ: 8 مرحله

تصویری: ربات ردیاب توپ: 8 مرحله
تصویری: گوز زدن پریانکا چوپرا هنرپیشه بالیوود در یکی از برنامه های لایف تلویزیونی |C&C 2024, جولای
Anonim
ربات ردیاب توپ
ربات ردیاب توپ
ربات ردیاب توپ
ربات ردیاب توپ
ربات ردیاب توپ
ربات ردیاب توپ

بنابراین در این مقاله ، من می خواهم بگویم که چگونه یک ربات ردیاب توپ بسازم که یک ربات یک توپ را شناسایی کرده و آن را دنبال می کند. این اساساً یک روش نظارت خودکار است که می تواند در دنیای مدرن استفاده شود. بنابراین ، فقط اجازه دهید وارد شویم و شروع به ساخت کنیم…

توجه: این تکلیف بخشی است که به دانشگاه دیکین ، دانشکده فناوری اطلاعات ، توسعه سیستم های جاسازی شده SIT-210 ارسال شده است

تدارکات

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

مرحله 1: مقدمه

معرفی
معرفی

نظارت امروز یک عیب بزرگ را ایجاد می کند ، این است که بر مشارکت انسان ها استوار است ، همانطور که همه می دانیم می توان به راحتی حواس خود را پرت کرد ، بنابراین کشف سیستمی که بتواند به طور خودکار و مداوم بر مناطق نظارت کند ، بسیار مهم بود. و همچنین می خواهیم در حین تصمیم گیری ، چیزها و خطرات ناخوشایند یا ناخواسته را شناسایی کرده و بر اساس آن واکنش نشان دهیم. بنابراین ردیابی اشیاء با استفاده از سیستم های هوشمند و رایانه ها برای دستیابی به نظارت خودکار ضروری و حیاتی است.

هر سیستم نظارتی در فضای باز باید بتواند اجسام در حال حرکت در محدوده دید خود را ردیابی کند ، این اشیا را طبقه بندی کرده و برخی از فعالیت های آنها را تشخیص دهد. من روشی برای ردیابی و طبقه بندی این اشیاء در سناریوهای واقع بینانه ایجاد کرده ام. ردیابی اشیاء در یک دوربین تنها با استفاده از تفریق پس زمینه و به دنبال آن مکاتبات منطقه انجام می شود. این امر نشانه های متعددی از جمله سرعت ، اندازه و فاصله جعبه های محدود کننده را در نظر می گیرد.

مرحله 2: مواد و نرم افزارهای مورد استفاده در این پروژه

مواد و نرم افزارهای مورد استفاده در این پروژه
مواد و نرم افزارهای مورد استفاده در این پروژه
مواد و نرم افزارهای مورد استفاده در این پروژه
مواد و نرم افزارهای مورد استفاده در این پروژه
مواد و نرم افزارهای مورد استفاده در این پروژه
مواد و نرم افزارهای مورد استفاده در این پروژه

قطعات سخت افزاری مورد استفاده:

  • تمشک پای (x1)
  • ماژول دوربین رزبری پای (x1)
  • سنسور اولتراسونیک (x3)
  • درایورهای موتور SparkFun Dual H-Bridge L298 (x1)
  • موتور DC (x1)
  • تخته نان (x1)
  • اتصال سیم ها

نرم افزار مورد استفاده:

OpenCV

ابزار دست:

پایتون

مرحله 3: چه باید کرد؟

هر سیستم نظارتی در فضای باز باید بتواند اجسام در حال حرکت در محدوده دید خود را ردیابی کند ، این اشیا را طبقه بندی کرده و برخی از فعالیت های آنها را تشخیص دهد. من روشی برای ردیابی و طبقه بندی این اشیاء در سناریوهای واقع بینانه ایجاد کرده ام. ردیابی اشیاء در یک دوربین تنها با استفاده از تفریق پس زمینه و به دنبال آن مکاتبات منطقه انجام می شود. این امر نشانه های متعددی از جمله سرعت ، اندازه و فاصله جعبه های محدود کننده را در نظر می گیرد.

نکته مهم در تشخیص فریم به فریم این بود که از افتادن فریم اجتناب شود ، زیرا اگر ربات به دلیل افت فریم متوجه جهت حرکت توپ نشود ، ربات می تواند به حالت لامبو برود. اگر توپ از محدوده دوربین خارج شود ، وارد حالت لایمبو می شود ، در این صورت ، ربات 360 درجه می چرخد تا فضای اطراف خود را مشاهده کند تا توپ در قاب دوربین بازگردد. دوربین و سپس حرکت در جهت آن را شروع کنید.

برای تجزیه و تحلیل تصویر ، من هر فریم را می گیرم و سپس آن را با رنگ مورد نیاز می پوشانم. سپس همه خطوط را پیدا می کنم و بزرگترین آنها را پیدا می کنم و آن را به شکل مستطیل می بندم. و مستطیل را روی تصویر اصلی نشان دهید و مختصات مرکز مستطیل را بیابید.

در نهایت ، ربات سعی می کند مختصات توپ را به مرکز محور مختصات خود برساند. این روبات به این شکل کار می کند. این را می توان با استفاده از یک دستگاه اینترنت اشیا مانند ذره فوتون افزایش داد که می تواند به شما اطلاع دهد وقتی چیزی تشخیص داده می شود و اینکه ربات آن را دنبال می کند یا زمانی که ربات مسیر آن را از دست داده و اکنون به پایگاه باز می گردد ، مطلع می شود. به

به منظور پردازش تصویر ، باید نرم افزار OpenCV را روی تمشک pi خود نصب کنید که برای من بسیار مشکل بود.

از طریق این پیوند می توانید اطلاعات مورد نیاز برای نصب OpenCV را دریافت کنید: اینجا را کلیک کنید

مرحله 4: شماتیک

Image
Image
طرحواره ها
طرحواره ها
طرحواره ها
طرحواره ها

در بالا من نمودارهای پروژه خود را ارائه کرده ام و به همراه آن مدار چاپی (PCB) است.

و در اینجا برخی از اتصالات اصلی که باید انجام دهید آورده شده است:

• اول از همه ماژول Raspberry Pi Camera مستقیماً به Raspberry Pi متصل است.

• سنسورهای اولتراسونیک VCC به ترمینال مشترک متصل است GND (زمین) و دو پورت باقی مانده سنسور اولتراسونیک به پین های GPIO در رزبری پای متصل است.

• موتورها با استفاده از H-Bridge متصل می شوند.

• برق با استفاده از باتری تامین می شود.

من همچنین ویدئویی را اضافه کرده ام که ممکن است به درک عملکرد سنسور اولتراسونیک و نحوه عملکرد آن کمک کند.

و اگر نمی توانید ویدیوی بالا را پیدا کنید ، می توانید این پیوند را دنبال کنید.

مرحله 5: چگونه انجام دهیم؟

من این پروژه را با نشان دادن یک ربات اصلی که می تواند توپ را ردیابی کند ، طراحی کردم. این ربات از یک دوربین برای پردازش تصویر با گرفتن فریم و ردیابی توپ استفاده می کند. برای ردیابی توپ از ویژگی های مختلفی مانند رنگ ، اندازه ، شکل آن استفاده می شود.

ربات یک رنگ کد دار پیدا می کند و سپس توپ آن رنگ را جستجو می کند و آن را دنبال می کند. من Raspberry Pi را به عنوان میکروکنترلر در این پروژه انتخاب کردم زیرا به ما امکان می دهد از ماژول دوربین آن استفاده کنیم و انعطاف پذیری بالایی در کد می دهد زیرا از زبان پایتون بسیار کاربر پسند استفاده می کند و همچنین به ما اجازه می دهد از کتابخانه OpenCV برای تجزیه و تحلیل تصاویر استفاده کنیم.

از H-Bridge برای تغییر جهت چرخش موتورها یا توقف آنها استفاده شده است.

برای تجزیه و تحلیل تصویر ، من هر فریم را می گیرم و سپس آن را با رنگ مورد نیاز می پوشانم. سپس همه خطوط را پیدا می کنم و بزرگترین آنها را پیدا می کنم و آن را به شکل مستطیل می بندم. و مستطیل را روی تصویر اصلی نشان دهید و مختصات مرکز مستطیل را بیابید.

در نهایت ، ربات سعی می کند مختصات توپ را به مرکز محور مختصات خود برساند. این روبات به این شکل کار می کند. این را می توان با استفاده از یک دستگاه اینترنت اشیا مانند ذره فوتون افزایش داد که به شما امکان می دهد در صورت تشخیص یک چیز و اینکه ربات آن را دنبال می کند یا زمانی که ربات مسیر خود را از دست داده است و اکنون به پایگاه برمی گردد ، مطلع شوید. به و برای این کار از یک پلت فرم نرم افزاری آنلاین استفاده می کنیم که دستگاه ها را به هم متصل می کند و به آنها اجازه می دهد تا اقدامات خاصی را در مورد محرک های خاصی که محرک های IFTTT هستند انجام دهند.

مرحله 6: شبه کد

شبه کد
شبه کد

در اینجا شبه کد برای بخش تشخیص با استفاده از OpenCV است که در آن ما یک توپ را تشخیص می دهیم.

مرحله 7: کد

کد
کد
کد
کد
کد
کد
کد
کد

در بالا قطعات کد و در زیر توضیحات دقیق کد آمده است.

# بسته های لازم را وارد کنید

ما همه بسته های مورد نیاز را وارد می کنیم

از picamera.array import PiRGBArray #همانطور که مشکل رزولوشن در رزبری pi وجود دارد ، قادر به ضبط فریم توسط VideoCapture نخواهید بود

از واردات picamera PiCamera import RPi. GPIO به عنوان GPIO زمان وارد کردن زمان numpy به عنوان np

اکنون ما سخت افزار را تنظیم کرده و پین های متصل به PI رزبری را تعیین می کنیم

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 #اگر توپ را پیدا کند ، led را روشن می کند

# پین ها را به عنوان خروجی و ورودی تنظیم کنید

GPIO.setup (GPIO_TRIGGER1، GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO1، GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2، GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2) GPIO_TRIGGER3، GPIO. OUT) # راه اندازی GPIO.setup (GPIO_ECHO3، GPIO. IN) GPIO.setup (LED_PIN، GPIO. OUT)

# ماشه را روی False (Low) تنظیم کنید

GPIO.output (GPIO_TRIGGER1 ، False) GPIO.output (GPIO_TRIGGER2 ، False) GPIO.output (GPIO_TRIGGER3 ، نادرست)

این عملکرد از همه سنسورهای اولتراسونیک استفاده می کند که فاصله را از اهداف اطراف ربات ما جمع آوری می کند

# اجازه دهید ماژول حل شود

def sonar (GPIO_TRIGGER، GPIO_ECHO): start = 0 stop = 0 # تنظیم پین ها به عنوان خروجی و ورودی GPIO.setup (GPIO_TRIGGER، GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO، GPIO. IN) # اکو # ماشه را روی غلط تنظیم کنید (کم) GPIO.output (GPIO_TRIGGER ، False) #به ماژول اجازه دهید زمان را حل کند. خواب (0.01) #در فاصله زمانی> 5: #ارسال 10 ضربان قلب برای فعال کردن GPIO.output (GPIO_TRIGGER ، True) time.sleep (0.00001) GPIO. خروجی (GPIO_TRIGGER ، نادرست) شروع = time.time () در حالی که GPIO.input (GPIO_ECHO) == 0 و time.time ()

گرفتن موتورهای DC برای کار با PI رزبری

GPIO.setup (MOTOR1B، GPIO. OUT)

GPIO.setup (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.output (MOTOR2B، GPIO. HIGH) GPIO.output (MOTOR2E، GPIO. LOW) معکوس معکوس (): GPIO.putput (MOTOR1 ، GPIO. LOW) GPIO.output (MOTOR1E، GPIO. HIGH) GPIO.output (MOTOR2B، GPIO. LOW) GPIO.output (MOTOR2E، GPIO. HIGH) def rightturn (): 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 (MOTOR1) ، GPIO. LOW) GPIO.output (MOTOR2B ، GPIO. LOW) GPIO.output (MOTOR2E ، GPIO. HIGH)

def stop ():

GPIO.output (MOTOR1E، GPIO. LOW) GPIO.output (MOTOR1B، GPIO. LOW) GPIO.output (MOTOR2E، GPIO. LOW) GPIO.output (MOTOR2B، GPIO. LOW)

ایجاد کارکرد ماژول دوربین و تنظیم تنظیمات

#دوربین عکاسی

# دوربین را اولیه کنید و مرجعی برای دوربین ضبط دوربین خام = PiCamera () camera.resolution = (160 ، 120) camera.framerate = 16 rawCapture = PiRGBArray (دوربین ، اندازه = (160 ، 120)) # اجازه دهید به دوربین به زمان گرم شدن. خواب (0.001)

در حال حاضر اجرای اصلی که در آن بوت توپ را دنبال می کند و از هرگونه مانع در راه جلوگیری می کند

در حالی که (1 <10): { #فاصله از سنسور اولتراسونیک جلو فاصله C = سونار (GPIO_TRIGGER2، GPIO_ECHO2) #فاصله از سنسور اولتراسونیک سمت راست ، GPIO_ECHO1) if (distanceC = 8: rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) #while found == 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) جلو () time.sleep (0.00625) stop () time.sleep (0.0125) rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #در غیر این صورت به جلو () time.sleep (0.00625) اگر (distanceC> 10): #مختصات توپ را به مرکز محور خیالی دوربین می آورد. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0.025) forward () time.sleep (0.00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)

دیگری:

#اگر توپ را پیدا کند و خیلی نزدیک باشد ، led را روشن می کند. GPIO.output (LED_PIN، GPIO. HIGH) time.sleep (0.1) توقف () time.sleep (0.1) # cv2.imshow ("قرعه کشی" ، قاب) rawCapture.truncate (0) # پاک کردن جریان در آماده سازی برای قاب بعدی}

پاکسازی های لازم را انجام دهید

GPIO.cleanup () #تمام پین های GPIO را #رایگان کنید

مرحله 8: پیوندهای خارجی

پیوند به فیلم تظاهرات: اینجا را کلیک کنید (یوتیوب)

پیوند به کد در Git-hub: اینجا را کلیک کنید (Git-Hub)

توصیه شده: