بله؛ و اینجا یک نکته مهم را اول روشن کنم: با اضافه کردن پردازش تصویر و هوش مصنوعی، پروژه از مسیر 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 هوشمند بهعنوان خروجی نهایی.
***************************************************************
پایتون و پردازش تصویر
بله. الان دقیقاً به نقطهای رسیدیم که باید معماری نهایی این دو دوره را تثبیت کنیم؛ چون اگر از ابتدا مرز آنها را درست تعیین کنیم، بعداً Arduino، PyBullet/AGV، AI و حتی Digital Twin را میتوانیم بدون تکرار روی همین پایهها سوار کنیم.
من این دو دوره را با یک اصل طراحی میکنم:
هر چیزی که آموزش میدهیم باید یا برای ساخت یک سیستم رباتیک لازم باشد، یا مستقیماً در یکی از پروژههای بعدی Bimetral استفاده شود.
پس نه Python عمومیِ بیانتها داریم، نه Computer Vision دانشگاهی و تئوریکِ بدون کاربرد.
معماری کلی دو دوره
Bimetral Robotics
│
┌────────────┴────────────┐
│ │
Python Computer Vision
│ │
Programming Core Vision Fundamentals
│ │
NumPy / Math NumPy + OpenCV
│ │
Data / OOP Image Processing
│ │
Serial / Control Detection / Tracking
│ │
└────────────┬────────────┘
│
PyBullet
│
AGV
│
Navigation / Perception
│
AI / ML / RL
│
Digital Twin
│
Sim-to-Real
│
Real Robot
دوره اول
🐍 Python for Engineering & Robotics
هدف دوره
دانشجو از:
«من Python بلد نیستم»
برسد به:
«میتوانم با Python یک نرمافزار مهندسی/رباتیکی Modular بنویسم، داده سنسور را پردازش کنم، محاسبات ربات را انجام دهم، با Arduino ارتباط برقرار کنم، OpenCV و PyBullet را کنترل کنم و منطق یک ربات را پیادهسازی کنم.»
تعداد پیشنهادی:
حدود ۷۰ جلسه
نه ۱۰۰ جلسهی کشدار؛ هر جلسه یک خروجی مشخص دارد.
فصل ۱ — Python و دنیای Robotics
جلسه ۱ — Python در رباتیک چیست؟
- Python چیست؟
- Interpreter
- Script
- Python در Robotics
- Python در Simulation
- Python در AI
- Python در Computer Vision
- Python در کنترل ربات
- محدودیتهای Python
پروژه: معرفی معماری نرمافزار یک AGV.
جلسه ۲ — نصب Python و محیط توسعه
- Python
- PATH
- Terminal
- VS Code / PyCharm
- Interpreter
- اجرای Script
جلسه ۳ — Virtual Environment
- چرا Environment؟
venv- فعالسازی
- نصب Package
- مدیریت Dependency
جلسه ۴ — اولین برنامه Python
- Syntax
- Statement
- Comment
- Error
- Debugging مقدماتی
پروژه: ساخت برنامه وضعیت ربات.
فصل ۲ — Python Fundamentals
جلسه ۵ — Variables
robot_speed = 1.5
battery = 85
جلسه ۶ — Data Types
- int
- float
- str
- bool
- None
جلسه ۷ — Type Conversion
intfloatstrbool
جلسه ۸ — Operators
- Arithmetic
- Comparison
- Logical
- Assignment
جلسه ۹ — Input / Output
دریافت:
سرعت مطلوب ربات
و نمایش وضعیت.
جلسه ۱۰ — Conditions
if
elif
else
مثال:
Distance < 0.5m
↓
STOP
جلسه ۱۱ — Loops
forwhilerange
جلسه ۱۲ — کنترل با Loop
ساخت:
Sensor
↓
Check
↓
Decision
↓
Action
جلسه ۱۳ — List
دادههای چند سنسور:
distances = [1.2, 0.8, 2.4, 0.5]
جلسه ۱۴ — Tuple / Set
کاربرد واقعی آنها در برنامههای مهندسی.
جلسه ۱۵ — Dictionary
robot = {
"x": 2.4,
"y": 1.5,
"speed": 0.8
}
جلسه ۱۶ — Data Structures در Robotics
انتخاب ساختار مناسب برای:
- Sensor Data
- Robot State
- Configuration
- Waypoints
خروجی فصل:
دانشجو میتواند برنامههای پایه Python را بنویسد و دادههای یک ربات را مدل کند.
فصل ۳ — Functions و برنامهنویسی مهندسی
جلسه ۱۷ — Function
جلسه ۱۸ — Parameters و Arguments
جلسه ۱۹ — Return
جلسه ۲۰ — Function Design
توابع:
calculate_distance()
calculate_angle()
calculate_speed()
جلسه ۲۱ — Scope
- Local
- Global
جلسه ۲۲ — Built-in Functions
توابعی که واقعاً در پروژههای رباتیک استفاده میشوند.
جلسه ۲۳ — Lambda / map / filter
فقط در حد کاربرد واقعی.
جلسه ۲۴ — Exception Handling
try
except
مثلاً:
سنسور داده نامعتبر فرستاد.
جلسه ۲۵ — Debugging
- Traceback
- Breakpoint
- Watch
- Step
- Debugging Strategy
فصل ۴ — File و Data
جلسه ۲۶ — فایلهای Text
جلسه ۲۷ — CSV
ذخیره:
Time
Distance
Speed
جلسه ۲۸ — JSON
برای Configuration ربات.
جلسه ۲۹ — pathlib
مدیریت حرفهای مسیرها.
جلسه ۳۰ — Logging
ثبت اتفاقات سیستم:
[10:32] Robot Started
[10:33] Obstacle Detected
[10:33] Robot Stopped
جلسه ۳۱ — ذخیره داده سنسور
پروژه:
ساخت Data Logger برای ربات.
فصل ۵ — Modules و معماری نرمافزار
اینجا دوره از «برنامهنویسی» وارد Software Engineering for Robotics میشود.
جلسه ۳۲ — Module چیست؟
جلسه ۳۳ — Import
جلسه ۳۴ — Package
جلسه ۳۵ — ساختار پروژه حرفهای
AGV_Project/
├── main.py
├── robot/
├── sensors/
├── control/
├── navigation/
├── vision/
├── data/
└── utils/
جلسه ۳۶ — Separation of Concerns
چرا:
Sensor
Controller
Navigation
Vision
نباید همه در یک فایل باشند؟
جلسه ۳۷ — Configuration Management
پارامترهای ربات:
wheel_radius
wheel_base
max_speed
sensor_range
فصل ۶ — OOP برای Robotics
جلسه ۳۸ — Class و Object
جلسه ۳۹ — Constructor
جلسه ۴۰ — Attribute و Method
جلسه ۴۱ — ساخت کلاس Robot
class Robot:
جلسه ۴۲ — کلاس Sensor
جلسه ۴۳ — کلاس Motor
جلسه ۴۴ — Encapsulation
جلسه ۴۵ — Inheritance
Robot
├── AGV
└── AMR
جلسه ۴۶ — Composition
AGV
├── Motor
├── Camera
├── LiDAR
└── Controller
جلسه ۴۷ — طراحی معماری Robot Software
ساخت یک سیستم Modular واقعی.
خروجی فصل:
دانشجو میتواند نرمافزار ربات را به اجزای قابل توسعه تقسیم کند.
فصل ۷ — NumPy برای Robotics
این یکی از مهمترین فصلهای دوره است.
جلسه ۴۸ — NumPy چیست؟
جلسه ۴۹ — Array
جلسه ۵۰ — Indexing / Slicing
جلسه ۵۱ — Vector
جلسه ۵۲ — Matrix
جلسه ۵۳ — عملیات Matrix
جلسه ۵۴ — Broadcasting
جلسه ۵۵ — Vector / Matrix در رباتیک
Position
Velocity
Acceleration
جلسه ۵۶ — Coordinate System
World Frame
Robot Frame
Sensor Frame
جلسه ۵۷ — Rotation
مفهوم Rotation Matrix.
جلسه ۵۸ — Transformation
تبدیل:
Sensor Frame
↓
Robot Frame
↓
World Frame
جلسه ۵۹ — پیادهسازی محاسبات Differential Drive
استفاده از NumPy برای محاسبه سرعت و وضعیت AGV.
فصل ۸ — Visualization و دادههای ربات
جلسه ۶۰ — Matplotlib
جلسه ۶۱ — Sensor Plot
جلسه ۶۲ — Robot Trajectory
نمایش:
X-Y
جلسه ۶۳ — نمایش Path
جلسه ۶۴ — نمایش Sensor Data به صورت Real-Time
جلسه ۶۵ — تحلیل خطای ربات
مثلاً:
Ground Truth
VS
Estimated Position
فصل ۹ — ارتباط Python با Hardware
جلسه ۶۶ — Serial Communication
- UART
- COM
- Baud Rate
- TX/RX
جلسه ۶۷ — PySerial
جلسه ۶۸ — Arduino → Python
دریافت Sensor Data.
جلسه ۶۹ — Python → Arduino
ارسال Command.
جلسه ۷۰ — پروژه نهایی Python
ساخت:
Python Robot Controller
Sensor
↓
Python
↓
Processing
↓
Decision
↓
Arduino
↓
Actuator
نتیجه دوره Python
دانشجو در اینجا هنوز Computer Vision متخصص، AI متخصص یا PyBullet متخصص نیست.
و این کاملاً عمدی است.
او اکنون ابزار Python لازم برای ورود به این حوزهها را دارد.
دوره دوم
👁 Computer Vision for Robotics
اینجا دیگر میخواهیم واقعاً Computer Vision را یاد بگیریم؛ نه اینکه فقط ۵ جلسه OpenCV داشته باشیم.
هدف:
دانشجو از:
«تصویر چیست؟»
برسد به:
«میتوانم داده تصویری دوربین را پردازش کنم، ویژگیهای اشیا را استخراج کنم، آنها را تشخیص و دنبال کنم و خروجی Vision را به یک سیستم رباتیک مثل AGV منتقل کنم.»
حدود ۸۰ جلسه
فصل ۱ — مبانی بینایی ماشین
جلسه ۱ — Computer Vision چیست؟
- Image Processing
- Computer Vision
- Machine Vision
- Robotics Vision
- تفاوت آنها
جلسه ۲ — دوربین چگونه میبیند؟
- Lens
- Sensor
- Image Formation
جلسه ۳ — Digital Image
- Pixel
- Resolution
- Width
- Height
- Channels
جلسه ۴ — RGB
جلسه ۵ — Grayscale
جلسه ۶ — Image Coordinates
(0,0)
↓
x →
y ↓
جلسه ۷ — NumPy و تصویر
درک اینکه:
Image در Python عملاً یک Array است.
فصل ۲ — OpenCV
جلسه ۸ — نصب OpenCV
جلسه ۹ — خواندن Image
جلسه ۱۰ — ذخیره Image
جلسه ۱۱ — Display
جلسه ۱۲ — Video
جلسه ۱۳ — Webcam
جلسه ۱۴ — FPS و Frame
جلسه ۱۵ — ساخت Video Processing Loop
Camera
↓
Frame
↓
Processing
↓
Display
فصل ۳ — Image Processing
جلسه ۱۶ — Resize
جلسه ۱۷ — Crop
جلسه ۱۸ — Rotate
جلسه ۱۹ — Flip
جلسه ۲۰ — Blur
جلسه ۲۱ — Gaussian Blur
جلسه ۲۲ — Noise
جلسه ۲۳ — Image Filtering
جلسه ۲۴ — Sharpening
جلسه ۲۵ — Histogram
جلسه ۲۶ — Contrast
فصل ۴ — Threshold و Segmentation
جلسه ۲۷ — Threshold چیست؟
جلسه ۲۸ — Binary Image
جلسه ۲۹ — Global Threshold
جلسه ۳۰ — Adaptive Threshold
جلسه ۳۱ — Otsu
جلسه ۳۲ — HSV
چرا برای تشخیص رنگ در Robotics مهم است؟
جلسه ۳۳ — Color Segmentation
جلسه ۳۴ — ساخت Color Detector
مثلاً:
تشخیص جسم قرمز.
جلسه ۳۵ — Morphological Operations
- Erosion
- Dilation
جلسه ۳۶ — Opening / Closing
جلسه ۳۷ — تمیز کردن Mask
فصل ۵ — Contours و Shape
جلسه ۳۸ — Contour چیست؟
جلسه ۳۹ — پیدا کردن Contour
جلسه ۴۰ — Area
جلسه ۴۱ — Perimeter
جلسه ۴۲ — Bounding Box
جلسه ۴۳ — Center of Object
جلسه ۴۴ — Shape Detection
جلسه ۴۵ — Circle Detection
جلسه ۴۶ — ساخت Object Detector ساده
Image
↓
Mask
↓
Contour
↓
Object
↓
Position
فصل ۶ — Feature و Geometry
جلسه ۴۷ — Feature چیست؟
جلسه ۴۸ — Corner Detection
جلسه ۴۹ — Edge Detection
جلسه ۵۰ — Canny
جلسه ۵۱ — Hough Transform
جلسه ۵۲ — تشخیص Line
جلسه ۵۳ — تشخیص Circle
جلسه ۵۴ — کاربرد Line Detection در Robotics
مثلاً:
تشخیص خط مسیر AGV.
فصل ۷ — Camera Geometry
اینجا دوره واقعاً وارد Robotics Vision میشود.
جلسه ۵۵ — Pinhole Camera Model
جلسه ۵۶ — Camera Parameters
جلسه ۵۷ — Intrinsic Parameters
جلسه ۵۸ — Distortion
جلسه ۵۹ — Camera Calibration
جلسه ۶۰ — Calibration عملی
جلسه ۶۱ — Undistortion
جلسه ۶۲ — Perspective Transformation
جلسه ۶۳ — Homography
مثلاً:
تبدیل تصویر کف انبار به نمای Top-Down.
فصل ۸ — Object Detection و Tracking
جلسه ۶۴ — Object Detection چیست؟
جلسه ۶۵ — Detection با روشهای کلاسیک
جلسه ۶۶ — Bounding Box
جلسه ۶۷ — Centroid Tracking
جلسه ۶۸ — Object Tracking
جلسه ۶۹ — Motion Detection
جلسه ۷۰ — Background Subtraction
جلسه ۷۱ — Optical Flow
جلسه ۷۲ — کاربرد Tracking در ربات
مثلاً:
AGV یک جسم متحرک را دنبال کند.
فصل ۹ — Vision برای Robot Perception
اینجا دیگر Vision از یک درس تصویری به حس ربات تبدیل میشود.
جلسه ۷۳ — Vision Sensor چیست؟
جلسه ۷۴ — Camera → Object
جلسه ۷۵ — Object Position در Image
جلسه ۷۶ — Image Coordinates → Robot Decision
جلسه ۷۷ — Line Following با Camera
جلسه ۷۸ — Obstacle Detection با Camera
جلسه ۷۹ — Target Detection
جلسه ۸۰ — پروژه نهایی Computer Vision
ساخت:
Vision-Based AGV
Camera
↓
Image
↓
OpenCV
↓
Object / Line Detection
↓
Position
↓
Decision
↓
AGV Controller
اما اینجا یک نکته بسیار مهم وجود دارد
من Deep Learning / YOLO / Neural Networks را داخل هسته اصلی این دوره قرار نمیدهم.
چرا؟
چون Computer Vision کلاسیک خودش باید درست فهمیده شود.
بعد دوره بعدی:
🧠 AI / Deep Learning for Robotics
میتواند بر این پایه ساخته شود:
Computer Vision
↓
Image Processing
↓
OpenCV
↓
Detection
↓
Tracking
↓
Camera Geometry
↓
AI
↓
YOLO / CNN / Deep Learning
↓
Robot Perception
این معماری آموزشی بسیار تمیزتر است.
حالا رابطه این دو دوره با AGV خودمان
این مهمترین قسمت است.
ما نمیخواهیم این دورهها جزیرهای باشند.
Python به AGV میدهد:
Python
├── Functions
├── OOP
├── NumPy
├── Math
├── Data
├── Serial
├── Control
└── Software Architecture
Computer Vision به AGV میدهد:
Computer Vision
├── Image Processing
├── Segmentation
├── Object Detection
├── Tracking
├── Camera Geometry
└── Robot Perception
PyBullet/AGV اینها را مصرف میکند:
AGV
│
┌───────────┼───────────┐
│ │ │
Python Vision Physics
│ │ │
OOP OpenCV PyBullet
NumPy Camera Dynamics
Control Detection Sensors
│ │ │
└───────────┼───────────┘
│
Navigation
│
AI
بنابراین دانشجو یک بار چیزها را یاد میگیرد و چند جا استفاده میکند
مثلاً در Python:
NumPy
را یاد میگیرد.
بعد در Computer Vision:
Image = NumPy Array
را میبیند.
بعد در PyBullet:
Sensor Data = NumPy Array
را میبیند.
بعد در AGV:
Position / Velocity / LiDAR / Camera Data
همه با همین ابزار پردازش میشوند.
و حتی بهتر: پروژههای مشترک تعریف کنیم
این قسمت برای فروش دورهها و YouTube خیلی ارزشمند است.
پروژه ۱
Python
Robot Data Logger
↓
پروژه ۲
Computer Vision
Red Object Detector
↓
پروژه ۳
Python + Computer Vision
Camera Controller
↓
پروژه ۴
PyBullet
Simulated Camera
↓
پروژه ۵
AGV
AGV Detects Object
↓
پروژه ۶
AI
AGV Recognizes Object
↓
پروژه ۷
Real Robot
همان ایده روی سختافزار
یک اصلاح مهم نسبت به نقشه قبلی
قبلاً گفتیم:
Python → Arduino → OpenCV → PyBullet → AI
این را الان بهتر میکنیم.
مسیر آموزشی و مسیر محصولی را از هم جدا میکنیم.
مسیر آموزشی:
Python
│
├── NumPy
├── OOP
├── Data
└── Control
│
├─────────────┐
▼ ▼
Computer Vision PyBullet
│ │
└──────┬──────┘
▼
AGV
│
▼
AI
و Arduino یک شاخه موازی است:
Arduino / AVR
│
Electronics
│
Sensors
│
Motors
│
└──────────────→ Real Robot
بعد Python به آن متصل میشود:
Python
↕
Arduino
↕
┌─────────┴─────────┐
Sensors Motors
این معماری از نظر آموزشی خیلی تمیزتر است.
حالا یک نکته بسیار مهم برای YouTube
این دورهها را به شکل «جلسه ۱، جلسه ۲، جلسه ۳» به مخاطب نفروشیم.
ساختار داخلی دوره میتواند جلسهای باشد، اما YouTube باید Problem-Oriented باشد.
مثلاً از دوره Python:
How to Control a Robot with a Python Loop
Python Classes Explained with a Robot
How Robots Use NumPy
Build a Robot Data Logger with Python
Python Serial Communication with Arduino
و از Computer Vision:
How a Robot Detects a Red Object
Make a Camera Detect Lines with Python
How to Find an Object’s Center Using OpenCV
Turn a Camera into a Robot Sensor
Make an AGV Follow a Line Using Computer Vision
اینها هم مخاطب جذب میکنند و هم به محصول آموزشی مرتبط هستند.
و در نهایت، اکوسیستم کامل Bimetral
من اگر بخواهم الان معماری دورههای آینده تو را تثبیت کنم، به این شکل میچینم:
BIMETRAL
│
┌───────────────────┼───────────────────┐
│ │ │
Electronics Python Simulation
│ │ │
Arduino / AVR Engineering PyBullet
Proteus Robotics AGV / AMR
│ │ │
│ NumPy / OOP │
│ │ │
└──────────────┬────┴───────────────────┘
│
▼
Computer Vision
│
OpenCV
│
Robot Perception
│
▼
AI
│
┌──────────┴──────────┐
│ │
Deep Learning RL
│ │
└──────────┬──────────┘
▼
Autonomous
Robot
│
▼
Digital Twin
│
▼
Sim-to-Real
│
▼
REAL ROBOT
بنابراین پاسخ قطعی من به سؤال تو:
نه، Python نباید Arduino، Computer Vision و AI را عمیق تدریس کند.
Python باید زبان و ابزار مشترک را به دانشجو بدهد.
Arduino دوره مستقل خودش را دارد.
Computer Vision دوره مستقل و عمیق خودش را دارد.
AI دوره مستقل خودش را دارد.
PyBullet/AGV دوره مستقل خودش را دارد.
ولی این دورهها عمداً طوری طراحی میشوند که خروجی یک دوره، ورودی دوره بعدی باشد.
و این برای چیزی که تو میخواهی بسازی فوقالعاده مهم است، چون در نهایت قرار نیست دانشجو بگوید:
«من Python یاد گرفتم.»
یا:
«من OpenCV یاد گرفتم.»
بلکه باید بتواند بگوید:
«من با Python یک ربات را کنترل کردم، با Computer Vision محیط را دیدم، در PyBullet آن را شبیهسازی کردم، روی AGV اجرا کردم و در مرحله بعد میتوانم همان سیستم را به ربات واقعی منتقل کنم.»
این دقیقاً همان خط داستانی واحد Bimetral است که دورههای مختلف را به هم وصل میکند، بدون اینکه آنها را با هم قاطی کنیم.
*****************
AI / Machine Learning for Robotics – Reinforcement Learning for Robotics-Digital Twin & Sim-to-Real for Robotics-Arduino & Embedded Electronics for Robotics
دقیقاً. حالا که مرز Python و Computer Vision را مشخص کردهایم، باید برای این ۴ دوره هم همان معماری را حفظ کنیم: مستقل و قابل فروش، عمیق و کاربردی، بدون حاشیه، و در عین حال قابل اتصال به پروژه اصلی AGV/AMR و در نهایت Sim-to-Real.
من این چهار دوره را طوری میچینم که اگر دانشجو فقط یکی را بخرد، باز هم یک محصول آموزشی کامل داشته باشد؛ اما اگر چند دوره را پشت سر هم بگذراند، دانش او به شکل زنجیرهای روی هم ساخته شود.
معماری نهایی دورههای Bimetral
BIMETRAL ROBOTICS
│
┌──────────────────┼──────────────────┐
│ │ │
Python Arduino Simulation
│ │ │
│ Embedded PyBullet
│ Electronics AGV
│ │ │
└──────────┬───────┴──────────┬───────┘
│ │
▼ ▼
Computer Vision Robotics
│ │
└────────┬─────────┘
▼
AI / Machine Learning
│
▼
Reinforcement Learning
│
▼
Autonomous Robot
│
▼
Digital Twin / Sim-to-Real
│
▼
REAL ROBOT
حالا چهار دوره جدید را دقیق طراحی کنیم.
1️⃣ AI / Machine Learning for Robotics
هدف دوره
دانشجو از:
«Machine Learning چیست؟»
برسد به:
«میتوانم داده تولید کنم، یک مدل ML بسازم، آموزش دهم، ارزیابی کنم و آن را داخل یک سیستم رباتیک برای perception یا decision استفاده کنم.»
این دوره ادامه طبیعی Python + Computer Vision است.
حدود پیشنهادی: ۶۰–۷۰ جلسه
فصل ۱ — AI در رباتیک
1. AI چیست؟
2. Machine Learning چیست؟
3. Deep Learning چیست؟
4. AI در Robotics چه کاربردی دارد؟
5. Traditional Programming vs ML
6. Robotics Pipeline
Sensor
↓
Data
↓
ML Model
↓
Prediction
↓
Decision
↓
Robot
7. چه زمانی AI لازم نیست؟
این جلسه خیلی مهم است.
مثلاً:
اگر Threshold جواب میدهد، چرا Neural Network استفاده کنیم؟
فصل ۲ — داده برای ربات
8. Dataset چیست؟
9. Feature چیست؟
10. Label چیست؟
11. Training / Validation / Test
12. Data Leakage
13. Data Distribution
14. Class Imbalance
15. Data Collection در Robotics
16. Synthetic Data
فصل ۳ — اولین Machine Learning Model
17. Scikit-Learn
18. Regression
19. Classification
20. Train Model
21. Prediction
22. Accuracy
23. Precision / Recall
24. Confusion Matrix
25. Overfitting
26. Underfitting
27. Cross Validation
فصل ۴ — ML برای Perception
28. Sensor Data به عنوان Dataset
29. Feature Extraction
30. Classification سنسورها
31. تشخیص وضعیت محیط
32. تشخیص وضعیت ربات
33. Fault Detection
34. Anomaly Detection
فصل ۵ — Deep Learning
35. Neural Network چیست؟
36. Neuron
37. Layer
38. Activation Function
39. Forward Pass
40. Loss
41. Backpropagation
42. Gradient Descent
43. Training Loop
44. PyTorch
فصل ۶ — CNN برای Robot Vision
اینجا دوره Python و Computer Vision قبلی را به AI وصل میکنیم.
45. CNN چیست؟
46. Convolution
47. Kernel
48. Pooling
49. Feature Maps
50. Image Classification
51. Dataset تصویری
52. Training CNN
53. Evaluation
54. استفاده از CNN برای تشخیص اشیا
فصل ۷ — Object Detection
55. Classification vs Detection
56. Bounding Box
57. Object Detection Pipeline
58. YOLO چیست؟
59. Dataset برای Detection
60. Training / Fine-tuning
61. Inference
62. Confidence
63. Detection روی Camera
64. Detection در محیط شبیهسازی
فصل ۸ — AI + AGV
65. Camera → AI
66. AI → Perception
67. Perception → Decision
68. تشخیص مانع
69. تشخیص هدف
70. پروژه نهایی:
PyBullet
↓
Camera
↓
YOLO / ML
↓
Object Detection
↓
AGV Decision
خروجی:
یک AGV که از AI برای درک محیط استفاده میکند.
2️⃣ Reinforcement Learning for Robotics
این دوره را از Machine Learning جدا نگه میداریم.
چون RL یک پارادایم متفاوت است:
Supervised Learning:
Input → Label → Model
اما:
Reinforcement Learning:
Robot
↓
Action
↓
Environment
↓
Reward
↓
Learning
حدود ۵۰–۶۰ جلسه
فصل ۱ — RL Fundamentals
1. Reinforcement Learning چیست؟
2. Agent
3. Environment
4. State
5. Action
6. Reward
7. Episode
8. Policy
9. Value
10. Exploration vs Exploitation
فصل ۲ — RL در Robotics
11. چرا RL برای رباتیک جذاب است؟
12. چه مشکلاتی را میتوان با RL حل کرد؟
13. چه مشکلاتی را نباید با RL حل کرد؟
14. State ربات
15. Action ربات
16. Reward ربات
17. طراحی Environment
18. Simulation برای RL
فصل ۳ — اولین RL
19. Grid World
20. Random Agent
21. Reward
22. Q-Table
23. Q-Learning
24. Training
25. Exploration
26. Evaluation
این بخش عمداً ساده است تا مفهوم RL جا بیفتد.
فصل ۴ — RL برای Robot Navigation
27. تعریف AGV Environment
28. State Space
29. Action Space
30. Reward Function
31. Collision Penalty
32. Goal Reward
33. Distance Reward
34. Episode Termination
35. Training Environment
فصل ۵ — Deep Reinforcement Learning
36. چرا Q-Table کافی نیست؟
37. Neural Network + RL
38. DQN
39. Policy Network
40. Value Network
41. PPO
42. Actor-Critic
فصل ۶ — Stable-Baselines3
43. معرفی Stable-Baselines3
44. Environment Interface
45. Training Agent
46. Monitoring
47. Saving Model
48. Loading Model
49. Evaluation
50. TensorBoard
فصل ۷ — RL + PyBullet
51. اتصال PyBullet به RL
52. ساخت AGV Environment
53. آموزش AGV
54. مشاهده Learning
55. تست Agent
56. مقایسه:
A*
VS
PPO
57. Failure Analysis
فصل ۸ — پروژه نهایی
AGV باید:
از نقطه A به B برسد، مانع را تشخیص دهد و با استفاده از Policy حرکت کند.
3️⃣ Digital Twin & Sim-to-Real for Robotics
این دوره را من پیشرفتهترین و استراتژیکترین دوره Bimetral میدانم.
چون تمام دورههای قبلی بالاخره اینجا به هم میرسند.
هدف
دانشجو بفهمد:
چگونه یک ربات واقعی و مدل شبیهسازیشده را به هم متصل کنیم تا Simulation فقط یک محیط آموزشی نباشد، بلکه نمای دیجیتال سیستم واقعی باشد.
فصل ۱ — Digital Twin چیست؟
1. Digital Twin چیست؟
2. Simulation vs Digital Twin
3. Virtual Model
4. Physical System
5. Data Synchronization
6. Digital Thread
7. Real-Time Data
8. کاربرد Digital Twin در Robotics
فصل ۲ — ساخت مدل دیجیتال ربات
9. Robot Model
10. Geometry
11. Mass
12. Inertia
13. Motors
14. Sensors
15. Environment
16. Calibration
فصل ۳ — ساخت Digital Environment
17. Virtual Factory
18. Warehouse
19. AGV
20. Shelves
21. Stations
22. Obstacles
23. Material Flow
فصل ۴ — Connecting Simulation & Reality
24. Simulation Data
25. Real Robot Data
26. Communication Architecture
27. Serial
28. Network
29. MQTT
30. Robot Telemetry
31. Command Pipeline
فصل ۵ — System Identification
یکی از مهمترین بخشهای Sim-to-Real.
32. System Identification چیست؟
33. موتور واقعی vs مدل
34. اندازهگیری سرعت
35. اندازهگیری شتاب
36. اصطکاک
37. Motor Response
38. Parameter Estimation
39. Calibration
فصل ۶ — Reality Gap
40. Reality Gap چیست؟
41. Dynamics Gap
42. Sensor Gap
43. Actuator Gap
44. Geometry Gap
45. Timing Gap
46. Noise
47. Latency
فصل ۷ — Domain Randomization
48. Domain Randomization
49. Randomizing Mass
50. Friction
51. Sensor Noise
52. Lighting
53. Camera Position
54. Object Position
55. Training Robust Models
فصل ۸ — Sim-to-Real
56. Simulation Policy
57. Transfer
58. Real Robot
59. Safety Layer
60. Testing
61. Validation
62. Failure Analysis
فصل ۹ — Digital Twin واقعی AGV
63. Real AGV
64. Simulated AGV
65. Data Synchronization
66. Live Robot State
67. Live Simulation
68. Compare:
REAL
VS
SIMULATION
69. اصلاح مدل براساس داده واقعی
فصل ۱۰ — پروژه نهایی
ساخت:
AGV Digital Twin
REAL AGV
│
Sensors / Motors
│
▼
Communication
│
▼
Digital Twin
│
┌─────┴─────┐
│ │
Simulation Analytics
│
▼
AI
│
▼
Optimization
این پروژه میتواند یکی از قویترین Portfolioهای Bimetral باشد.
4️⃣ Arduino & Embedded Electronics for Robotics
این دوره را مستقل از Python میگیریم.
و اتفاقاً برای YouTube میتواند یکی از بهترین ورودیهای Bimetral باشد، چون مخاطب خیلی بیشتری از «PyBullet AGV» دارد.
هدف
دانشجو از:
«LED چیست؟»
برسد به:
«میتوانم یک سیستم Embedded ساده برای یک ربات طراحی کنم، سنسور بخوانم، موتور کنترل کنم، ارتباط برقرار کنم و آن را در Proteus قبل از ساخت واقعی تست کنم.»
حدود ۸۰ جلسه
فصل ۱ — مبانی الکترونیک
1. ولتاژ چیست؟
2. جریان چیست؟
3. مقاومت چیست؟
4. قانون اهم
5. توان
6. مدار سری
7. مدار موازی
8. Digital vs Analog
9. Pull-up / Pull-down
10. Multimeter
فصل ۲ — Arduino Fundamentals
11. Arduino چیست؟
12. Microcontroller چیست؟
13. Arduino Uno
14. Pinها
15. ساختار برنامه
16. setup()
17. loop()
18. Digital Output
19. Digital Input
20. اولین پروژه LED
فصل ۳ — Digital Electronics
21. Digital Signal
22. HIGH / LOW
23. Button
24. Debouncing
25. Pull-up
26. Pull-down
27. Interrupt
28. External Interrupt
29. Timer
30. PWM
فصل ۴ — Analog
31. Analog Signal
32. ADC
33. Potentiometer
34. Analog Sensor
35. Reading Sensor
36. Mapping
37. Filtering
38. Sampling
فصل ۵ — Sensors for Robotics
39. Sensor چیست؟
40. Ultrasonic
41. IR
42. Light Sensor
43. Temperature
44. Encoder
45. Distance Measurement
46. Sensor Noise
47. Sensor Calibration
فصل ۶ — Motors
48. DC Motor
49. Motor Driver
50. H-Bridge
51. L298N
52. PWM Speed Control
53. Direction Control
54. Encoder
55. Closed Loop Control
فصل ۷ — Arduino برای ربات
56. Differential Drive
57. کنترل دو موتور
58. خواندن Encoder
59. محاسبه سرعت چرخ
60. کنترل سرعت
61. Line Following
62. Obstacle Avoidance
63. Robot Controller
فصل ۸ — Communication
64. UART
65. Serial Monitor
66. TX / RX
67. I2C
68. SPI
69. ارتباط سنسورها
70. Arduino ↔ Python
فصل ۹ — Proteus
این بخش برای YouTube هم بسیار جذاب است.
71. Proteus چیست؟
72. ساخت مدار
73. Arduino در Proteus
74. LED
75. Button
76. Sensor
77. Motor
78. شبیهسازی مدار ربات
فصل ۱۰ — پروژه نهایی
ساخت:
Mini Autonomous Robot
Arduino
│
┌─────────┼─────────┐
│ │ │
Sensors Motors Serial
│ │ │
└────┬────┘ │
│ │
Robot Python
و در صورت امکان:
Proteus
↓
Simulation
↓
Arduino
↓
Real Hardware
اما یک تغییر مهم در معماری دورهها
من این چهار دوره را دقیقاً پشت سر هم منتشر نمیکنم.
چون برای YouTube باید موتور جذب مخاطب هم داشته باشیم.
بنابراین از نظر تولید محتوا:
ورودیهای بزرگتر:
Arduino
Python
Computer Vision
↓
ورودی تخصصیتر:
PyBullet
AI
↓
محتوای Advanced:
RL
Digital Twin
Sim-to-Real
و مهمتر از همه: پروژهها باید مشترک باشند
ما نمیخواهیم ۶ دوره جدا داشته باشیم که هیچ ارتباطی با هم ندارند.
مثلاً یک پروژه واحد داشته باشیم:
🤖 Bimetral Autonomous Warehouse Robot
و هر دوره یک قطعه از آن را بسازد.
Arduino Course
↓
Motor + Encoder + Sensors
↓
Python Course
↓
Robot Software
↓
Computer Vision
↓
Camera Perception
↓
PyBullet
↓
Simulation
↓
AI
↓
Intelligent Perception
↓
RL
↓
Autonomous Decision
↓
Digital Twin
↓
Sim-to-Real
↓
REAL AGV
این داستان اصلی تمام محصولات Bimetral میشود.
ترتیب یادگیری خودت هم همین باشد
اگر هدف اصلی خودت این است که نهایتاً ربات واقعی بسازی، من این ترتیب را پیشنهاد میکنم:
1. Arduino & Electronics
↓
2. Python
↓
3. Computer Vision
↓
4. PyBullet / AGV
↓
5. Machine Learning
↓
6. Reinforcement Learning
↓
7. Digital Twin
↓
8. Sim-to-Real
↓
9. Real Robot
و نکته مهم این است که لازم نیست برای شروع YouTube منتظر تمام شدن این دورهها بمانی.
تو همین الان میتوانی تولید محتوای Arduino/Python/PyBullet را شروع کنی و همزمان خودت مسیر یادگیری را جلو ببری.
در واقع بهترین استراتژی برای Bimetral این است:
یاد بگیر → یک پروژه کوچک بساز → آن را شبیهسازی کن → مشکلش را پیدا کن → ویدیوی YouTube بساز → نسخه کاملتر را تبدیل به دوره کن.
این مدل هم برای یادگیری خودت واقعیتر است، هم برای YouTube محتوا تولید میکند، و هم در نهایت تو را به همان چیزی میرساند که از ابتدا هدف گذاشته بودیم: یک ربات واقعی که ابتدا در Simulation ساخته و آزمایش شده و بعد به Reality منتقل میشود.
الویت برای یوتیوب
دقیقاً؛ با یک اصلاح مهم در اولویتبندی.
ما ۷ دوره/مسیر داریم و AGV ستون فقرات کل اکوسیستم Bimetral است:
| # | دوره | نقش |
|---|---|---|
| 1 | 🤖 PyBullet / AGV / AMR | 🎯 پروژه اصلی و Portfolio |
| 2 | 🐍 Python for Engineering & Robotics | جذب مخاطب + پایه تمام پروژهها |
| 3 | 👁 Computer Vision for Robotics | جذب مخاطب + Perception ربات |
| 4 | 🧠 AI / Machine Learning for Robotics | تخصصی + اتصال به Vision/AGV |
| 5 | 🎮 Reinforcement Learning for Robotics | پیشرفته + Autonomous Robotics |
| 6 | 🌐 Digital Twin & Sim-to-Real for Robotics | مرحله نهایی و بسیار تخصصی |
| 7 | 🔌 Arduino & Embedded Electronics for Robotics | جذب مخاطب + پل Simulation → Hardware |
و بله، فاز اول YouTube همین ۳ مسیر است:
① PyBullet / AGV
ما همان دورهای که الان تا جلسه ۸ پیش رفتهایم ادامه میدهیم.
جلسه 1
↓
...
جلسه 8 ✅
↓
جلسه 9
↓
...
AGV
↓
AMR
↓
Vision
↓
AI
↓
Smart Warehouse
این ستون اصلی است و نباید متوقفش کنیم.
② Python for Engineering & Robotics
همزمان از جلسه ۱ شروع میکنیم.
Python پایهای است که بعداً در همه مسیرها استفاده میشود:
Python
├── PyBullet
├── OpenCV
├── AI
├── RL
├── Arduino
└── Digital Twin
پس این یکی هم از همان ابتدا بسیار منطقی است.
③ Arduino & Embedded Electronics for Robotics
این هم همزمان شروع میشود.
چرا؟
چون Arduino برای YouTube یک ورودی بسیار خوب و قابلفهم است:
LED
↓
Button
↓
Sensor
↓
Motor
↓
Encoder
↓
Mini Robot
↓
Python
↓
Real Robot
و بعداً همین سختافزار میتواند به پروژه اصلی ما وصل شود.
اما نکته مهم:
من نمیخواهم این سه دوره را سه پروژه کاملاً جدا جلو ببریم.
بلکه باید آنها را به یکدیگر وصل کنیم.
مثلاً:
Python
یاد میگیری:
robot_speed = 0.5
Arduino
همان مفهوم را روی سختافزار میبینی:
Python
↓
Serial
↓
Arduino
↓
Motor
PyBullet
بعد همان رفتار را در Simulation میبینی:
Python
↓
PyBullet
↓
AGV
↓
Motor
یعنی دانشجو کمکم متوجه میشود:
یک منطق رباتیک را میتوانم در Software، Simulation و Hardware ببینم.
این دقیقاً همان چیزی است که بعداً به Sim-to-Real منتهی میشود.
بعد از این سه چه میشود؟
وقتی این سه مسیر به اندازه کافی پایه ساختند، وارد:
فاز دوم
Computer Vision
میشویم.
Python
+
Arduino
+
PyBullet
↓
Computer Vision
بعد:
فاز سوم
AI / Machine Learning
Python
+
Computer Vision
+
PyBullet
↓
AI
بعد:
فاز چهارم
Reinforcement Learning
AGV
+
Simulation
+
AI
↓
RL
و در نهایت:
فاز پنجم
Digital Twin + Sim-to-Real
Simulation
↕
Digital Twin
↕
Real Robot
↕
Sensors / Motors
↕
AI
پس نقشه کلان ما این است
BIMETRAL
│
┌─────────┴─────────┐
│ │
جذب مخاطب پروژه اصلی
│ │
┌──────┴──────┐ │
│ │ │
Python Arduino PyBullet/AGV
│ │ │
└──────┬──────┘ │
│ │
└─────────┬─────────┘
│
Computer Vision
│
▼
AI
│
▼
RL
│
▼
Digital Twin
│
▼
Sim-to-Real
│
▼
🤖 REAL AGV
بنابراین از همین الان:
مسیر ۱: PyBullet → ادامه از جلسه ۹
مسیر ۲: Python → جلسه ۱
مسیر ۳: Arduino → جلسه ۱
و فعلاً Computer Vision، AI، RL و Digital Twin را شروع نمیکنیم؛ فقط ساختارشان را آماده نگه میداریم.
این تصمیم باعث میشود همزمان محتوای قابلجستوجوی بیشتری برای جذب مخاطب داشته باشیم، ولی تمرکزمان را روی هدف اصلی یعنی ساخت AGV/AMR و رسیدن به ربات واقعی از دست ندهیم.
8. و اینجا اتفاقاً یک مزیت تجاری فوقالعاده ایجاد میشود
ببین چه اکوسیستمی میتوانیم داشته باشیم:
Bimetral
│
┌────────────┼────────────┐
│ │ │
Arduino Python PyBullet
│ │ │
│ │ │
└────────────┼────────────┘
│
Robotics
│
┌─────────┴─────────┐
│ │
Computer Vision AI
│ │
└─────────┬─────────┘
│
AGV
│
AMR
│
Digital Twin
│
Sim-to-Real
حالا یک دانشجو ممکن است از هر نقطه وارد شود.
مثلاً:
مشتری شماره ۱
از YouTube:
Arduino LED
میآید.
↓
Arduino Course
↓
Proteus
↓
Python
↓
Robotics
مشتری شماره ۲
جستجو میکند:
Python Robotics
↓
Python Course
↓
PyBullet
↓
AGV
مشتری شماره ۳
جستجو میکند:
OpenCV Object Detection
↓
Computer Vision
↓
Robot Vision
↓
AGV
مشتری شماره ۴
جستجو میکند:
PyBullet AGV
↓
AGV Course
↓
Computer Vision
↓
AI
این چیزی است که ما میخواستیم.
قیف را تنگ نکردهایم؛ چندین ورودی برای یک اکوسیستم ساختهایم.
9. پس YouTube هم نباید فقط یک مسیر داشته باشد
این نکته برای سؤال قبلی تو هم خیلی مهم است.
Bimetral میتواند چند Content Pillar داشته باشد:
🟦 Pillar 1 — Arduino
مخاطب مبتدی و Electronics
🟩 Pillar 2 — Python
مخاطب Programming
🟨 Pillar 3 — Simulation
مخاطب Robotics/Engineering
🟥 Pillar 4 — Computer Vision
مخاطب AI/Vision
🟪 Pillar 5 — Robotics Projects
مخاطب حرفهایتر
ولی همه آنها یک هویت دارند:
Build, Simulate and Program Robots
10. یک نکته خیلی مهم درباره دوره PyBullet فعلی تو
نقشه ۹۵ جلسهای که فرستادی لازم نیست تغییر اساسی کند.
چون آن دوره قرار است:
AGV/AMR Simulation
باشد.
در آنجا OpenCV و ML و RL وارد میشوند چون جزئی از محصول نهایی AGV هستند.
اما آنها را در حدی که برای پروژه لازم است آموزش میدهیم.
مثلاً در PyBullet:
«برای اینکه AGV بتواند جسم قرمز را ببیند، این مقدار OpenCV لازم داریم.»
اما قرار نیست آنجا کل Computer Vision را تدریس کنیم.
در دوره Computer Vision:
همان مسئله را عمیقتر و از پایه تا پیشرفته آموزش میدهیم.
11. بنابراین یک قانون برای تمام دورههای Bimetral داشته باشیم
این قانون را پیشنهاد میکنم:
هر دوره یک Core Skill دارد؛ سایر تکنولوژیها فقط به اندازهای آموزش داده میشوند که برای استفاده از آن Core Skill لازم است.
مثلاً:
Python Course
Core:
Python
Arduino = فقط Integration
OpenCV = فقط Integration
PyBullet = فقط Integration
Arduino Course
Core:
Electronics + Embedded + Arduino
Python = Integration
Proteus = Integration
Computer Vision Course
Core:
Computer Vision
Python = ابزار
NumPy = ابزار
OpenCV = ابزار اصلی
PyBullet = Integration
AGV Course
Core:
Robotics Simulation + AGV/AMR
Python = ابزار
PyBullet = ابزار اصلی
OpenCV = Integration
LiDAR = Integration
AI = Integration
12. این یعنی یک دانشجو مجبور نیست همه دورهها را بخرد
ولی اگر بخواهد حرفهای شود، بهصورت طبیعی از یک دوره به دوره دیگر حرکت میکند.
مثلاً:
Arduino
↓
Python
↓
Simulation
↓
Computer Vision
↓
AI
↓
Robotics
و این دقیقاً همان چیزی است که برای فروش دورههای متعدد در سایت میخواهیم.
13. بنابراین من نقشه نهایی Bimetral را این میدانم
فعلاً اینها را به عنوان دورههای اصلی در نظر بگیریم:
| مسیر | دوره |
|---|---|
| 🔌 Electronics | Arduino & Embedded Electronics |
| 🔧 Embedded | AVR / Microcontrollers |
| 💻 Programming | Python for Engineering & Robotics |
| 👁 Vision | Computer Vision for Robotics |
| 🧠 AI | Machine Learning for Robotics |
| 🤖 Simulation | PyBullet Robotics Simulation |
| 🚚 Robotics | AGV / AMR |
| 🏭 Industrial | Smart Warehouse / Digital Twin |
| 🔄 Advanced | Sim-to-Real |
و اینها به هم متصلاند، اما همدیگر را تکرار نمیکنند.
و حالا مهمترین تصمیم برای همین الان
با توجه به اینکه کانال YouTube را ساختهای و دوره PyBullet را هم از قبل داریم، من اصلاً پیشنهاد نمیکنم الان برویم و ۹ دوره را همزمان طراحی کنیم.
ترتیب عملی ما:
مرحله ۱ — همین الان
🔌 Arduino + Electronics + Proteus
چون خودت هم داری همین مسیر را یاد میگیری و برای YouTube محتوای بسیار قابلنمایشی دارد.
↓
مرحله ۲
💻 Python for Engineering & Robotics
↓
مرحله ۳
🤖 PyBullet / AGV
که نقشه ۹۵ جلسهای آن را داریم.
↓
مرحله ۴
👁 Computer Vision for Robotics
↓
مرحله ۵
🧠 AI for Robotics
↓
و در نهایت:
Digital Twin + Sim-to-Real + Real Robot
بنابراین نه، آن ۴–۵ جلسه Arduino/OpenCV/AI را بهعنوان آموزش کامل نگه نمیداریم. آنها را در دوره Python به چند جلسهی Integration تبدیل میکنیم و آموزش عمیقشان را به دوره تخصصی خودشان منتقل میکنیم.
این کار نهتنها همپوشانی را حل میکند، بلکه به نظرم مدل تجاری Bimetral را هم بسیار بهتر میکند: هر مهارت یک محصول مستقل دارد، ولی تمام محصولات به یک مقصد مشترک یعنی ساخت و شبیهسازی ربات واقعی وصل هستند.
مهممممممممممممممممممممممممممممممممممممممممم ***************************
بنابراین یک قانون برای تمام دورههای Bimetral داشته باشیم
این قانون را پیشنهاد میکنم:
هر دوره یک Core Skill دارد؛ سایر تکنولوژیها فقط به اندازهای آموزش داده میشوند که برای استفاده از آن Core Skill لازم است.
مثلاً:
Python Course
Core:
Python
Arduino = فقط Integration
OpenCV = فقط Integration
PyBullet = فقط Integration
Arduino Course
Core:
Electronics + Embedded + Arduino
Python = Integration
Proteus = Integration
Computer Vision Course
Core:
Computer Vision
Python = ابزار
NumPy = ابزار
OpenCV = ابزار اصلی
PyBullet = Integration
AGV Course
Core:
Robotics Simulation + AGV/AMR
Python = ابزار
PyBullet = ابزار اصلی
OpenCV = Integration
LiDAR = Integration
AI = Integration
12. این یعنی یک دانشجو مجبور نیست همه دورهها را بخرد
ولی اگر بخواهد حرفهای شود، بهصورت طبیعی از یک دوره به دوره دیگر حرکت میکند.
مثلاً:
Arduino
↓
Python
↓
Simulation
↓
Computer Vision
↓
AI
↓
Robotics
و این دقیقاً همان چیزی است که برای فروش دورههای متعدد در سایت میخواهیم.
13. بنابراین من نقشه نهایی Bimetral را این میدانم
فعلاً اینها را به عنوان دورههای اصلی در نظر بگیریم:
| مسیر | دوره |
|---|---|
| 🔌 Electronics | Arduino & Embedded Electronics |
| 🔧 Embedded | AVR / Microcontrollers |
| 💻 Programming | Python for Engineering & Robotics |
| 👁 Vision | Computer Vision for Robotics |
| 🧠 AI | Machine Learning for Robotics |
| 🤖 Simulation | PyBullet Robotics Simulation |
| 🚚 Robotics | AGV / AMR |
| 🏭 Industrial | Smart Warehouse / Digital Twin |
| 🔄 Advanced | Sim-to-Real |
و اینها به هم متصلاند، اما همدیگر را تکرار نمیکنند.
و حالا مهمترین تصمیم برای همین الان
با توجه به اینکه کانال YouTube را ساختهای و دوره PyBullet را هم از قبل داریم، من اصلاً پیشنهاد نمیکنم الان برویم و ۹ دوره را همزمان طراحی کنیم.
ترتیب عملی ما:
مرحله ۱ — همین الان
🔌 Arduino + Electronics + Proteus
چون خودت هم داری همین مسیر را یاد میگیری و برای YouTube محتوای بسیار قابلنمایشی دارد.
↓
مرحله ۲
💻 Python for Engineering & Robotics
↓
مرحله ۳
🤖 PyBullet / AGV
که نقشه ۹۵ جلسهای آن را داریم.
↓
مرحله ۴
👁 Computer Vision for Robotics
↓
مرحله ۵
🧠 AI for Robotics
↓
و در نهایت:
Digital Twin + Sim-to-Real + Real Robot
بنابراین نه، آن ۴–۵ جلسه Arduino/OpenCV/AI را بهعنوان آموزش کامل نگه نمیداریم. آنها را در دوره Python به چند جلسهی Integration تبدیل میکنیم و آموزش عمیقشان را به دوره تخصصی خودشان منتقل میکنیم.
این کار نهتنها همپوشانی را حل میکند، بلکه به نظرم مدل تجاری Bimetral را هم بسیار بهتر میکند: هر مهارت یک محصول مستقل دارد، ولی تمام محصولات به یک مقصد مشترک یعنی ساخت و شبیهسازی ربات واقعی وصل هستند.
