सेटअप गाइड

CAN बस लाने से लेकर पहले टेलीऑपरेटेड एपिसोड तक। Piper_sdk, ROS2 लॉन्च और मेटा क्वेस्ट 3 VR टेलीऑपरेशन को कवर करता है।

1

कैन बस एवं होस्ट सेटअप

~15 मिनट

एजाइलएक्स पाइपर विशेष रूप से संचार करता है 1 एमबीपीएस पर बस कर सकते हैं. आपको अपने लिनक्स होस्ट पर सॉकेटकैन इंटरफ़ेस को प्रदर्शित करने के लिए एक यूएसबी-टू-कैन एडाप्टर (उदाहरण के लिए, कैनेबल, जीएस_यूएसबी) की आवश्यकता है।

सबसे पहले सुरक्षा बिजली चालू करने से पहले बांह के आधार को एक स्थिर सतह पर भौतिक रूप से सुरक्षित करें। गति के दौरान मनुष्यों को बांह की पूरी पहुंच वाले आवरण (~600 मिमी त्रिज्या) से दूर रखें।

CAN इंटरफ़ेस लाएँ

यूएसबी-टू-कैन एडाप्टर कनेक्ट करें, फिर चलाएं:

# Set bitrate and bring up the CAN interface
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up

# Verify the interface is active
ifconfig can0
स्वचालित सक्रियण स्क्रिप्ट. The piper_sdk रिपॉजिटरी में एक शामिल है can_activate.sh सहायक. इसे इस प्रकार चलाएँ: bash can_activate.sh can0 1000000. यह वही स्क्रिप्ट है जिसका उपयोग किया जाता है piper_ros.
इंटरफ़ेस नाम भिन्न हो सकता है यदि आपके पास एकाधिक यूएसबी-टू-कैन एडाप्टर कनेक्ट हैं, तो इंटरफ़ेस इस प्रकार दिखाई दे सकता है can1, can2, आदि। उपयोग करें ip link show सभी CAN इंटरफ़ेस को सूचीबद्ध करने और सही नाम भेजने के लिए C_PiperInterface.

ओएस समर्थन

Ubuntu 18.04, 20.04 और 22.04 आधिकारिक तौर पर परीक्षण किए गए प्लेटफ़ॉर्म हैं। पायथन 3.6+ आवश्यक है.

2

Piper_sdk स्थापित करें

~20 मिनट

The piper_sdk पायथन लाइब्रेरी CAN फ़्रेमिंग, संयुक्त राज्य फीडबैक और ग्रिपर नियंत्रण को संभालती है। PyPI (अनुशंसित) या स्रोत से इंस्टॉल करें।

# Option A: Install from PyPI (recommended)
pip3 install piper_sdk

# Option B: Install from source
git clone https://github.com/agilexrobotics/piper_sdk.git
cd piper_sdk
pip install -e .

# Verify installation
python3 -c "import piper_sdk; print('piper_sdk OK')"

SDK स्वचालित रूप से इंस्टॉल हो जाता है python-can CAN बस संचार के लिए एक निर्भरता के रूप में।

कनेक्ट करें और सक्षम करें

The C_PiperInterface क्लास मुख्य प्रवेश बिंदु है. कनेक्ट करने के बाद, मोशन कमांड स्वीकार करने से पहले आर्म को सक्षम किया जाना चाहिए। EnableArm(7) सभी छह जोड़ों और ग्रिपर को सक्षम बनाता है।

from piper_sdk import C_PiperInterface

# Initialize with the CAN interface name (default: "can0")
piper = C_PiperInterface("can0")

# Connect to the arm
piper.ConnectPort()

# Enable all joints (required before motion commands)
piper.EnableArm(7)

print("Piper connected and enabled.")
डेमो स्क्रिप्ट. एसडीके रेडी-टू-रन डेमो के साथ आता है piper_sdk/demo/V2/. के साथ शुरू demo_joint_ctrl.py अपना स्वयं का नियंत्रण लूप बनाने से पहले बुनियादी गति को सत्यापित करने के लिए।
3

प्रथम प्रस्ताव

~20 मिनट

हाथ कनेक्ट और सक्षम होने पर, संयुक्त स्थिति पढ़ें और अपनी पहली स्थिति कमांड भेजें।

