بله؛ و اینجا یک نکته مهم را اول روشن کنم: با اضافه کردن پردازش تصویر و هوش مصنوعی، پروژه از مسیر 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
جلسه ۱۵ — خواندن اطلاعات ربات
getNumJointsgetJointInfo- شماره مفاصل
- نام مفاصل
جلسه ۱۶ — کنترل مفاصل
- 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 هوشمند بهعنوان خروجی نهایی.

