إعداد البرامج

تثبيت SDK، والاتصال بالشبكة، وROS2 مع التخطيط ثنائي الذراع MoveIt2، ولوحة teleop للمتصفح، وتكامل نموذج VLA، وخط أنابيب البيانات بنقرة واحدة. كل شيء بدءًا من اكتشاف الشبكة وحتى التلاعب المستقل.

انتقل إلى القسم:

الخطوة 1 – تثبيت SDK

تثبيت SDK

يتم التحكم في VLAI L1 عبر roboticscenter Python SDK، الذي يوفر كلاً من واجهات برمجة التطبيقات للمهام عالية المستوى والتحكم المشترك منخفض المستوى. التثبيت على جهاز الكمبيوتر المضيف الخاص بك.

إنشاء بيئة افتراضية

python -m venv ~/.venvs/vlai
source ~/.venvs/vlai/bin/activate

قم بتثبيت SDK

pip install roboticscenter[l1]

التحقق من التثبيت

python -c "from roboticscenter import L1; print('SDK OK')"
rc --version   # command-line tool
الخطوة 2 - اتصال الشبكة

الاتصال بـ L1

يقوم L1 بتشغيل مكدس ROS2 الخاص به ويكشف عن واجهة برمجة تطبيقات التحكم gRPC عبر شبكتك المحلية. يتصل جهاز الكمبيوتر المضيف الخاص بك به عبر شبكة WiFi أو Ethernet.

الإعداد الأولي للشبكة

# Power on the L1 — it will connect to the configured WiFi automatically
# Then discover it on your network:
rc discover
# Output: L1-XXXX found at 192.168.1.45 (port 8888)

الاتصال والتحقق

rc connect --device l1 --host 192.168.1.45
# Output: Connected to VLAI L1 (firmware v2.1.4, battery: 87%)

# Or use the Python SDK:
from roboticscenter import L1

robot = L1(host="192.168.1.45")
robot.connect()
print(robot.get_status())
# {'battery': 87, 'arm_left': 'ready', 'arm_right': 'ready', 'base': 'ready'}
robot.disconnect()

تعيين عنوان IP ثابت (موصى به للاستخدام المعملي)

rc config set network.static_ip 192.168.1.100
rc config set network.gateway 192.168.1.1
rc config apply   # reboots the L1 network stack
الخطوة 3 - ROS2 + MoveIt2

ROS2 مع نظام التحكم MoveIt2 ثنائي الذراع

يتم شحن L1 مع تشغيل ROS2 Humble على متنه. يتصل الكمبيوتر المضيف الخاص بك كعقدة ROS2 عبر نفس الشبكة. أنت بحاجة إلى ROS2 Humble على مضيفك.

تثبيت ROS2 Humble على المضيف (Ubuntu 22.04)

sudo apt update && sudo apt install ros-humble-desktop \
  ros-humble-moveit ros-humble-ros2-control \
  ros-humble-ros2-controllers -y

قم بتشغيل جسر L1 ROS2

# On the L1 (via SSH or the onboard terminal):
ros2 launch vlai_l1_ros2 l1_bringup.launch.py

# On your host PC:
source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=42   # must match the L1's domain ID
ros2 topic list   # should show /l1/left_arm/joint_states, etc.

تخطيط MoveIt2 ثنائي الذراع

source /opt/ros/humble/setup.bash
ros2 launch vlai_l1_moveit l1_moveit.launch.py

# In another terminal — plan and execute a bimanual task:
ros2 run vlai_l1_moveit bimanual_demo
# Executes: left arm picks object, right arm receives and places

التحكم الفردي بالذراع عبر بايثون

from roboticscenter import L1
import numpy as np

robot = L1(host="192.168.1.45")
robot.connect()

# Move left arm to Cartesian pose (position + quaternion)
pose = {
    "position": [0.4, 0.1, 0.35],    # x, y, z in meters from base
    "orientation": [0, 0, 0, 1]      # quaternion xyzw
}
robot.left_arm.move_to_pose(pose, speed=0.3)

# Read current joint state
state = robot.left_arm.get_joint_state()
print("Left arm joints:", state.positions)  # 8 values in radians

robot.disconnect()

السيطرة على قاعدة المحمول

من مركز الروبوتات استيراد L1 الروبوت = L1(المضيف = "192.168.1.45") روبوت.اتصال() # تحرك للأمام مسافة متر واحد بسرعة 0.5 م/ث robot.base.move(x=1.0, y=0.0, السرعة=0.5) # تدوير 90 درجة في اتجاه عقارب الساعة robot.base.rotate(angle=-90, speed=0.3) # درجة # ضبط ارتفاع الرفع (106 إلى 162 سم) robot.base.set_lift_height(130) # سم # توقف robot.base.stop() قطع الاتصال ()
الخطوة 4 - متصفح Teleop