संयुक्त राज्य पढ़ें

import time

# Read joint angles in a polling loop
for _ in range(10):
    joint_state = piper.GetArmJointMsgs()
    print(joint_state)
    time.sleep(0.1)

# Read end-effector pose
end_pose = piper.GetArmEndPoseMsgs()
print(end_pose)

एक संयुक्त स्थिति आदेश भेजें

# Move to a joint configuration (angles in degrees)
# Arguments: joint1, joint2, joint3, joint4, joint5, joint6
piper.MotionCtrl_2(
    0,      # joint 1
    0,      # joint 2
    90,     # joint 3
    0,      # joint 4
    0,      # joint 5
    0       # joint 6
)
time.sleep(2)  # wait for motion to complete

ग्रिपर नियंत्रण

# Open gripper
piper.GripperCtrl(0, 1000)

# Close gripper (check your gripper's max value)
piper.GripperCtrl(70, 1000)

# Read gripper state
gripper_state = piper.GetArmGripperMsgs()
print(gripper_state)
पूरा होने पर अक्षम करें हमेशा हाथ को अक्षम करें piper.DisableArm(7) समाप्त होने पर. एक सक्षम आर्म किसी भी कमांड पर तुरंत प्रतिक्रिया देता है - जिसमें बग या गिराए गए पैकेट से आए गलत कमांड भी शामिल हैं।

डुअल-आर्म (मास्टर-स्लेव) सेटअप

द्वि-मैन्युअल कॉन्फ़िगरेशन के लिए, दो पाइपर्स को अलग-अलग CAN इंटरफेस पर कनेक्ट करें:

piper_left  = C_PiperInterface("can0")
piper_right = C_PiperInterface("can1")

piper_left.ConnectPort()
piper_right.ConnectPort()

piper_left.EnableArm(7)
piper_right.EnableArm(7)

print("Both arms connected.")
4

ROS2 / MoveIt एकीकरण

~60 मिनट

The piper_ros पैकेज MoveIt मोशन प्लानिंग और गज़ेबो सिमुलेशन के साथ एक पूर्ण ROS नॉएटिक ड्राइवर प्रदान करता है। यह लपेटता है piper_sdk आंतरिक रूप से और मानक ROS इंटरफ़ेस को उजागर करता है।

निर्भरताएँ स्थापित करें

# Install required ROS packages
sudo apt-get install -y \
  ros-noetic-moveit \
  ros-noetic-ruckig \
  ros-noetic-ompl

# Install Python CAN dependency
pip3 install python-can piper_sdk

शुरू करना

# Step 1: Activate CAN interface
bash can_activate.sh can0 1000000

# Step 2: Launch the Piper control node
roslaunch piper start_single_piper.launch

# For dual-arm:
roslaunch piper start_double_piper.launch

मूवइट योजना

# Launch MoveIt with RViz for interactive planning
roslaunch piper_moveit_config demo.launch

# Gazebo simulation (no physical arm required)
roslaunch piper piper_gazebo.launch
फ़र्मवेयर नोट. पहले के फ़र्मवेयर संस्करण S-V1.6-3 विरासत की आवश्यकता है piper_description_old.urdf फ़ाइल। नया फ़र्मवेयर मानक का उपयोग करता है piper_description.urdf. आरओएस मॉडल लोड करने से पहले बांह के आधार पर फर्मवेयर संस्करण लेबल की जांच करें।

देखें विशिष्टता पृष्ठ संपूर्ण ROS विषयों और सेवाओं की तालिका के लिए।

5

मेटा क्वेस्ट 3 वीआर टेलीऑपरेशन

~90 मिनट

पाइपर को वास्तविक समय में नियंत्रित किया जा सकता है मेटा क्वेस्ट 3 हेडसेट. आर्किटेक्चर आपके स्थानीय नेटवर्क पर यूडीपी का उपयोग करता है: क्वेस्ट एक यूनिटी ऐप चलाता है जो हैंड पोज़ डेटा स्ट्रीम करता है, और रोबोट पीसी पर एक पायथन सर्वर इसे पाइपर एसडीके कमांड में अनुवादित करता है।

वास्तुकला

