نقشه راه و سرفصل های اموزش pybullet (مرجع اصلی)

بله؛ و اینجا یک نکته مهم را اول روشن کنم: با اضافه کردن پردازش تصویر و هوش مصنوعی، پروژه از مسیر AGV خارج نمی‌شود؛ بلکه ما عمداً پروژه را از یک AGV ساده به یک AMR هوشمند ارتقا می‌دهیم.

در واقع از نظر آموزشی بهترین نام برای پروژه نهایی ما این است:

طراحی و شبیه‌سازی یک ربات متحرک خودران هوشمند برای انبار (AGV → AMR) با PyBullet، بینایی ماشین و هوش مصنوعی

یعنی AGV نقطه شروع ماست و AMR مقصد پروژه.

حالا فهرست ۹۵ جلسه را از اول بازطراحی می‌کنم؛ به‌گونه‌ای که PyBullet، رباتیک، پردازش تصویر، یادگیری ماشین، مسیریابی و هوش مصنوعی از همان اوایل به‌صورت موازی جلو بروند، ولی پروژه هم بیش از حد سنگین و بی‌منطق نشود.


🧭 فهرست کامل دوره

شبیه‌سازی و ساخت ربات خودران هوشمند با PyBullet

از صفر تا AGV/AMR، بینایی ماشین، هوش مصنوعی و Sim-to-Real


فصل ۱ — آشنایی با شبیه‌سازی رباتیک و نصب PyBullet

جلسه ۱ — شبیه‌سازی رباتیک چیست و چرا به آن نیاز داریم؟

  • مفهوم شبیه‌سازی
  • موتور فیزیک چیست؟
  • شبیه‌سازی ربات چیست؟
  • تفاوت دنیای واقعی و شبیه‌سازی
  • Sim-to-Real چیست؟
  • چرا قبل از ساخت ربات واقعی شبیه‌سازی می‌کنیم؟
  • معرفی پروژه نهایی دوره
  • معرفی AGV و AMR
  • مسیر کلی دوره

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


جلسه ۲ — معرفی PyBullet

  • PyBullet چیست؟
  • قابلیت‌های PyBullet
  • کاربرد آن در رباتیک
  • فیزیک و دینامیک
  • شبیه‌سازی سنسورها
  • شبیه‌سازی ربات
  • ارتباط PyBullet با Python
  • محدودیت‌های PyBullet

جلسه ۳ — نصب PyBullet در Windows

  • بررسی Python
  • نصب با pip
  • نصب با Conda
  • ساخت محیط مجازی
  • نصب PyBullet
  • تست نصب
  • اجرای اولین برنامه

جلسه ۴ — نصب PyBullet در Linux

  • آماده‌سازی Python
  • ساخت محیط مجازی
  • نصب PyBullet
  • اجرای GUI
  • مشکلات احتمالی
  • تفاوت Windows و Linux

جلسه ۵ — ساختار حرفه‌ای پروژه Python

ساخت ساختار اولیه:

AGV_Project/
├── main.py
├── robot/
├── world/
├── sensors/
├── vision/
├── navigation/
├── control/
├── mapping/
├── ai/
├── data/
└── utils/
  • مدیریت فایل‌ها
  • Module
  • Package
  • Import
  • Virtual Environment
  • Git مقدماتی

فصل ۲ — مبانی PyBullet و فیزیک شبیه‌سازی

جلسه ۶ — اتصال Python به PyBullet

  • p.connect
  • GUI
  • DIRECT
  • reset
  • disconnect

جلسه ۷ — ساخت دنیای شبیه‌سازی

  • زمین
  • Gravity
  • World
  • Object
  • Simulation

جلسه ۸ — حلقه شبیه‌سازی

  • stepSimulation
  • Time Step
  • Real Time
  • سرعت شبیه‌سازی
  • مفهوم Simulation Loop

جلسه ۹ — مختصات و جهت

  • X/Y/Z
  • Position
  • Orientation
  • Euler
  • Quaternion
  • Coordinate System

جلسه ۱۰ — فیزیک اجسام

  • Mass
  • Friction
  • Restitution
  • Collision
  • Dynamics

جلسه ۱۱ — اولین محیط آزمایشی

