</> Make for Iran – بسازیم برای ایران

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

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›ربات‌های زمینی (UGV)›ساخت AGV دنبال‌کننده خط با OpenCV و Raspberry Pi: ماشین هوشمند کارخانه (فارسی)
ربات‌های زمینی (UGV) پروژه‌ها

ساخت AGV دنبال‌کننده خط با OpenCV و Raspberry Pi: ماشین هوشمند کارخانه (فارسی)

​ ژوئن 11, 2026 1 دقیقه مطالعه
AGV دنبال‌کننده خط OpenCV Raspberry Pi

AGV دنبال‌کننده خط با OpenCV چیست؟ (مبتدی)

در کارخانه‌های مدرن، AGVها (ربات‌های حمل‌ونقل خودکار) معمولاً یک خط رنگی روی کف را دنبال می‌کنند — یک نوار زرد یا سفید که مسیر حرکت را مشخص می‌کند. این روش ساده‌تر و ارزان‌تر از GPS یا LiDAR است.

OpenCV یک کتابخانه پردازش تصویر متن‌باز است که روی Raspberry Pi اجرا می‌شود. دوربین Pi Camera تصویر کف را می‌گیرد، OpenCV خط را شناسایی می‌کند، و یک کنترلر PID موتورها را تنظیم می‌کند تا ربات روی خط بماند.

محصولی که می‌سازید

یک AGV دنبال‌کننده خط با Pi Camera و OpenCV با سرعت ۰.۵m/s.

  • هزینه: ۲ تا ۳ میلیون تومان
  • سرعت: ۰.۳-۰.۵ m/s
  • دقت: ±۱cm از مرکز خط

AGV + Pi Camera خط زرد خطای انحراف = ۲cm Pi Camera → OpenCV → PID → موتور

کد Python — Line Following با OpenCV


import cv2
import numpy as np
import RPi.GPIO as GPIO
import time

# تنظیم موتور L298N
IN1,IN2,IN3,IN4=17,18,27,22
ENA,ENB=12,13  # PWM
GPIO.setmode(GPIO.BCM)
for p in [IN1,IN2,IN3,IN4,ENA,ENB]: GPIO.setup(p,GPIO.OUT)
pwmA = GPIO.PWM(ENA,100); pwmB = GPIO.PWM(ENB,100)
pwmA.start(0); pwmB.start(0)

def setMotors(l,r):
    l = max(-100, min(100, l))
    r = max(-100, min(100, r))
    GPIO.output(IN1, l>0); GPIO.output(IN2, l<0)
    GPIO.output(IN3, r>0); GPIO.output(IN4, r<0)
    pwmA.ChangeDutyCycle(abs(l)); pwmB.ChangeDutyCycle(abs(r))

cap = cv2.VideoCapture(0)
cap.set(3,320); cap.set(4,240)

Kp,Ki,Kd = 0.5, 0.001, 0.1
integral = prev_error = 0

while True:
    ret, frame = cap.read()
    roi = frame[180:240, :]        # فقط ۶۰ پیکسل پایین
    gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(gray, 80, 255, cv2.THRESH_BINARY_INV)

    M = cv2.moments(binary)
    if M["m00"] > 0:
        cx = int(M["m10"] / M["m00"])
        error = cx - 160          # انحراف از مرکز
        integral += error
        derivative = error - prev_error
        correction = Kp*error + Ki*integral + Kd*derivative
        prev_error = error
        setMotors(int(60-correction), int(60+correction))
    else:
        setMotors(0,0)   # خط پیدا نشد

چک‌لیست تنظیم PID

مشکل تنظیم
ربات تند چرخ می‌زند Kp را کاهش دهید
ربات از خط خارج می‌شود Kp را افزایش دهید
لرزش در مسیر مستقیم Kd را افزایش دهید
در پیچ خارج می‌شود Ki را کمی افزایش دهید

Pi Camera ۳۲۰×۲۴۰px OpenCV Threshold+Moment PID Controller خطا → تصحیح L298N موتور AGV AGV خط‌رو — Pi Camera → OpenCV → PID → موتور

ویدئوهای آموزشی


منابع بیشتر

  • آپارات: AGV دنبال خط ربات فارسی
  • OpenCV: Image Thresholding Tutorial
برچسب‌ها: AGV OpenCV PID Raspberry Pi آموزش گام‌به‌گام دنبال‌کننده خط هوشمند کارخانه
​
مطلب بعدی ماژول HC-12 Sub-GHz برای کنترل UAV: تله‌متری ساده UART بدون کتابخانه (فارسی) مطلب قبلی ساخت FPV Racer 5 اینچ از صفر: انتخاب قطعه، لحیم‌کاری، تنظیم Betaflight (فارسی)
</> Make for Iran – بسازیم برای ایران

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

یاد بگیر، بساز، به اشتراک بگذار. جامعه‌ای برای سازندگان، مهندسان و علاقه‌مندان به فناوری در ایران.

دسته‌بندی‌ها

  • پروژه‌ها
  • ربات‌های پرنده (UAV)
  • آموزش
  • ربات‌های زمینی (UGV)
  • الکترونیک
  • پهپاد و مولتی‌روتور

پیوندها

  • خانه
  • درباره ما
  • تماس
  • فید RSS

آخرین مطالب

  • خلاصه دوره ArduPilot/iNAV و گام‌های بعدی (فارسی)
  • رادیو تله‌متری در مقابل LTE/4G برای کنترل از راه دور (فارسی)
  • Ground Station روی موبایل و تبلت — QGroundControl و Solex (فارسی)
  • راه‌اندازی Ground Station با Mission Planner (فارسی)
© 2026 Make for Iran – بسازیم برای ایران. تمامی حقوق محفوظ است.
ساخته شده با ❤️ برای سازندگان ایران  |  ورود