मेटा क्वेस्ट 3 (एकता)
↓ यूडीपी - पोर्ट 8888/8889
पायथन यूडीपी सर्वर (होस्ट पीसी)
पाइपर_एसडीके → सी_पाइपरइंटरफ़ेस
एजाइलएक्स पाइपर (कैन बस)

एकता पक्ष (VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) और यूडीपी परत xArm सेटअप से पूरी तरह से पुन: प्रयोज्य है - केवल रोबोट नियंत्रक मॉड्यूल को बदलने की आवश्यकता है।

सेटअप चरण

  1. CAN इंटरफ़ेस प्रारंभ करें और आर्म को सक्षम करें।
    sudo ip link set can0 type can bitrate 1000000
    sudo ip link set can0 up
  2. एक बनाने के PiperController रैपिंग C_PiperInterface. प्रतिस्थापित करें XArmController आपके मौजूदा टेलीऑपरेशन स्टैक में एक नए के साथ क्लास piper_controller.py. अमल में लाना connect(), set_pose(x, y, z, roll, pitch, yaw), set_gripper(value), और emergency_stop() Piper_sdk कॉल का उपयोग करना।
  3. रोबोट पीसी पर पायथन यूडीपी सर्वर लॉन्च करें।
    python3 teleoperation_main.py --robot-type piper
    सर्वर यूडीपी पोर्ट 8888/8889 पर सुनता है और पाइपर को प्राप्त हैंड पोज़ पैकेट को अग्रेषित करता है।
  4. क्वेस्ट 3 पर यूनिटी ऐप लॉन्च करें और पीसी के आईपी पते से कनेक्ट करें। समायोजित करना positionOffset, rotationOffset, और scaleFactor पाइपर के कार्यक्षेत्र से मेल खाने के लिए एकता में। पाइपर की छोटी पहुंच वाले लिफ़ाफ़े के कारण ये पैरामीटर xArm से भिन्न हैं।
समन्वय प्रणाली मतभेद पाइपर कार्यक्षेत्र xArm से छोटा है। कम करना scaleFactor टेलीऑपरेशन के दौरान हाथ को संयुक्त सीमा से टकराने से रोकने के लिए एकता में। एक रूढ़िवादी पैमाने से शुरू करें और संयुक्त कोणों की निगरानी करते हुए धीरे-धीरे बढ़ाएं।
पूर्ण क्वेस्ट 3 गाइड। संपूर्ण सेटअप निर्देशों के लिए - यूनिटी ऐप इंस्टॉल करना, पीसी के साथ पेयर करना और हैंड ट्रैकिंग को कैलिब्रेट करना - देखें क्वेस्ट 3 वीआर टेलीऑपरेशन गाइड.
6

डेटा संग्रहण

चल रहे

एक बार टेलीऑपरेशन काम कर रहा है, तो हेरफेर प्रदर्शनों को रिकॉर्ड करने, लेबल करने और निर्यात करने के लिए एसवीआरसी प्लेटफ़ॉर्म का उपयोग करें।

  • पायथन यूडीपी सर्वर के माध्यम से या सीधे टेलीऑपरेटेड एपिसोड रिकॉर्ड करें piper_ros बैग रिकॉर्डिंग
  • में निर्यात करें RLDS या लेरोबोट डाउनस्ट्रीम नीति प्रशिक्षण के लिए प्रारूप
  • उपयोग एसवीआरसी प्लेटफार्म डेटासेट प्रबंधित करने, गुणवत्ता जांच चलाने और ACT या डिफ्यूजन पॉलिसी मॉडल को प्रशिक्षित करने के लिए
बख्शीश। उपयोग piper.GetArmJointMsgs() और piper.GetArmEndPoseMsgs() टेलीऑपरेशन के दौरान सिंक्रोनाइज़्ड जॉइंट और एंड-इफ़ेक्टर स्थिति को कैप्चर करने के लिए बैकग्राउंड थ्रेड में ~50 हर्ट्ज़ पर।
खुला मंच → पूर्ण डेवलपर विकी →

अपने सेटअप में सहायता चाहिए?

हमारी टीम माउंटेन व्यू, सीए सुविधा में व्यावहारिक सत्रों के लिए उपलब्ध है।