ساخت:

  • زمین
  • دیوار
  • مانع
  • چند جسم

و آزمایش رفتار فیزیکی آنها.


فصل ۳ — ساختار ربات و URDF

جلسه ۱۲ — URDF چیست؟

  • Link
  • Joint
  • Base
  • Visual
  • Collision
  • Inertial

جلسه ۱۳ — ساخت اولین ربات با URDF

ساخت یک ربات ساده.

جلسه ۱۴ — مفاصل ربات

  • Fixed
  • Revolute
  • Continuous
  • Joint Limit

جلسه ۱۵ — خواندن اطلاعات ربات

  • getNumJoints
  • getJointInfo
  • شماره مفاصل
  • نام مفاصل

جلسه ۱۶ — کنترل مفاصل

  • Position Control
  • Velocity Control
  • Torque Control
  • setJointMotorControl2

جلسه ۱۷ — دریافت وضعیت مفاصل

  • getJointState
  • Position
  • Velocity
  • Force

جلسه ۱۸ — اولین ربات متحرک

ساخت یک ربات دارای چرخ و حرکت دادن آن.


فصل ۴ — ورود به پروژه AGV

جلسه ۱۹ — AGV و AMR چیستند؟

  • AGV چیست؟
  • AMR چیست؟
  • تفاوت آنها
  • کاربردهای صنعتی
  • چرا پروژه را با AGV شروع می‌کنیم؟

جلسه ۲۰ — Differential Drive

  • ربات دوچرخ محرک چیست؟
  • چرخ محرک
  • چرخ کمکی
  • نحوه چرخش

جلسه ۲۱ — طراحی بدنه AGV

  • بدنه
  • چرخ‌ها
  • Caster
  • ابعاد
  • جرم
  • Collision

جلسه ۲۲ — ساخت URDF کامل AGV

ساخت مدل واقعی AGV.

جلسه ۲۳ — تنظیم فیزیک AGV

  • جرم
  • اصطکاک
  • اصطکاک چرخ
  • لغزش
  • Inertia

جلسه ۲۴ — اولین حرکت AGV

  • حرکت جلو
  • عقب
  • توقف
  • چرخش

خروجی فصل:

🤖 اولین AGV واقعی ما در PyBullet ساخته شده و حرکت می‌کند.


فصل ۵ — کنترل و سینماتیک AGV

جلسه ۲۵ — سینماتیک چیست؟

  • مفهوم Kinematics
  • موقعیت
  • سرعت
  • جهت

جلسه ۲۶ — سینماتیک Differential Drive

رابطه:

سرعت ربات
      ↓
سرعت چرخ چپ و راست

جلسه ۲۷ — کنترل سرعت

  • Linear Velocity
  • Angular Velocity
  • کنترل چرخ‌ها

جلسه ۲۸ — حرکت به نقطه هدف

دادن مختصات:

X = ...
Y = ...

و حرکت AGV به سمت آن.

جلسه ۲۹ — کنترل جهت

AGV باید ابتدا جهت مناسب را انتخاب کند و سپس حرکت کند.

جلسه ۳۰ — کنترلر ساده AGV

ساخت کنترلری که:

هدف را بگیرد → زاویه را محاسبه کند → حرکت کند.


فصل ۶ — Odometry و Localization مقدماتی

جلسه ۳۱ — Odometry چیست؟

چطور ربات از روی چرخ‌هایش بفهمد چقدر حرکت کرده است؟

جلسه ۳۲ — محاسبه مسافت چرخ‌ها

جلسه ۳۳ — محاسبه موقعیت AGV

  • X
  • Y
  • Heading

جلسه ۳۴ — Dead Reckoning

حرکت بدون استفاده از GPS یا نقشه خارجی.

جلسه ۳۵ — خطای Odometry

  • لغزش
  • خطای اندازه‌گیری
  • خطای تجمعی

جلسه ۳۶ — مقایسه موقعیت واقعی و تخمینی

در شبیه‌سازی:

Ground Truth
       VS
Estimated Pose

جلسه ۳۷ — مفهوم Localization

معرفی روش‌های تعیین موقعیت ربات.


فصل ۷ — ورود به بینایی ماشین

