הגדרת תוכנה
התקנת SDK, תצורת מנהל ההתקן של SocketCAN, שילוב ROS2, הגדרת LeRobot והפניה ל-Python API. הכל מהתקנה חדשה של אובונטו ועד לזרוע רצה.
קפוץ לקטע:
התקנת SDK
ה- OpenArm SDK מופץ כ- roboticscenter חבילת Python. זה כולל openarm_can (ספריית ממשק CAN ברמה נמוכה) וכל כלי השירות התומכים.
צור סביבה וירטואלית (מומלץ)
python3 -m venv ~/.venvs/openarm
source ~/.venvs/openarm/bin/activate
התקן את ה-SDK
pip install roboticscenter
ודא את ההתקנה
python3 -c "import openarm_can; print(openarm_can.__version__)"
אתה אמור לראות מחרוזת גרסה. אם אתה רואה שגיאת ייבוא, עיין ב- סעיף פתרון בעיות.
התקן ממקור (אופציונלי)
git clone https://github.com/reazon-research/openarm.git
cd openarm
pip install -e .
הגדרת מנהל ההתקן של SocketCAN
OpenArm מתקשר באמצעות אפיק CAN באמצעות SocketCAN - תת-מערכת ליבת לינוקס. הדרייברים כבר נמצאים בקרנל; אתה רק צריך לטעון את המודולים ולהעלות את הממשק.
טען מודולי ליבה
sudo modprobe can
sudo modprobe can_raw
sudo modprobe slcan # for USB-serial CAN adapters (CANable)
העלה את ממשק ה-CAN
עבור מתאם CANable 2.0 USB הכלול:
# Find the USB serial device (usually /dev/ttyACM0 or /dev/ttyUSB0)
ls /dev/ttyACM*
# Bring up CAN interface at 1 Mbps
sudo slcand -o -c -s8 /dev/ttyACM0 can0
sudo ip link set up can0
ודא שהממשק פועל
ip link show can0
# Expected output: can0: <NOARP,UP,LOWER_UP> mtu 16 ...
הפוך אותו לעקבי לאורך אתחולים מחדש
צור שירות מערכת או הוסף אליו /etc/rc.local. ראה את מדריך התקנה של SocketCAN עבור תבנית שירות מערכת מלאה.
בדוק תקשורת CAN
# Install can-utils
sudo apt install can-utils -y
# Listen for CAN packets
candump can0
# In another terminal, power on the arm and look for motor heartbeats
שילוב ROS2
OpenArm נשלח עם openarm_ros2, חבילה מלאה מבוססת ros2_control. הוא תומך במצב חומרה מזויף לבדיקה ללא הזרוע הפיזית.
התקן את ROS2 Humble (Ubuntu 22.04)
sudo apt update && sudo apt install software-properties-common curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | \
sudo apt-key add -
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" \
> /etc/apt/sources.list.d/ros2.list'
sudo apt update
sudo apt install ros-humble-desktop ros-humble-ros2-control \
ros-humble-ros2-controllers ros-humble-joint-state-publisher-gui -y
שכפל ובנה openarm_ros2
mkdir -p ~/openarm_ws/src && cd ~/openarm_ws/src
git clone https://github.com/reazon-research/openarm_ros2.git
cd ~/openarm_ws
source /opt/ros/humble/setup.bash
colcon build --symlink-install
הפעלה במצב חומרה מזויפת (אין צורך בזרוע)
source ~/openarm_ws/install/setup.bash
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true
הפעל עם חומרה אמיתית
ros2 launch openarm_ros2 openarm.launch.py \
use_fake_hardware:=false \
can_interface:=can0
שלח פקודת תנועת בדיקה
ros2 topic pub /joint_trajectory_controller/joint_trajectory \
trajectory_msgs/msg/JointTrajectory \
'{joint_names: ["joint1"], points: [{positions: [0.5], time_from_start: {sec: 2}}]}'
ראה את מדריך בקרת ROS2 עבור תצורת בקר מלאה, אפשרויות הפעלה של קובץ וכוונון מסלול.
אינטגרציה של LeRobot
LeRobot (מאת HuggingFace) היא המסגרת העיקרית לאיסוף נתונים והדרכה למדיניות עבור OpenArm. הוא מטפל בהקלטת פרקים, עיצוב מערך נתונים ומתממשק ישירות עם ACT ו-Diffusion Policy.
התקן את LeRobot
pip install lerobot
הגדר את הרובוט שלך
צור קובץ תצורה של רובוט עבור OpenArm. LeRobot משתמש בתצורת רובוט מבוסס YAML:
# ~/.lerobot/robots/openarm.yaml
robot_type: openarm
can_interface: can0
num_joints: 8
camera_names:
- wrist_cam
- overhead_cam
הקלט מערך נתונים
python -m lerobot.scripts.control_robot \
--robot.type=openarm \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/openarm-pick-place \
--control.num_episodes=50 \
--control.single_task="Pick up the red cube"
העלה ל- HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/openarm-pick-place
ראה את דף איסוף נתונים לזרימת העבודה המלאה של הקלטת הפרק ובדיקות האיכות.
התחלה מהירה של Python API
ה openarm_can הספרייה מספקת גישה ישירה ברמה נמוכה לכל 8 המפרקים באמצעות SocketCAN. לא נדרש ROS2 לשליטה בסיסית.
שליטה משותפת בסיסית
from openarm_can import OpenArm
# Connect to the arm
arm = OpenArm(can_interface="can0")
arm.connect()
# Enable all joints
arm.enable_all()
# Move joint 1 to 45 degrees (in radians: ~0.785)
arm.set_position(joint_id=1, position=0.785, kp=50, kd=1)
# Read current state
state = arm.get_state()
print(f"Joint positions: {state.positions}")
print(f"Joint velocities: {state.velocities}")
print(f"Joint torques: {state.torques}")
# Zero torque (safe shutdown)
arm.disable_all()
arm.disconnect()
מצב השליטה שלי
from openarm_can import OpenArm, MITCommand
arm = OpenArm(can_interface="can0")
arm.connect()
arm.enable_all()
# Send a MIT control command: position + velocity + torque feedforward
cmd = MITCommand(
joint_id=1,
position=0.5, # rad
velocity=0.0, # rad/s
kp=80.0, # position gain
kd=2.0, # velocity gain
torque_ff=0.0 # feedforward torque (Nm)
)
arm.send_mit_command(cmd)
arm.disable_all()
arm.disconnect()
קריאת נתוני חיישן בלולאה
import time
from openarm_can import OpenArm
arm = OpenArm(can_interface="can0", control_rate_hz=500)
arm.connect()
arm.enable_all()
for _ in range(1000): # 2 seconds at 500 Hz
state = arm.get_state()
print(state.positions)
time.sleep(1 / 500)
arm.disable_all()
arm.disconnect()
תמיכה בסימולציה
OpenArm תומך בשלוש סביבות סימולציה. כולם חולקים הגדרות מצב זהות ומרחבי פעולה עם החומרה האמיתית, מה שמאפשר העברה מ-sim-to-real.
ROS2 חומרה מזויפת (מובנית - ללא התקנה)
הדרך המהירה ביותר לבדוק תוכנה ללא הזרוע הפיזית. מצב משקף את ממשק החומרה האמיתי.
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true
MuJoCo
מודל פיזיקה מכויל. אידיאלי לאימון מדיניות והעברה מ-sim-to-real.
pip install mujoco
# Clone the OpenArm MuJoCo model
git clone https://github.com/reazon-research/openarm_mujoco.git
# Run the default sim
python openarm_mujoco/examples/run_sim.py
NVIDIA אייזק סים
סימולציה מואצת של GPU להפקת נתונים סינתטיים בקנה מידה גדול. דורש NVIDIA GPU ורישיון Isaac Sim. לִרְאוֹת מאמר הפלטפורמה הממוקדת בנתונים לפרטי תצורת אייזק סים.
יישור Sim-to-Real - דגמי הסימולציה של OpenArm משקפים קינמטיקה אמיתית של החומרה, דינמיקה ומגבלות הפעלה. זה אומר שאתה יכול לאמן מדיניות בסימולציה ולפרוס אותה ישירות לחומרה אמיתית עם כוונון מינימלי.
3 הבעיות הנפוצות ביותר
no such device can0
ממשק SocketCAN אינו פועל. זה כמעט תמיד בגלל שמתאם ה-USB CAN אינו מחובר, או שמודולי הליבה אינם נטענים.
לִקְבּוֹעַ:
# 1. Check if the USB adapter is detected
lsusb | grep -i "can\|serial"
# 2. Load the modules
sudo modprobe can && sudo modprobe can_raw && sudo modprobe slcan
# 3. Bring up the interface
sudo slcand -o -c -s8 /dev/ttyACM0 can0
sudo ip link set up can0
# 4. Verify
ip link show can0
arm.enable_all()
מנועים אינם מקבלים פקודות. נגרמת לרוב על ידי מזהי CAN שגויים, מסגרת שגיאה באוטובוס CAN או אספקת חשמל לא מספקת.
לִקְבּוֹעַ:
# 1. Check for CAN error frames
candump can0 | grep -i "error"
# 2. Check power supply — arm requires 24V @ 150W minimum
# Voltage sag under load causes motor timeouts
# 3. Verify motor CAN IDs match your config
python3 -c "from openarm_can import OpenArm; a=OpenArm('can0'); a.scan_motors()"
# 4. Reset the arm (power cycle) and retry
controller_manager not found
חבילות ros2_control אינן מותקנות או שסביבת העבודה לא מקורה כהלכה.
לִקְבּוֹעַ:
# 1. Install missing packages
sudo apt install ros-humble-ros2-control \
ros-humble-ros2-controllers \
ros-humble-joint-state-publisher-gui -y
# 2. Rebuild the workspace
cd ~/openarm_ws && colcon build --symlink-install
# 3. Source both ROS2 and your workspace (order matters)
source /opt/ros/humble/setup.bash
source ~/openarm_ws/install/setup.bash
# 4. Retry launch
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true
עדיין תקוע? שאל על פורום OpenArm או לבדוק קיים בעיות GitHub.