لوحة التشغيل عن بعد للمتصفح

يشتمل L1 على لوحة teleop مدمجة في المتصفح — لا يلزم تثبيت أي برنامج. انتقل إلى IP الخاص بـ L1 على المنفذ 8888.

الوصول إلى اللوحة

# Open in browser:
http://192.168.1.45:8888

# Or launch via CLI:
rc teleop --device l1

توفر اللوحة:

  • التحكم بلوحة المفاتيح WASD لقاعدة الهاتف المحمول
  • ذراع التحكم الديكارتي الأيسر/الأيمن (انقر مع السحب في منفذ العرض ثلاثي الأبعاد)
  • أزرار فتح/إغلاق القابض
  • تغذية الكاميرا من جميع الكاميرات المثبتة
  • بنقرة واحدة تسجيل الحلقة بدء / إيقاف
  • لوحة حالة البطارية والحالة المشتركة

VR teleop (المطور Pro و Max)

rc teleop --device l1 --mode vr
# Opens a WebXR session — put on Meta Quest and visit the displayed URL
الخطوة 5 – تكامل VLA

تكامل نموذج الرؤية واللغة والعمل

تشتمل مستويات L1 Developer Pro وMax على حوسبة مدمجة قادرة على تشغيل استدلال VLA محليًا. بالنسبة لجميع المستويات، يمكنك تشغيل استدلال VLA على جهاز كمبيوتر مضيف وبث الإجراءات إلى الروبوت.

تشغيل OpenVLA على جهاز الكمبيوتر المضيف (أي طبقة)

نقطة تثبيت مركز الروبوتات[VLA] من مركز الروبوتات استيراد L1 من roboticscenter.vla قم باستيراد OpenVLAClient الروبوت = L1(المضيف = "192.168.1.45") روبوت.اتصال() فلا = OpenVLAClient( نموذج = "openvla/openvla-7b"، جهاز = "cuda" # أو "وحدة المعالجة المركزية" للاستدلال الأبطأ ) # التقاط الملاحظة obs = robot.capture_observation() # يُرجع صورة RGB + الحالة المشتركة # احصل على إجراء من VLA (مشروط بالنص) الإجراء = vla.predict( صورة=obs["image"], تعليمات = "التقط الكتلة الزرقاء وضعها على اللوحة الحمراء" ) # الإجراء: إملاء دلتا مفصل الذراع + أمر القابض # تنفيذ الإجراء على الروبوت robot.execute_action(الإجراء) قطع الاتصال ()

استدلال VLA على الجهاز (Developer Pro/Max)

rc deploy vla \
  --model openvla/openvla-7b \
  --quantize int4   # fits in 6GB VRAM on V3 compute (70 TOPS)

# Now VLA runs on the L1's onboard compute — no host PC needed:
rc run policy \
  --task "Pick up the blue block and place it on the red plate" \
  --max_steps 50
استكشاف الأخطاء وإصلاحها

القضايا المشتركة

خطأ 1 لم يجد RC Discover أي أجهزة

L1 ليس على نفس الشبكة الفرعية. غالبًا ما تتمتع شبكات WiFi الخاصة بالمؤسسات بعزل العميل - راجع قسم تكنولوجيا المعلومات أو استخدم جهاز توجيه مخصصًا.

# Try direct connection by IP if you know it:
rc connect --device l1 --host 192.168.1.45

# Or connect the L1 via Ethernet directly to your laptop:
# Set your laptop to 192.168.2.1/24, L1 will appear at 192.168.2.100
خطأ 2 فشل تخطيط MoveIt2: لم يتم العثور على مسار

تكون الوضعية المستهدفة خارج مساحة العمل التي يمكن الوصول إليها بالذراع أو تتصادم مع جسم الروبوت.

# Check reachability first:
from roboticscenter import L1
robot = L1(host="192.168.1.45")
robot.connect()
reachable = robot.left_arm.check_pose_reachable(
    position=[0.4, 0.1, 0.35])
print("Reachable:", reachable)  # if False, adjust target pose
robot.disconnect()

عمل البرمجيات؟ ابدأ بجمع البيانات.

بمجرد تحريك الأذرع، فإن الخطوة التالية هي التشغيل عن بعد وتسجيل مجموعة البيانات.