اینجا پردازش تصویر را عمداً وارد پروژه می‌کنیم تا از همان نیمه اول دوره فقط رباتیک خشک نداشته باشیم.

جلسه ۳۸ — Computer Vision چیست؟

  • تصویر دیجیتال
  • Pixel
  • RGB
  • Grayscale
  • Image Processing
  • Computer Vision

جلسه ۳۹ — نصب و معرفی OpenCV

  • نصب OpenCV
  • خواندن تصویر
  • نمایش تصویر
  • ذخیره تصویر

جلسه ۴۰ — اولین دوربین شبیه‌سازی‌شده در PyBullet

  • Camera
  • Position
  • Orientation
  • Field of View
  • گرفتن تصویر

جلسه ۴۱ — پردازش تصویر دوربین AGV

  • RGB
  • تبدیل رنگ
  • Grayscale
  • Threshold

جلسه ۴۲ — تشخیص رنگ

مثلاً:

AGV جسم قرمز را پیدا کند.

جلسه ۴۳ — تشخیص موقعیت جسم در تصویر

  • Bounding Box
  • مرکز جسم
  • مختصات تصویر

جلسه ۴۴ — تبدیل اطلاعات تصویر به اطلاعات ربات

مثلاً:

Camera
 ↓
Object Detection
 ↓
Object Position
 ↓
AGV Decision

خروجی فصل:

📷 AGV اکنون می‌تواند با دوربین خود یک شیء را ببیند و موقعیت تقریبی آن را تشخیص دهد.


فصل ۸ — سنسورها و ادراک محیط

جلسه ۴۵ — مفهوم Sensor در رباتیک

  • Sensor
  • Measurement
  • Noise
  • Ground Truth

جلسه ۴۶ — LiDAR چیست؟

  • Laser
  • Ray
  • Range
  • Field of View

جلسه ۴۷ — ساخت LiDAR در PyBullet

  • Ray Casting
  • Ray Test
  • Ray Test Batch

جلسه ۴۸ — پردازش داده LiDAR

تبدیل داده خام به:

فاصله موانع اطراف ربات.

جلسه ۴۹ — تشخیص مانع

AGV بفهمد:

«جلوی من مانع وجود دارد.»

جلسه ۵۰ — دوربین Depth

  • Depth Image
  • فاصله تا اجسام
  • تفاوت RGB و Depth

جلسه ۵۱ — IMU

  • Accelerometer
  • Gyroscope
  • Orientation
  • Noise

جلسه ۵۲ — ترکیب Camera + LiDAR

بررسی اینکه:

هر سنسور چه چیزی را می‌بیند و چه محدودیتی دارد.


فصل ۹ — ساخت نقشه محیط

جلسه ۵۳ — نقشه برای ربات چیست؟

  • Map
  • World
  • Occupancy Grid
  • Cell
  • Resolution

جلسه ۵۴ — ساخت Occupancy Grid

مثلاً:

0 = آزاد
1 = مانع

جلسه ۵۵ — تبدیل LiDAR به نقشه

LiDAR
 ↓
Obstacle Points
 ↓
Occupancy Grid

جلسه ۵۶ — به‌روزرسانی نقشه هنگام حرکت

AGV حرکت کند و نقشه را کامل‌تر کند.

جلسه ۵۷ — خطا و نویز نقشه

  • Sensor Noise
  • خطای اندازه‌گیری
  • داده ناقص

جلسه ۵۸ — ساخت یک محیط انبار ساده

اضافه کردن:

  • قفسه
  • دیوار
  • راهرو
  • کالا
  • ایستگاه

فصل ۱۰ — مسیر‌یابی و Navigation

جلسه ۵۹ — مسئله Path Planning

چطور از:

A → B

حرکت کنیم بدون برخورد؟

جلسه ۶۰ — الگوریتم Dijkstra

جلسه ۶۱ — الگوریتم A*

جلسه ۶۲ — پیاده‌سازی A* در Python

جلسه ۶۳ — اجرای A* روی نقشه AGV

جلسه ۶۴ — تبدیل مسیر Grid به مسیر واقعی

جلسه ۶۵ — Waypoint

تبدیل مسیر به نقاط قابل دنبال کردن.

جلسه ۶۶ — Path Following

AGV مسیر را دنبال کند.


