ملخص سريع
- قم بتثبيت جينيزيس في 5 دقائق باستخدام
pip install genesis-worldأو دوكير لتسريع المعالجة باستخدام GPU. - قم بتحقيق جسميات صلبة، مفصلية، ولينة باستخدام ملفات YAML/JSON دون الحاجة إلى البرمجة للتشغيل الأساسي.
- إنشاء أكثر من 10,000 بيئة موازية لتدريب التعلم المتقان باستخدام Ray أو MPI.
- استيراد الروبوتات بالتنسيق URDF/MJCF بأمر واحد وتثبيت أجهزة الاستشعار (ليدار، كاميرات) عبر واجهة برمجة التطبيقات Python.
- تدريب السياسات على نطاق واسع باستخدام Stable Baselines3 أو RLlib - تصدير البيانات إلى CSV/JSON للتحليل.
1. التثبيت والسيناريو الأول
تثبيت جينيزيس
اختر الطريقة المناسبة حسب متطلبات الأجهزة وعملك:
خيار 1: تثبيت باستخدام pip (موصى به لمعظم المستخدمين)
pip install "genesis-world>=2.4.0" --upgrade
تحقق من التثبيت:
python -c "import genesis; print(genesis.__version__)"
الخرج المتوقع:
2.4.0
خيار 2: استخدام دوكير (مستعجل بواسطة GPU)
docker pull genesisworld/genesis:latest
docker run --gpus all -it genesisworld/genesis:latest python -c "import genesis; print('GPU detected:', genesis.is_gpu_available())"
الخرج المتوقع:
GPU detected: True
خيار 3: تثبيت من المصدر (للطورين)
git clone https://github.com/genesis-sim/genesis.git
cd genesis
pip install -e ".[dev]" # يثبت الاعتمادات التطويرية (اختبار، تصحيح الأخطاء)
إنشاء سيناريو أولي
يستخدم جينيزيس ملفات YAML/JSON لتكوين البيئات. ابدأ ببيئة 2D بسيطة:
-
إنشاء
simple_world.yaml:name: "عالم 2D بسيط" description: "بيئة أساسية تحتوي على 1 عامل وموانع ثابتة." physics: engine: "pybullet" # يدعم "pybullet"، "mujoco"، أو "custom" gravity: [0.0, 0.0, -9.81] agents: - name: "agent_0" type: "circle" radius: 0.5 color: [0.0, 0.5, 1.0] # RGB initial_position: [0.0, 0.0] obstacles: - type: "rectangle" width: 2.0 height: 0.2 position: [0.0, -1.0] color: [0.5, 0.0, 0.0] -
تشغيل المحاكاة:
python -m genesis run --config simple_world.yaml --headless Falseالخرج المتوقع: يفتح نافذة مع محاكاة 2D تعرض العامل والموانع.
نقاط الحذر الرئيسية
- خطأ:
ModuleNotFoundError: No module named 'pybullet'→ تثبيت PyBullet:pip install pybullet - خطأ:
CUDA غير متاح→ تأكد من استخدام الأمر دوكير مع GPU أو تثبيت سائقات CUDA وثائق جينيزيس.
2. محاكاة الجسم الصلب، المفصل، واللين
فيزياء الجسم الصلب
عدل simple_world.yaml لإضافة روبوت جسم صلب:
agents:
- name: "ذراع الروبوت"
type: "urdf"
urdf_file: "مسار/إلى/الروبوت.urdf"
initial_position: [1.0, 0.0]
joints:
- name: "joint_1"
type: "revolute"
lower_limit: -1.57
upper_limit: 1.57
الأجسام المفصلية (URDF/MJCF)
-
تحميل ملف URDF عينة (مثلًا من ROS Industrial):
wget https://raw.githubusercontent.com/ros-industrial/franka_description/master/urdf/franka_panda.urdf -O panda.urdf -
تحديث
simple_world.yaml:physics: engine: "mujoco" # أفضل للأجسام المفصلية agents: - name: "panda" type: "urdf" urdf_file: "panda.urdf" initial_position: [0.0, 0.0, 0.5] -
تشغيله باستخدام:
python -m genesis run --config simple_world.yaml
ديناميات الجسم اللين (جديد في الإصدار 2.4.0)
تمكين فيزياء الجسم اللين في التكوين:
physics:
engine: "pybullet"
soft_body:
enabled: True
stiffness: 0.5
damping: 0.1
agents:
- name: "روبوت لين"
type: "mesh"
mesh_file: "soft_robot.obj"
material:
type: "soft"
friction: 0.3
3. البيئات المتوازية لتوليد البيانات
يتميز جينيزيس في محاكاة عالية الإنتاجية لتجميع بيانات التعلم المتقان. استخدم Ray للبيئات الموزعة:
الخطوة 1: تثبيت Ray
pip install "ray[default]"
الخطوة 2: تكوين العوالم المتوازية
إنشاء parallel_worlds.yaml:
num_environments: 1000 # يمكن زيادة العدد إلى 10,000+
base_config: "simple_world.yaml" # إعادة استخدام التكوين الموجود
randomization:
agent_position: True
obstacle_count: [0, 5] # عدد عشوائي للموانع في كل بيئة
الخطوة 3: إطلاق المحاكاة الموزعة
python -m genesis parallel --config parallel_worlds.yaml --backend ray --num_cpus 8
الخرج المتوقع:
[Genesis] تم إطلاق 1000 بيئة عبر 8 معالجات.
[Genesis] تم تمكين تصدير البيانات: /tmp/genesis_data/
تصدير البيانات للتعلم المتقان
يخزن جينيزيس البيانات تلقائيًا في /tmp/genesis_data/ (يمكن تكوينه). تحميلها في Python:
import pandas as pd
df = pd.read_csv("/tmp/genesis_data/agent_trajectories.csv")
print(df.head())
4. استيراد الروبوتات بالتنسيق URDF/MJCF
مثال URDF
- ضع ملف
.urdfالخاص بك في مجلدrobots/. - تحديث
simple_world.yaml:agents: - name: "روبوتي" type: "urdf" urdf_file: "robots/my_robot.urdf" initial_position: [0.0, 0.0, 0.1] sensors: - type: "lidar" range: 5.0 resolution: 0.1
مثال MJCF
- تحويل MJCF إلى URDF باستخدام أدوات MuJoCo.
- استخدام نفس حقل
urdf_fileفي التكوين.
التحقق من صحة URDF
python -m genesis validate --urdf robots/my_robot.urdf
الخرج المتوقع:
[Genesis] تم التحقق من صحة URDF بنجاح.
[Genesis] المفاصل: 6 (دوار: 4، خطي: 2)
5. أجهزة الاستشعار والرسم
إضافة أجهزة الاستشعار للعوامل
امتداد simple_world.yaml:
agents:
- name: "عامل الاستشعار"
type: "circle"
sensors:
- type: "camera"
resolution: [64, 64]
fov: 90
position: [0.0, 0.0, 0.2]
- type: "lidar"
range: 3.0
num_beams: 360
رسم بيانات الاستشعار
شغل مع التوضيح:
python -m genesis run --config simple_world.yaml --render_sensors True
الخرج المتوقع: نافذة مع طبقات الاستشعار في الوقت الفعلي (صور الكاميرات، مسحوبات الليدار).
حفظ الرسومات
python -m genesis run --config simple_world.yaml --output_dir ./renders --save_frames True
الخرج:
الصور المحفوظة في ./renders/ باسم frame_001.png, frame_002.png, وغيرها.
6. تدريب السياسات على نطاق واسع
دمج مع Stable Baselines3
-
تثبيت الاعتمادات الخاصة بالتعلم المتقان:
pip install stable-baselines3[extra] -
إنشاء محيط جينيزيس مخصص (
genesis_env.py):from genesis import GenesisEnv from stable_baselines3.common.env_checker import check_env class GenesisWrapper(GenesisEnv): def __init__(self, config_path="simple_world.yaml"): super().__init__(config_path) self.observation_space = self._get_obs_space() self.action_space = self._get_action_space() def _get_obs_space(self): # تحديد حسب أجهزة الاستشعار الخاصة بك (مثلًا كاميرا + ليدار) return gym.spaces.Box(low=-1, high=1, shape=(64*64*3 + 360,)) def _get_action_space(self): # مطابقة درجات حرية الروبوت الخاص بك return gym.spaces.Box(low=-1, high=1, shape=(6,)) env = GenesisWrapper() check_env(env) # التحقق من صحة البيئة -
تدريب سياسة PPO:
from stable_baselines3 import PPO model = PPO("MlpPolicy", env, verbose=1) model.learn(total_timesteps=10000) model.save("ppo_genesis")
التعلم المتقان الموزع باستخدام RLlib
pip install ray[rllib]
تدريب باستخدام RLlib:
from rllib_genesis import GenesisEnv
from ray.rllib.algorithms.ppo import PPOConfig
config = PPOConfig()
config.env_config["config_path"] = "simple_world.yaml"
config.env_config["num_environments"] = 10
config.num_workers = 4
trainer = config.build()
for i in range(10):
result = trainer.train()
print(f"الدورة {i}, المكافأة: {result['episode_reward_mean']}")
7. مقارنة بين جينيزيس و Isaac Lab و MuJoCo
| الميزة | جينيزيس | NVIDIA Isaac Lab | MuJoCo |
|---|---|---|---|
| دعم متعدد العوامل | أكثر من 10,000 عامل (موزع) | أكثر من 1,000 عامل (مستعجل بواسطة GPU) | محدود (تركيز على عامل واحد) |
| محرك الفيزياء | PyBullet, MuJoCo, مخصص | PhysX (مستعجل بواسطة GPU) | Bullet, فيزياء مخصصة |
| دمج التعلم المتقان | Stable Baselines3, RLlib, PettingZoo | Isaac Gym, OmniGraph | OpenAI Gym, محولات مخصصة |
| عوالم ديناميكية | نعم (تراب، موارد) | نعم (توليد إجرائي) | لا (بيئات ثابتة) |
| الرسم | Matplotlib, PyGame, OpenGL | Omniverse (فائقة الدقة) | أساسي (بدون عرض بالافتراضي) |
| سهولة الاستخدام | ملفات YAML/JSON + واجهة برمجة Python | OmniGraph (تسريب بصري) | XML (منحنى تعليمي حاد) |
| نشر في السحابة | قالبات AWS/GCP | NVIDIA Omniverse Cloud | لا (بدون دعم أصلي) |
| التكلفة | مجاني (برمجيات مفتوحة المصدر) | مجاني (برمجيات مفتوحة المصدر), دعم تجاري | مجاني (برمجيات مفتوحة المصدر), ترخيص تجاري |
عندما تختار جينيزيس:
- تحتاج إلى محاكاة عالية الإنتاجية لعوامل متعددة (مثلًا زحافات الروبوتات هندسة الروبوتات, نمذجة حركة المرور).
- تعمل مع عوالم ديناميكية، توليد إجرائي.
- تفضل عملية Python مع ملفات YAML.
عندما تختار Isaac Lab:
- تحتاج إلى رسم ثلاثي الأبعاد عالي الدقة (مثلًا طبقات إدراك الروبوت).
- فريقك يستخدم Omniverse أو أجهزة NVIDIA.
عندما تختار MuJoCo:
- تركيزك على تعلم متقان لعامل واحد مع فيزياء عالية الدقة.
- تحتاج إلى تثبيت بسيط للبروتوتايب.
ما هو التالي؟
- تجربة العوالم المتوازية: حاول زيادة العدد إلى 1,000 بيئة وتصدير البيانات للتعلم المتقان.
- دمج الروبوت الخاص بك: استبدل
simple_world.yamlبملف URDF/MJCF الخاص بك واختبر دمج أجهزة الاستشعار. - نشر في السحابة: استخدم قالب جينيزيس الخاص بـ AWS/GCP لتشغيل المحاكاة على نطاق واسع.
لحلول الذكاء الاصطناعي الفيزيائي المخصصة - من المحاكاة إلى التنفيذ - يساعد شركة هيبيريون كونسلتينغ في تقييم جاهزية الذكاء الاصطناعي الفيزيائي الفرق في تسليم الأنظمة الملموسة بشكل أسرع.
