آموزش برنامه‌نویسی CarBot: از مبتدی تا پیشرفته سطح مبتدی حرکت پایه، کنترل LED، حسگرهای ساده سطح متوسط تشخیص موانع، تعقیب خط، کنترل PID سطح پیشرفته اتوپایلوت، SLAM، هوش مصنوعی راهنمای سطوح مبتدی متوسط پیشرفته راهنمای کد ;initializeAI("CIL-Mobile-Cmd") ();enableAutopilot ();processCameraData } if (detectedObject) (); mapEnvironment ; () calculateOptimalPath { حرکت به جلو چرخش LED کنترل تشخیص موانع تعقیب خط PID کنترل هوش مصنوعی رانندگی خودکار SLAM CarBot

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

10 مثال کاربردی برای آموزش علاقه‌مندان ربات CarBot

سطح مبتدی

1. سیستم کنترل حرکت اساسی با تایمر

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

1. آغاز با بلوک `start`
2. حرکت به جلو با استفاده از `forward&BackwardAtSpeed` با سرعت 150
3. استفاده از بلوک `wait` با مقدار 3000 میلی‌ثانیه
4. استفاده از بلوک `moveLeft&Right` با مقادیر 150 برای چپ و 0 برای راست (گردش به چپ)
5. استفاده از بلوک `wait` با مقدار 2000 میلی‌ثانیه
6. استفاده از `movementStop` برای توقف کامل ربات

چالش تکمیلی: دانش‌آموزان می‌توانند ربات را طوری برنامه‌ریزی کنند که یک مسیر مربعی شکل را طی کند.

2. کنترل LED با حسگرهای محیطی

هدف: آشنایی با استفاده از حسگرها و کنترل خروجی‌های ربات مهارت‌های آموزشی: خواندن داده‌های حسگرها، ساختار شرطی، کنترل LED

1. شروع با بلوک `forever` برای اجرای مداوم
2. استفاده از بلوک شرطی `if...else`
3. در قسمت شرط: `lightSensor` > 50
4. در بخش if: استفاده از بلوک `brightness` با مقدار 0 (LED خاموش)
5. در بخش else: استفاده از بلوک `brightness` با مقدار 100 (LED روشن)
6. افزودن یک بلوک `wait` با مقدار 500 میلی‌ثانیه برای ثبات

چالش تکمیلی: تنظیم روشنایی LED به صورت متناسب با مقدار نور محیط.

3. سیستم هشدار موانع با اولتراسونیک

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

1. شروع با بلوک `forever`
2. استفاده از ساختار `if...else if...else`
3. در شرط اول: `ultrasonicSensor` < 20
4. در بخش اول if: استفاده از بلوک `soundType` با پارامتر "high" + بلوک `wait` 200ms
5. در شرط دوم: `ultrasonicSensor` < 50
6. در بخش دوم if: استفاده از بلوک `soundType` با پارامتر "medium" + بلوک `wait` 500ms
7. در بخش else: استفاده از بلوک `soundType` با پارامتر "low" + بلوک `wait` 1000ms

چالش تکمیلی: اضافه کردن واکنش حرکتی مانند توقف یا تغییر مسیر هنگام نزدیک شدن به موانع.

سطح متوسط

4. سیستم ناوبری هوشمند با تشخیص موانع

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

1. شروع با بلوک `forever`
2. استفاده از بلوک `if...else`
3. در قسمت شرط: `ultrasonicSensor` < 30
4. در بخش if:
   a. استفاده از بلوک `movementStop`
   b. استفاده از بلوک `brightness` با مقدار 100 (روشن کردن LED)
   c. استفاده از بلوک `wait` با مقدار 500ms
   d. استفاده از بلوک `moveLeft&Right` با مقادیر 0 برای چپ و 150 برای راست
   e. استفاده از بلوک `wait` با مقدار 1500ms
   f. استفاده از بلوک `brightness` با مقدار 0 (خاموش کردن LED)
5. در بخش else:
   a. استفاده از بلوک `forward&BackwardAtSpeed` با سرعت 120

چالش تکمیلی: افزودن یک الگوریتم جستجوی بازگشتی برای یافتن بهترین مسیر در صورت برخورد با موانع متعدد.

5. تعقیب‌کننده خط با کنترل PID ساده

هدف: طراحی یک سیستم تعقیب خط با استفاده از حسگرهای نوری و کنترل PID ساده مهارت‌های آموزشی: الگوریتم PID، کالیبراسیون حسگر، کنترل حرکت دقیق

1. تعریف متغیرهای `targetValue = 50`, `Kp = 0.5`, `error = 0`, `correction = 0`
2. شروع با بلوک `forever`
3. محاسبه خطا: `error = lightSensorLeft - lightSensorRight`
4. محاسبه تصحیح: `correction = Kp * error`
5. استفاده از بلوک `moveLeft&Right` با مقادیر:
   a. چپ = 100 - correction
   b. راست = 100 + correction
6. افزودن بلوک `wait` با مقدار 50ms برای کنترل نرم

چالش تکمیلی: افزودن ضرایب I و D به الگوریتم کنترل برای بهبود عملکرد تعقیب خط.

6. سیستم تشخیص اشیاء با واکنش هوشمند

هدف: استفاده از قابلیت تشخیص اشیاء CarBot برای ایجاد واکنش‌های متفاوت به اشیاء مختلف مهارت‌های آموزشی: کار با مدل‌های تشخیص اشیاء، برنامه‌ریزی رفتاری، استفاده از رویدادها

1. استفاده از بلوک `start` برای تنظیمات اولیه
2. استفاده از بلوک `objectDetection` با پارامتر "person"
3. در بخش `detect_tasks`:
   a. استفاده از بلوک `soundType` با پارامتر "high"
   b. استفاده از بلوک `brightness` با مقدار 100
   c. استفاده از بلوک `forward&BackwardAtSpeed` با سرعت 60
4. استفاده از بلوک `objectDetection` با پارامتر "car"
5. در بخش `detect_tasks`:
   a. استفاده از بلوک `soundType` با پارامتر "medium"
   b. استفاده از بلوک `movementStop`
   c. استفاده از بلوک `brightness` با مقدار 0

چالش تکمیلی: ایجاد یک سیستم امتیازدهی که بر اساس نوع و تعداد اشیاء شناسایی شده امتیاز جمع‌آوری کند.

سطح پیشرفته

7. اتوپایلوت با یادگیری تقلیدی

هدف: پیاده‌سازی سیستم اتوپایلوت پیشرفته با استفاده از مدل‌های یادگیری تقلیدی OpenBot مهارت‌های آموزشی: کار با مدل‌های هوش مصنوعی پیشرفته، درک یادگیری تقلیدی، تنظیم پارامترهای مدل

1. استفاده از بلوک `start`
2. استفاده از بلوک `display_sensors` برای نمایش `battery_voltage`
3. استفاده از ساختار شرطی `if`
4. در قسمت شرط: `battery_voltage` > 7.5
5. در بخش if:
   a. استفاده از بلوک `autopilot` با مدل "CIL-Mobile-Cmd"
   b. تنظیم پارامتر confidence threshold به 0.8
   c. تنظیم پارامتر max speed به 150
   d. افزودن بلوک `sound.tone` با پارامتر "beep"
6. در بخش else:
   a. استفاده از بلوک `soundType` با پارامتر "low"
   b. استفاده از بلوک `movementStop`
   c. استفاده از بلوک `display_status` با پیام "ولتاژ باتری ناکافی"

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

8. سیستم SLAM ساده با نقشه‌برداری محیط

هدف: پیاده‌سازی یک سیستم مکان‌یابی و نقشه‌برداری همزمان (SLAM) ساده مهارت‌های آموزشی: ادغام داده‌های چندگانه حسگرها، الگوریتم‌های نقشه‌برداری، مفاهیم SLAM

1. تعریف آرایه دوبعدی `map[20][20]` برای ذخیره‌سازی نقشه
2. تعریف متغیرهای `posX = 10`, `posY = 10`, `orientation = 0`
3. استفاده از بلوک `start`
4. استفاده از بلوک `forever`:
   a. بروزرسانی موقعیت با استفاده از داده‌های `wheelOdometerSensors`
   b. به‌روزرسانی نقشه با داده‌های `ultrasonicSensor`
   c. استفاده از بلوک `display_map` (سفارشی) برای نمایش نقشه جاری
   d. استفاده از بلوک `navigateToUnexplored` (سفارشی) برای حرکت به نواحی کاوش‌نشده
   e. افزودن بلوک `wait` با مقدار 100ms

چالش تکمیلی: پیاده‌سازی یک الگوریتم مسیریابی که بتواند کوتاه‌ترین مسیر را بین دو نقطه در نقشه ایجادشده پیدا کند.

9. سیستم ناوبری مبتنی بر دید کامپیوتری با PilotNet

هدف: ایجاد یک سیستم ناوبری پیشرفته با استفاده از مدل PilotNet و دوربین مهارت‌های آموزشی: پردازش تصویر، کار با مدل‌های یادگیری عمیق، هماهنگی سیستم‌های بینایی و حرکتی

1. استفاده از بلوک `start`
2. استفاده از بلوک `camera_initialization` با تنظیم resolution = "640x480"
3. استفاده از بلوک `model_initialization` با پارامتر "PilotNet-Goal"
4. استفاده از بلوک `display_status` با پیام "سیستم ناوبری آماده"
5. تعریف هدف با بلوک `set_goal_coordinates` با مختصات x=50, y=100
6. استفاده از بلوک `forever`:
   a. استفاده از بلوک `camera_process` برای پردازش تصویر جاری
   b. استفاده از بلوک `navigateForwardAndLeft` با مدل "PilotNet-Goal"
   c. استفاده از ساختار شرطی برای بررسی رسیدن به هدف
   d. استفاده از بلوک‌های واکنش مناسب برای موانع شناسایی‌شده

چالش تکمیلی: اضافه کردن قابلیت شناسایی و دنبال کردن یک هدف متحرک با استفاده از دوربین.

10. سیستم ربات گروهی با ارتباط بلوتوث

هدف: پیاده‌سازی یک سیستم چند رباتی که با یکدیگر ارتباط برقرار کرده و همکاری می‌کنند مهارت‌های آموزشی: ارتباطات بی‌سیم، الگوریتم‌های رفتار گروهی، هماهنگی چندعاملی

1. تعریف پارامترهای ارتباطی: `deviceID`, `groupID`, `role` (leader/follower)
2. استفاده از بلوک `start`
3. استفاده از بلوک `bluetooth_initialization` با پارامترهای تعریف‌شده
4. استفاده از ساختار شرطی برای تعیین رفتار بر اساس نقش:
   a. برای "leader":
      i. استفاده از بلوک `objectDetection` برای شناسایی مسیر
      ii. محاسبه مسیر بهینه
      iii. ارسال اطلاعات مسیر به پیروان با بلوک `bluetooth_send`
      iv. حرکت در مسیر با بلوک‌های حرکتی مناسب
   b. برای "follower":
      i. دریافت اطلاعات از رهبر با بلوک `bluetooth_receive`
      ii. محاسبه مسیر نسبی بر اساس داده‌های دریافتی
      iii. حرکت در مسیر محاسبه‌شده با فاصله مناسب
5. استفاده از بلوک `collision_avoidance` برای جلوگیری از برخورد ربات‌ها

چالش تکمیلی: طراحی یک الگوریتم پیشرفته برای تشکیل الگوهای گروهی متحرک مانند دسته پرندگان یا ماهی‌ها.

پیمایش به بالا