ओपनआर्म 101 सेटअप गाइड
अनबॉक्सिंग से लेकर अपनी पहली AI-प्रशिक्षित गति तक इस पथ का अनुसरण करें। कुल मिलाकर लगभग 4-5 घंटे लगते हैं।
अनबॉक्सिंग एवं सुरक्षा जांच
⏱ ~30 मिनटआरंभ करने से पहले
- सुनिश्चित करें कि आपके पास एक स्थिर सतह पर 1m × 1m का स्पष्ट कार्यक्षेत्र है
- Ubuntu 22.04 वाला एक लैपटॉप तैयार रखें (VM काम करता है, देशी को प्राथमिकता)
- हाथ को संचालित रखें बंद नीचे भौतिक निरीक्षण के दौरान
बॉक्स में
निरीक्षण चेकलिस्ट
- सभी 8 जोड़ स्वतंत्र रूप से घूमते हैं (कोई पीस या प्रतिरोध नहीं)
- आर्म बॉडी के साथ केबल रूटिंग बरकरार है
- पावर कनेक्टर क्षतिग्रस्त नहीं है
- आपातकालीन स्टॉप सुलभ और कार्यात्मक है
- जब हाथ चालू हो तो कभी भी कार्यस्थल पर न पहुंचें
- केबल समायोजित करने या हार्डवेयर परिवर्तन करने से पहले हमेशा बिजली बंद कर दें
- ऑपरेशन के दौरान बच्चों और पालतू जानवरों को दूर रखें
- पहली बार चलाने से पहले आधार को एक स्थिर सतह पर सुरक्षित करें
सॉफ़्टवेयर वातावरण और CAN कॉन्फ़िगरेशन
⏱ ~60 मिनटसिस्टम आवश्यकताएं
- उबंटू 22.04 एलटीएस (अनुशंसित) या 20.04
- पायथन 3.10+
- ROS2 विनम्र
- USB-CAN एडाप्टर (CANable या संगत - पूर्ण 5 Mbit/s डेटा दर के लिए CAN FD का समर्थन करना चाहिए)
चरण 2ए - मोटर आईडी कॉन्फ़िगरेशन
किसी भी सॉफ़्टवेयर सेटअप से पहले, प्रत्येक डेमियाओ मोटर को उसकी CAN आईडी निर्दिष्ट की जानी चाहिए। यह डेमियाओ यूएसबी कैन डीबगर का उपयोग करके विंडोज़ पर किया जाने वाला एक बार का कदम है।
प्रत्येक जोड़ (J1-J8) के लिए विहित आईडी असाइनमेंट के रूप में नीचे दी गई तालिका का उपयोग करें:
| संयुक्त | ट्रांसमीटर आईडी | रिसीवर आईडी |
|---|---|---|
| J1 | 0x01 | 0x11 |
| J2 | 0x02 | 0x12 |
| J3 | 0x03 | 0x13 |
| J4 | 0x04 | 0x14 |
| J5 | 0x05 | 0x15 |
| J6 | 0x06 | 0x16 |
| J7 | 0x07 | 0x17 |
| J8 | 0x08 | 0x18 |
चरण 2बी - ओपनआर्म पैकेज स्थापित करें
अपनी उबंटू मशीन पर, आधिकारिक ओपनआर्म पीपीए से सभी आवश्यक पैकेज इंस्टॉल करें:
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:openarm/main
sudo apt update
sudo apt install -y \
can-utils \
iproute2 \
libeigen3-dev \
libopenarm-can-dev \
liborocos-kdl-dev \
liburdfdom-dev \
liburdfdom-headers-dev \
libyaml-cpp-dev \
openarm-can-utils
चरण 2c - CAN इंटरफ़ेस सेट करें (CAN FD)
ओपनआर्म मोटर्स CAN 2.0 और CAN FD दोनों को सपोर्ट करते हैं। CAN FD की अनुशंसा की जाती है - यह डेटा चरण को 5 Mbit/s पर चलाता है और 64-बाइट पेलोड तक का समर्थन करता है, जो पूर्ण डेमियाओ मोटर बैंडविड्थ के लिए आवश्यक है।
| तरीका | नाममात्र बॉड | डेटा बॉड | पेलोड |
|---|---|---|---|
| कैन 2.0 | 1 एमबीटी/एस | — | 8 बाइट्स |
| एफडी कर सकते हैं | 1 एमबीटी/एस | 5 एमबीटी/एस | 64 बाइट्स तक |
अनुशंसित - ओपनआर्म हेल्पर का उपयोग करें:
# CAN FD, 1M nominal / 5M data (recommended for single arm)
openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000
# CAN 2.0 fallback (1M baud, no FD)
openarm-can-configure-socketcan can0
# 4-arm bimanual setup (can0–can3)
openarm-can-configure-socketcan-4-arms -fd
# Verify the interface is UP
ip link show can0
मैनुअल आईपी लिंक कमांड (यदि सहायक का उपयोग नहीं कर रहे हैं):
# CAN 2.0
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
# CAN FD — 1M nominal / 5M data
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up
can0. एक द्वि-मैन्युअल सेटअप का उपयोग करता है can0 (सही नेता) + can1 (वामपंथी नेता) + can2 (दायाँ अनुयायी) + can3 (बाएं अनुयायी)।
चरण 2डी - मोटर नियंत्रण कमांड और डिबगिंग
इनका प्रयोग करें cansend निम्न-स्तरीय डिबगिंग के लिए आदेश। कोई भी आदेश भेजने से पहले बस की निगरानी करें:
# Monitor all CAN frames
candump -x can0
# Change motor baudrate (replace 1 with target motor CAN ID)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0
# Persist across power cycles (max ~10,000 flash writes per motor — use sparingly)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0 --flash
CAN 2.0 मोटर नियंत्रण - प्रतिस्थापित करें 001 उपरोक्त तालिका से लक्ष्य जोड़ की ट्रांसमीटर आईडी के साथ:
# Clear motor error
cansend can0 001#FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001#FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001#FFFFFFFFFFFFFFFD
कैन एफडी मोटर नियंत्रण - अतिरिक्त नोट करें #1 बाद ## (बीआरएस ध्वज):
# Clear motor error
cansend can0 001##1FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001##1FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001##1FFFFFFFFFFFFFFFD
--flash फ़्लैग बॉड्रेट परिवर्तन जारी रखता है - प्रत्येक मोटर अधिकतम ~10,000 फ़्लैश लेखन चक्रों का समर्थन करता है।
मोटर एलईडी स्थिति
प्रत्येक डेमियाओ मोटर में एक ऑनबोर्ड एलईडी है जो वर्तमान स्थिति का संकेत देती है। बिजली चालू करने के बाद त्वरित स्वास्थ्य जांच के रूप में इसका उपयोग करें:
| एलईडी पैटर्न | अर्थ |
|---|---|
| हरा (स्थिर) | मोटर सक्षम और तैयार |
| लाल (स्थिर) | मोटर अक्षम |
| लाल (चमकती) | मोटर त्रुटि स्थिति - पुन: सक्षम करने से पहले क्लियर एरर कमांड भेजें |
चरण 2e - ROS2 पैकेज स्थापित करें
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers
git clone https://github.com/enactic/openarm_ros2
cd openarm_ros2 && colcon build
पायथन एसडीके स्थापित करें
pip install roboticscenter
python -c "import roboticscenter; print('SDK ready')"
प्रथम प्रस्ताव
⏱ ~30 मिनटनकली हार्डवेयर से शुरुआत करें (सुरक्षित - कोई शारीरिक गतिविधि नहीं)
वास्तविक भुजा को हिलाने से पहले हमेशा सिमुलेशन में सत्यापित करें। लॉन्च फ़ाइल को इसके साथ चलाएँ use_fake_hardware:=true - किसी CAN कनेक्शन की आवश्यकता नहीं:
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true
ros2 run openarm_ros2 test_trajectory
यह सत्यापित करने के लिए कि सिम्युलेटेड भुजा परीक्षण प्रक्षेपवक्र के माध्यम से सही ढंग से चलती है, आरवीज़ खोलें। सभी 8 जोड़ सुचारू रूप से सक्रिय होने चाहिए।
रियल हार्डवेयर पर स्विच करें
एक बार जब सिमुलेशन सही दिखने लगे, तो CAN एडॉप्टर प्लग इन करें और बांह पर पावर डालें:
ros2 launch openarm_ros2 openarm.launch.py
फर्स्ट मोशन कमांड भेजें (होम पोजीशन)
ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory \
control_msgs/action/FollowJointTrajectory "{...}"
अंशांकन एवं होमिंग
⏱ ~45 मिनटसटीक नियंत्रण के लिए संयुक्त शून्य स्थिति को भौतिक वास्तविकता से मेल खाना चाहिए। गलत ढंग से मापे गए जोड़ नीचे की ओर नीतिगत विफलताओं का कारण बनते हैं - इस चरण को न छोड़ें।
घर वापसी प्रक्रिया
- ज्ञात सुरक्षित स्थिति में हाथ रखकर बिजली चालू करें (मोटे तौर पर विस्तारित, बाधाओं से दूर)
- होमिंग स्क्रिप्ट चलाएँ:
ros2 run openarm_ros2 homing - स्क्रिप्ट आपको प्रत्येक जोड़ को उसके कठिन पड़ाव पर मैन्युअल रूप से मार्गदर्शन करने के लिए प्रेरित करेगी - धीरे-धीरे आगे बढ़ें
- संकेत दिए जाने पर पुष्टि करें कि प्रत्येक जोड़ के लिए शून्य स्थिति सहेजी गई है
अंशांकन सत्यापित करें
ros2 topic echo /joint_states # check all positions read near zero
विस्तृत विश्लेषण:
कैलिब्रेशन और होमिंग गाइड - समस्या निवारण के साथ पूरी प्रक्रियाटेलीऑपरेशन
⏱ ~60 मिनटअपना ऑपरेटर डिवाइस चुनें
वुजी हाथ
निपुणता और सूक्ष्म हेरफेर कार्यों के लिए सर्वोत्तम
वीआर नियंत्रक
मेटा क्वेस्ट / स्टीम वीआर - स्थानिक कार्यों के लिए अच्छा है
कीबोर्ड/गेमपैड
बुनियादी परीक्षण और मोटे पोजिशनिंग के लिए
ऑपरेटर डिवाइस कनेक्ट करें
ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand
विलंबता की जाँच करें
लक्ष्य एंड-टू-एंड विलंबता 50 एमएस से कम है। विलंबता परीक्षण चलाएँ और सत्यापित करें:
ros2 run openarm_ros2 latency_check
डेटा संग्रहण
⏱ जारी हैडेटा प्रारूप चुनें
- लेरोबोट (अनुशंसित) - अनुकरण सीखने और मॉडल प्रशिक्षण के उद्देश्य से बनाया गया
- RLDS - ओपन-एक्स-एम्बोडिमेंट और क्रॉस-रोबोट डेटासेट के साथ संगत
रिकॉर्डिंग प्रारंभ करें
ros2 launch openarm_ros2 record.launch.py \
output_format:=lerobot \
task_name:=pick_and_place \
episode_id:=0
प्रत्येक एपिसोड को संयुक्त स्थिति, कैमरा फ्रेम और एक्शन लेबल के साथ एक स्व-निहित फ़ाइल के रूप में सहेजा जाता है। एकाधिक एपिसोड चलाएं, फिर समीक्षा और फ़िल्टर करने के लिए एसवीआरसी प्लेटफ़ॉर्म का उपयोग करें।
एपिसोड गुणवत्ता चेकलिस्ट
- कैमरा फ़ीड सिंक्रनाइज़ हैं (5 एमएस के भीतर टाइमस्टैम्प)
- संयुक्त अवस्थाएँ ≥ 50 हर्ट्ज़ पर दर्ज की गईं
- कार्रवाई लेबल प्रदर्शित व्यवहार से मेल खाते हैं
- विफल एपिसोड को बहिष्करण के लिए चिह्नित किया गया है, हटाया नहीं गया है
is_failure:=true - प्लेटफ़ॉर्म उनका उपयोग विपरीत शिक्षण या फ़िल्टरिंग के लिए कर सकता है।
एआई मॉडल प्रशिक्षण एवं परिनियोजन
⏱ जारी हैओपनआर्म के लिए अनुशंसित मॉडल
- अधिनियम (एक्शन चंकिंग ट्रांसफार्मर) - चुनने और रखने के लिए सर्वोत्तम। कैमरे के अवलोकन से कार्रवाई के हिस्सों की भविष्यवाणी करता है।
- प्रसार नीति —संपर्क-समृद्ध कार्यों के लिए सर्वोत्तम। डीनोइज़िंग के माध्यम से सहज प्रक्षेप पथ उत्पन्न करता है।
- ओपनवीएलए - भाषा-अनुकूलित कार्यों के लिए सर्वोत्तम। दृष्टि-भाषा की समझ को रोबोट क्रियाओं के साथ जोड़ता है।
अपने डेटा पर ACT को फाइन-ट्यून करें
pip install lerobot
python train.py --config act_openarm --data-path ./recordings/
उपभोक्ता GPU (RTX 3090 या बेहतर) पर प्रशिक्षण में आमतौर पर 50 एपिसोड के लिए 2-4 घंटे लगते हैं। उपयोग --resume चेकपॉइंट से जारी रखने के लिए ध्वज।
किनारे पर तैनात करें
ros2 launch openarm_ros2 inference.launch.py \
model_path:=./checkpoints/best.pt
अनुमान नोड कैमरा फ्रेम पढ़ता है, मॉडल चलाता है, और नियंत्रण आवृत्ति पर संयुक्त कमांड प्रकाशित करता है। वास्तविक समय नियंत्रण के लिए लक्ष्य अनुमान विलंबता 20 एमएस से कम है।
आपने पूरा सेटअप पथ पूरा कर लिया है!
आपका ओपनआर्म कैलिब्रेटेड, टेलीऑपरेटेड, डेटा-संग्रहित और एआई चलाने वाला है। आपने जो बनाया है उसे समुदाय के साथ साझा करें।