فصل ۱۱ — تبدیل AGV به ربات خودران / AMR

اینجا نقطه بسیار مهم پروژه است.

جلسه ۶۷ — مفهوم Autonomous Navigation

ربات:

خودش تصمیم بگیرد کجا برود.

جلسه ۶۸ — ترکیب Localization + Mapping + Planning

جلسه ۶۹ — حرکت خودکار از A به B

جلسه ۷۰ — تشخیص مانع هنگام حرکت

جلسه ۷۱ — اجتناب از مانع

جلسه ۷۲ — Local Planning

معرفی مفهوم برنامه‌ریزی محلی.

جلسه ۷۳ — Dynamic Window Approach

  • DWA چیست؟
  • چرا به آن نیاز داریم؟
  • سرعت‌های مجاز
  • انتخاب حرکت مناسب

جلسه ۷۴ — سیستم کامل Navigation

ترکیب:

Sensor
 ↓
Localization
 ↓
Map
 ↓
A*
 ↓
Local Planner
 ↓
Controller
 ↓
AGV

جلسه ۷۵ — Click-to-Navigate

روی نقشه کلیک کنیم:

ربات خودش به آنجا برود.

🎯 اینجا AGV اولیه ما عملاً به یک AMR شبیه‌سازی‌شده تبدیل شده است.


فصل ۱۲ — Machine Learning و تشخیص هوشمند

حالا که Computer Vision پایه را داریم، وارد یادگیری ماشین می‌شویم.

جلسه ۷۶ — Machine Learning چیست؟

  • Traditional Programming
  • Machine Learning
  • Training
  • Inference
  • Model

جلسه ۷۷ — Dataset چیست؟

  • داده آموزشی
  • Label
  • Training
  • Validation
  • Test

جلسه ۷۸ — تولید داده آموزشی از PyBullet

این قسمت بسیار مهم است.

خودمان محیط‌های مختلف تولید می‌کنیم:

Object
Color
Size
Position
Lighting
Camera Angle

و از آنها داده می‌گیریم.

جلسه ۷۹ — اولین مدل یادگیری ماشین

یک مسئله ساده:

تشخیص نوع یا وضعیت یک شیء.

جلسه ۸۰ — اتصال مدل Machine Learning به AGV

Camera
 ↓
ML Model
 ↓
Object Detection
 ↓
Decision
 ↓
AGV

جلسه ۸۱ — تشخیص اشیای مختلف

مثلاً:

📦 کالا
🚧 مانع
🔴 علامت

جلسه ۸۲ — مقایسه روش سنتی و Machine Learning

مثلاً:

Color Threshold

در مقابل:

ML Model

و بررسی مزایا و معایب.


فصل ۱۳ — هوش مصنوعی و Reinforcement Learning

اینجا وارد بخش پیشرفته‌تر AI می‌شویم.

جلسه ۸۳ — Reinforcement Learning چیست؟

  • Agent
  • Environment
  • State
  • Action
  • Reward

جلسه ۸۴ — تعریف مسئله برای AGV

مثلاً:

ربات باید به مقصد برسد و با مانع برخورد نکند.

جلسه ۸۵ — طراحی Reward

پاداش برای:

  • نزدیک شدن به هدف
  • رسیدن به هدف
  • برخورد
  • طولانی شدن مسیر

جلسه ۸۶ — محیط آموزشی AGV

ساخت Environment مناسب برای آموزش.

جلسه ۸۷ — PPO

  • PPO چیست؟
  • چرا PPO؟
  • مفهوم Policy

جلسه ۸۸ — آموزش عامل با Stable-Baselines3

جلسه ۸۹ — آزمایش عامل آموزش‌دیده

AGV را با مدل آموزش‌دیده کنترل می‌کنیم.

جلسه ۹۰ — مقایسه Navigation کلاسیک و AI

مثلاً:

A*
VS
Reinforcement Learning

بررسی می‌کنیم کدام روش در چه مسئله‌ای بهتر است.

نکته: اینجا هدف ما این نیست که «هر چیزی را با AI حل کنیم». هدف این است که بفهمیم کجا روش کلاسیک بهتر است و کجا AI ارزش اضافه ایجاد می‌کند.


