این آموزش بخشی است از: کیت هوشمند ماشین SunFounder Rasberry Pi Pico Pico 4WD
فایلهای مرتبط با این گروه به صورت یکجا نمایش داده خواهند شد. لینک سایر ویدیوها در زیر این مطلب قرار دارد.
درس ۹ از ۱۰: اجتناب از مانع با استفاده از خودروی هوشمند ۴ چرخ محرک Raspberry Pi Pico
مقدمه
این راهنما، بر اساس درس ۹ از ۱۰ دوره آموزشی Robojax، نحوه ساخت ربات اجتناب از مانع با استفاده از کیت خودروی هوشمند ۴ چرخ SunFounder Raspberry Pi Pico را نشان میدهد. این پروژه حساس(حس کننده) اولتراسونیک چرخان با سروو و کنترل موتور را ترکیب میکند تا رباتی بسازد که بتواند بهطور مستقل در محیط حرکت کند. با چرخش حساس(حس کننده) مانند رادار، خودرو موانع را تشخیص میدهد و هوشمندانه مسیر باز را برای ادامه حرکت انتخاب میکند، که آن را به مقدمهای عالی برای رباتیک، یکپارچهسازی حساس(حس کننده) و ناوبری مستقل تبدیل میکند.
این پروژه فقط یک اسباببازی نیست؛ بلکه پایهای برای بسیاری از کاربردهای عملی است. در اینجا چند ایده برای الهام گرفتن شما آورده شده است:
- ربات اکتشاف مستقل: رباتی بسازید که بتواند یک اتاق یا منطقه بیرونی را بدون دخالت انسان نقشهبرداری و کاوش کند.
- جاروبرقی هوشمند: از همان اصول برای ساخت رباتی استفاده کنید که در حین تمیزکاری، در اتاق حرکت کرده و از مبلمان و دیوارها اجتناب کند.
- ربات گشت امنیتی: خودرو را برنامهریزی کنید تا محیطی را گشتزنی کند و از حساس(حس کننده) اولتراسونیک برای تشخیص و گزارش موانع یا نفوذهای غیرمنتظره استفاده کند.
- پلتفرم آموزشی برای هوش مصنوعی: از این پروژه بهعنوان پلهای برای یادگیری الگوریتمهای پیچیدهتر مانند مسیریابی و مکانیابی و نقشهبرداری همزمان (SLAM) استفاده کنید.
این درس بر منطق اصلی و کدی تمرکز دارد که خودرو را قادر به تصمیمگیری میکند. خودرو از یک موتور سروو برای چرخاندن حساس(حس کننده) اولتراسونیک استفاده میکند که مانند رادار فاصلهها را از ۰ تا ۱۸۰ درجه اندازهگیری میکند. شِفر (کود) این دادهها را تحلیل میکند تا وسیعترین مسیر خالی را پیدا کند و خودرو را بر این اساس به جلو، چپ یا راست هدایت کند. ویدیو کل فرآیند را از آزمایش اجزای جداگانه تا اجرای الگوریتم نهایی اجتناب از مانع در یک پیچوخم واقعی نشان میدهد.
سختافزار/قطعات
این پروژه بر اساس کیت خودروی هوشمند ۴ چرخ SunFounder Raspberry Pi Pico است. اجزای ضروری استفادهشده در این درس عبارتند از:
- برد میکروکنترلر Raspberry Pi Pico
- شاسی خودروی هوشمند ۴ چرخ SunFounder با چهار موتور
- برد درایور موتور
- حساس(حس کننده) فاصله اولتراسونیک (نوع HC-SR04)
- موتور سروو (برای چرخاندن حساس(حس کننده) اولتراسونیک)
- منبع تغذیه (باتریهای خودرو)
راهنمای سیمکشی
کیت SunFounder برای مونتاژ آسان طراحی شده است و سیمکشی معمولاً از طریق یک برد توسعه اختصاصی از پیش متصل است. حساس(حس کننده) اولتراسونیک روی موتور سروو نصب شده است که سپس به برد کنترل اصلی متصل میشود. این راهاندازی به حساس(حس کننده) اجازه میدهد تا برای اسکن محیط بچرخد. برای نمودار سیمکشی دقیق مخصوص کیت خود، لطفاً به مستندات رسمی SunFounder مراجعه کنید.
اتصالات اصلی شامل پایههای تریگر و اکو حساس(حس کننده) اولتراسونیک و پایه سیگنال موتور سروو است که همگی به پایههای GPIO خاصی روی Raspberry Pi Pico متصل میشوند. درایور موتور نیز برای کنترل چهار موتور محرک به Pico متصل است. ویدیو اشاره میکند که مستندات کامل، از جمله نمودارهای سیمکشی، برای دانلود با کیت موجود است.
توضیح شِفر (کود)
این درس بر منطق موجود در مثال `obstacle_avoid` تمرکز دارد. شِفر (کود) به زبان MicroPython نوشته شده است. در حالی که برنامه کامل برای دانلود موجود است، ما بر پارامترهای کلیدی و قابل تنظیم توسط کاربر که رفتار خودرو را کنترل میکنند، تمرکز خواهیم کرد. این پارامترها معمولاً در بالای اسکریپت یافت میشوند.
در اینجا متغیرهای اصلی که میتوانید برای تنظیم دقیق عملکرد ربات خود تنظیم کنید، آورده شده است:
# پارامترهای رادار و حرکت
radar_reference = 20 # حداقل فاصله بر حسب سانتیمتر که ایمن در نظر گرفته میشود
step_angle = 10 # افزایش زاویه برای هر مرحله اسکن رادار
forward_speed = 30 # سرعت موتور برای حرکت به جلو (۰-۱۰۰)
turn_speed = 50 # سرعت موتور برای چرخش (۰-۱۰۰)
forward_scan_angle = 50 # زاویهای که سروو هنگام عدم تشخیص مانع اسکن میکند
- radar_reference: این فاصله ایمنی حیاتی بر حسب سانتیمتر است. اگر مانعی نزدیکتر از این مقدار تشخیص داده شود، خودرو آن را "خطر" در نظر گرفته و مانور اجتناب را آغاز میکند. در ویدیو، این مقدار روی ۲۰ سانتیمتر تنظیم شده است.
- step_angle: این وضوح اسکن رادار را تعریف میکند. مقدار کوچکتر (مثلاً ۱۰ درجه) به معنای اسکن دقیقتر اما زمانبرتر است. مقدار بزرگتر سریعتر خواهد بود اما ممکن است موانع باریک را از دست بدهد.
- forward_speed و turn_speed: اینها قدرت ارسالی به موتورها را کنترل میکنند. میتوانید آنها را برای تغییر سرعت و چابکی کلی خودرو تنظیم کنید. سرعت چرخش معمولاً بالاتر تنظیم میشود تا اطمینان حاصل شود خودرو میتواند بهطور مؤثر بچرخد.
- forward_scan_angle: وقتی خطر فوری در جلو نیست، خودرو اسکن خود را به این زاویه (متمرکز بر جلو) محدود میکند تا موانع را بیشتر در مسیر مستقیم خود بررسی کند و حرکت رو به جلو نرمتری را امکانپذیر کند.
این ویدیو همچنین منطق اصلی تصمیمگیری را توضیح میدهد. یک تابع `get_direction()` فهرست خوانشهای فاصله (که به ۱ و ۰ برای ایمن/ناایمن تبدیل شدهاند) را تحلیل میکند تا وسیعترین مسیر پیوسته از "۱"ها را پیدا کند. بر اساس محل این وسیعترین مسیر، تابع یک جهت برمیگرداند: "جلو"، "چپ" یا "راست". حلقه اصلی سپس عمل مربوطه را اجرا میکند، ماشین را میچرخاند و دوباره اسکن میکند تا زمانی که مسیر جلو روشن شود.
پروژه/نمایش زنده
این ویدیو نمایش کاملی از پروژه ارائه میدهد. ابتدا با آزمایش حساس(حس کننده) اولتراسونیک به تنهایی شروع میشود تا نشان دهد چگونه فاصله را اندازهگیری میکند و مقادیر را در شل چاپ میکند. سپس مربی الگوریتم اجتناب از مانع را با استفاده از یک فلوچارت توضیح میدهد و فرآیند تصمیمگیری برای چرخش به چپ و راست را شرح میدهد. در نهایت، ماشین در یک پیچوخم کوچک ساختهشده از جعبهها قرار میگیرد تا رفتار کامل اجتناب از مانع را در عمل نشان دهد. ماشین با موفقیت در پیچوخم حرکت میکند و به چپ و راست میچرخد تا مسیر روشنی به جلو پیدا کند.
بخشهای ویدیو
- [00:00] مقدمهای بر اجتناب از مانع
- [01:31] مروری بر کیت ماشین هوشمند SunFounder و ویژگیها
- [02:47] نحوه عملکرد ویژگی اجتناب از مانع
- [03:34] آزمایش حساس(حس کننده) اولتراسونیک
- [07:45] توضیح الگوریتم اجتناب از مانع و فلوچارت
- [12:49] تحلیل شِفر (کود) اصلی اجتناب از مانع
- [15:43] نمایش زنده منطق اجتناب از مانع
- [22:53] نمایش نهایی با پیچوخم موانع
- [24:35] نتیجهگیری و مراحل بعدی
این آموزش بخشی از: کیت هوشمند ماشین SunFounder Rasberry Pi Pico Pico 4WD
- دوره درس ۱ از ۱۰: کیت ماشین هوشمند ۴WD Raspberry Pi Pico از SunFounder توسط Robojax
- درس ۲ از ۱۰: پایتون پایه برای راهاندازی کیت ماشین هوشمند ۴ چرخ محرک Raspberry Pi Pico
- دوره درس ۳ از ۱۰: مونتاژ کیت ماشین هوشمند ۴WD Raspberry Pi Pico از SunFounder توسط Robojax
- درس ۴ از ۱۰: برد توسعه Raspberry Pi Pico برای کیت ماشین هوشمند ۴WD
- درس ۵ از ۱۰: کنترل LED RGB WS2812B با استفاده از Raspberry Pi Pico
- درس ۶ از ۱۰: کنترل موتورهای DC با استفاده از کیت ماشین هوشمند ۴WD Raspberry Pi Pico
- درس ۷ از ۱۰: ردیابی خط، تشخیص لبه کالیبراسیون حساس(حس کننده) خاکستری ماشین رزبریپای پیکو
- درس ۸ از ۱۰: ماشین هوشمند Raspberry Pi Pico – درس ۸: موتور سروو و دنبال کردن شیء
- درس ۱۰ از ۱۰: کنترل کیت ماشین هوشمند ۴ چرخ محرک Raspberry Pi Pico با اپلیکیشن موبایل
# Lesson 9/10 Pi Car Pico 4WD: Obstacle avoid
# Download and resource page https://robojax.com/RJT631
import pico_4wd as car
import time
car.RADAR_REFERENCE = 20
car.RADAR_STEP_ANGLE = 10
MOTOR_FORWARD_POWER = 30
MOTOR_TURNING_POWER = 50
FORWARD_SCAN_ANGLE = 50
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
status = "Danger"
def get_dir(radar_data):
# get scan status of 0, 1
# print(radar_data)
radar_data = [str(i) for i in radar_data]
radar_data = "".join(radar_data)
# Split 0, leaves the free path
paths = radar_data.split("0")
# print(paths)
# print("paths: %s" % paths)
length_list = []
# Calculate where is the widest
for path in paths:
length_list.append(len(path))
if max(length_list) < 4:
return "left"
# Calculate the direction of the widest
i = length_list.index(max(length_list))
pos = radar_data.index(paths[i])
pos += (len(paths[i]) - 1) / 2
delta = len(radar_data) / 3
if pos < delta:
return "left"
elif pos > 2 * delta:
return "right"
else:
return "forward"
def main():
global status
# General
while True:
radar_data = car.radar_scan()
# print("radar_data: %s" % radar_data)
# If radar data return a int, means scan not finished, and the int is current angle status
if isinstance(radar_data, int):
if radar_data == 0 and status != "Danger":
print("Danger!")
status = "Danger"
car.move("stop")
car.set_radar_scan_angle(180)
continue
else:
status = "Save"
direction = get_dir(radar_data)
if direction == "left":
print("turn left")
distance = car.get_radar_distance_at(-FORWARD_SCAN_ANGLE/2)
time.sleep(0.5)
car.move("left", MOTOR_TURNING_POWER)
while True:
distance = car.get_radar_distance_at(-FORWARD_SCAN_ANGLE/2)
status = car.get_radar_status(distance)
if status == 1:
break
car.move("stop")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
elif direction == "right":
print("turn right")
distance = car.get_radar_distance_at(FORWARD_SCAN_ANGLE/2)
time.sleep(0.5)
car.move("right", MOTOR_TURNING_POWER)
while True:
distance = car.get_radar_distance_at(FORWARD_SCAN_ANGLE/2)
status = car.get_radar_status(distance)
if status == 1:
break
car.move("stop")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
else:
print("forward")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
car.move("forward", MOTOR_FORWARD_POWER)
try:
main()
finally:
car.move("stop")
car.set_light_off()
Common Course Links
- Purchase SunFounder Pico 4WD Smart Car Kit from AliExpress
- Purchase SunFounder Pico 4WD Smart Car Kit from eBay
- Amazon Canada: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon France: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Germany: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Italy: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Japan: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Spain: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon UK: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon USA: Purchase Pico 4WD Smart Car Kit buy SunFounder
- Purchase Pico 4WD Smart Car Kit from SunFounder.com
- SunFounder Pico-4wd Car Kit Documentation
- Video Play List of 10 lesson on SunFounder Pico 4WD Smart Car Kit
مواردی که ممکن است به آنها نیاز داشته باشید
-
علیاکسپرسکیفیت و خرید کیت ماشین هوشمند 4WD Pico از علیاکسپرسs.click.aliexpress.com
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
شِفر (کود) رزبری پای
-
Sunfounder's Raspberry Pi Pico 4WD card codesall the codes for the Sunfounder's Raspberry Pi Pico 4WD
pico_4wd_car-main.zip0.02 MB