فهرست مطالب:
- تدارکات
- مرحله 1: مقدمه
- مرحله 2: مواد و نرم افزارهای مورد استفاده در این پروژه
- مرحله 3: چه باید کرد؟
- مرحله 4: شماتیک
- مرحله 5: چگونه انجام دهیم؟
- مرحله 6: شبه کد
- مرحله 7: کد
- مرحله 8: پیوندهای خارجی
تصویری: ربات ردیاب توپ: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
بنابراین در این مقاله ، من می خواهم بگویم که چگونه یک ربات ردیاب توپ بسازم که یک ربات یک توپ را شناسایی کرده و آن را دنبال می کند. این اساساً یک روش نظارت خودکار است که می تواند در دنیای مدرن استفاده شود. بنابراین ، فقط اجازه دهید وارد شویم و شروع به ساخت کنیم…
توجه: این تکلیف بخشی است که به دانشگاه دیکین ، دانشکده فناوری اطلاعات ، توسعه سیستم های جاسازی شده 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: شماتیک
در بالا من نمودارهای پروژه خود را ارائه کرده ام و به همراه آن مدار چاپی (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)
توصیه شده:
ردیاب رومیزی COVID19 با ساعت! ردیاب رزبری پای: 6 مرحله
ردیاب رومیزی COVID19 با ساعت! ردیاب رزبری پای: ما می دانیم که ما می توانیم در هر زمان بمیریم ، حتی من می توانم هنگام نوشتن این پست بمیرم ، به هر حال ، من ، شما ، همه ما فانی هستیم. تمام دنیا به دلیل همه گیری COVID19 لرزید. ما می دانیم چگونه از این امر جلوگیری کنیم ، اما هی! ما می دانیم چگونه دعا کنیم و چرا باید دعا کنیم ، آیا این کار را می کنیم
توپ ربات حیوان خانگی: 10 مرحله (همراه با تصاویر)
توپ روبات حیوان خانگی: سگ حیوان خانگی من عاشق بازی با اسباب بازی ها به ویژه اسباب بازی هایی است که می تواند آنها را تعقیب کند! من یک توپ روباتیک ساختم که روشن می شود و هر زمان که با آن ارتباط برقرار می کند به طور خودکار دور می شود ، از طریق تلفن همراه من به من اطلاع می دهد که می توانم آن را برای کنترل WiFi و باتری استفاده کنم
ربات شادی (Robô Da Alegria) - ربات منبع باز 3D چاپ شده ، ربات Arduino !: 18 مرحله (همراه با تصاویر)
ربات شادی (Robô Da Alegria) - ربات منبع باز سه بعدی ، ربات قدرتمند Arduino!: جایزه اول در مسابقه چرخ های دستورالعمل ، جایزه دوم در مسابقه دستورالعمل های آردوینو و دومین مسابقه در طراحی برای کودکان. با تشکر از همه کسانی که به ما رای دادند! روبات ها به همه جا می رسند. از کاربردهای صنعتی تا
ربات متعادل کننده / ربات 3 چرخ / ربات STEM: 8 مرحله
ربات متعادل کننده / ربات 3 چرخ / ربات STEM: ما یک ربات متعادل کننده و 3 چرخ ترکیبی برای استفاده آموزشی در مدارس و برنامه های آموزشی بعد از مدرسه ساخته ایم. این ربات بر اساس Arduino Uno ، یک سپر سفارشی (تمام جزئیات ساخت ارائه شده است) ، یک باتری لیتیوم یون (همه ساخت
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت - ربات انگشت شست - سرو موتور - کد منبع: 26 مرحله (همراه با تصاویر)
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت | ربات انگشت شست | سرو موتور | کد منبع: ربات انگشت شست از پتانسیومتر سروو موتور MG90S استفاده شده است. بسیار سرگرم کننده و آسان است! کد بسیار ساده است. فقط در حدود 30 خط است. به نظر می رسد یک حرکت ضبط است. لطفاً هر گونه سوال یا بازخوردی بگذارید! [دستورالعمل] کد منبع https: //github.c