فصل ۱۴ — Smart Warehouse و چند AGV

جلسه ۹۱ — ساخت انبار هوشمند

  • قفسه‌ها
  • کالاها
  • ایستگاه‌ها
  • مسیرها
  • Charging Station

جلسه ۹۲ — تعریف مأموریت

مثلاً:

Pick: Shelf A3
Drop: Station B

جلسه ۹۳ — چند ربات

ساخت چند AGV/AMR در محیط.

جلسه ۹۴ — تقسیم مأموریت

کدام ربات کدام کار را انجام دهد؟

جلسه ۹۵ — جلوگیری از برخورد و مدیریت ترافیک

  • Collision Avoidance
  • Traffic Management
  • Priority

⏸️ یک نکته مهم درباره ۹۵ جلسه

اینجا به عدد ۹۵ رسیدیم، اما من عمداً پروژه را در این نقطه تمام نمی‌کنم.

چون فصل‌های اصلی که قبلاً داشتیم هنوز برای Portfolio حرفه‌ای لازم‌اند.

بنابراین برای نسخه‌ای که واقعاً قرار است در فرادرس منتشر شود، بهتر است فهرست را به دو بخش تبدیل کنیم:

بخش اول — دوره اصلی

جلسات ۱ تا ۹۵

که در آن به یک سیستم AGV/AMR هوشمند چندرباته می‌رسیم.

بخش دوم — دوره پیشرفته / پروژه نهایی Portfolio

که شامل:

  • Digital Twin
  • Optimization
  • Sim-to-Real
  • Domain Randomization
  • تست سخت‌افزار واقعی
  • مستندسازی
  • GitHub
  • Portfolio
  • Demo Video

است.

این کار از نظر آموزشی هم بهتر است؛ چون اگر بخواهیم همه اینها را در همان ۹۵ جلسه جا بدهیم، دوره تبدیل به یک دوره بیش از حد سنگین و پراکنده می‌شود.


🔥 بخش دوم — مسیر پیشرفته و پروژه نهایی

فصل ۱۵ — Digital Twin و Optimization

جلسه ۹۶ — Digital Twin چیست؟

جلسه ۹۷ — ثبت داده‌های عملکرد AGV

  • زمان مأموریت
  • مسافت
  • سرعت
  • انرژی
  • برخورد
  • زمان انتظار

جلسه ۹۸ — تحلیل عملکرد انبار

جلسه ۹۹ — پیدا کردن Bottleneck

جلسه ۱۰۰ — آزمایش سناریوهای مختلف

مثلاً:

5 ربات
10 ربات
15 ربات

جلسه ۱۰۱ — بهینه‌سازی تعداد ربات‌ها

جلسه ۱۰۲ — بهینه‌سازی مسیر و مأموریت


فصل ۱۶ — Sim-to-Real

جلسه ۱۰۳ — چرا Simulation با Reality فرق دارد؟

جلسه ۱۰۴ — مشکلات انتقال

  • Friction
  • Sensor Noise
  • Motor Dynamics
  • Latency
  • Mass
  • Calibration

جلسه ۱۰۵ — Domain Randomization

جلسه ۱۰۶ — ساخت مدل واقع‌گرایانه‌تر

جلسه ۱۰۷ — طراحی AGV کوچک واقعی

جلسه ۱۰۸ — انتقال کنترل به ربات واقعی

جلسه ۱۰۹ — مقایسه Simulation و Reality

جلسه ۱۱۰ — اندازه‌گیری Sim-to-Real Gap


فصل ۱۷ — پروژه نهایی و Portfolio

جلسه ۱۱۱ — طراحی معماری نهایی

جلسه ۱۱۲ — یکپارچه‌سازی تمام سیستم‌ها

Camera
LiDAR
 ↓
Perception
 ↓
Localization
 ↓
Mapping
 ↓
Planning
 ↓
AI
 ↓
Control
 ↓
AMR

جلسه ۱۱۳ — تست کامل

جلسه ۱۱۴ — تست سناریوهای مختلف

جلسه ۱۱۵ — اندازه‌گیری عملکرد

جلسه ۱۱۶ — تهیه نمودارها و نتایج

جلسه ۱۱۷ — تمیز کردن کد

جلسه ۱۱۸ — ساخت README حرفه‌ای

جلسه ۱۱۹ — انتشار در GitHub

جلسه ۱۲۰ — تهیه Demo Video

جلسه ۱۲۱ — نوشتن گزارش فنی

جلسه ۱۲۲ — ساخت Portfolio

جلسه ۱۲۳ — تبدیل پروژه به محتوای آموزشی

جلسه ۱۲۴ — آماده‌سازی برای ارائه به شرکت‌ها


🎯 حالا پاسخ سؤال دوم تو

آیا با اضافه شدن AI و پردازش تصویر، AGV از حالت خودش خارج می‌شود؟

بله و خیر؛ بستگی دارد چه کاری با آن انجام دهیم.

اسم AGV به‌طور سنتی بیشتر برای وسیله‌ای استفاده می‌شود که حرکتش تا حد زیادی هدایت‌شده و از پیش تعریف‌شده است.

اما وقتی ربات ما:

  • محیط را با سنسور می‌بیند؛
  • خودش موقعیتش را تخمین می‌زند؛
  • نقشه می‌سازد؛
  • خودش مسیر پیدا می‌کند؛
  • مانع را تشخیص می‌دهد؛
  • مسیرش را در لحظه تغییر می‌دهد؛
  • مأموریت دریافت می‌کند؛
  • با چند ربات همکاری می‌کند؛
  • و حتی از AI برای تصمیم‌گیری استفاده می‌کند؛

دیگر از نظر ماهیت عملکردی به یک AMR نزدیک شده‌ایم.


بنابراین پروژه ما از ابتدا تا انتها این‌طور تکامل پیدا می‌کند:

مرحله ۱
AGV ساده
│
│  فقط حرکت و کنترل
↓
مرحله ۲
AGV مجهز به سنسور
│
│  LiDAR + Camera
↓
مرحله ۳
AGV هوشمند
│
│  Mapping + Localization
↓
مرحله ۴
AGV خودران
│
│  A* + Path Planning
↓
مرحله ۵
AMR
│
│  Obstacle Avoidance
│  Local Planning
↓
مرحله ۶
AMR هوشمند
│
│  Computer Vision
│  Machine Learning
↓
مرحله ۷
سیستم چند AMR
│
│  Fleet Management
↓
مرحله ۸
Smart Warehouse
│
│  Digital Twin
│  Optimization
↓
مرحله ۹
Sim-to-Real
│
↓
🤖 ربات واقعی

بنابراین اتفاقاً این تغییر به نفع ماست.

ما از روز اول نمی‌گوییم:

«بیایید یک AMR خیلی پیچیده بسازیم.»

چون احتمالاً وسط راه گیر می‌کنیم.

می‌گوییم:

«یک AGV ساده می‌سازیم و قدم‌به‌قدم قابلیت‌های خودران و هوشمند به آن اضافه می‌کنیم تا در نهایت به یک AMR تبدیل شود.»

این از نظر آموزشی خیلی منطقی‌تر است، چون هر چیزی که اضافه می‌کنیم یک دلیل مشخص دارد.


و یک اصلاح مهم در برنامه قبلی‌مان

من پیشنهاد می‌کنم Computer Vision را از جلسه ۳۸ و Machine Learning را از جلسه ۷۶ شروع کنیم، ولی تمرین‌های کوچک AI را حتی زودتر هم می‌توانیم انجام دهیم.

یعنی لازم نیست چند ماه منتظر بمانی تا «به AI برسیم».

از همان زمانی که دوربین را ساختیم، یک پروژه کوچک داریم:

دوربین مجازی → تصویر → OpenCV → تشخیص شیء → تصمیم AGV

و بعد همان سیستم را ارتقا می‌دهیم:

دوربین → داده → Machine Learning → تشخیص → تصمیم AGV

این دقیقاً همان چیزی است که به نظرم برای تو جذاب‌تر و از نظر رزومه هم قوی‌تر است.

پس نقشه نهایی ما دیگر صرفاً «دوره PyBullet» نیست؛ یک مسیر از شبیه‌سازی رباتیک به سمت Physical AI است، با AGV به‌عنوان هسته پروژه و AMR هوشمند به‌عنوان خروجی نهایی.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top