설정 가이드

CAN 버스 도입부터 첫 번째 원격 작동 에피소드까지. Piper_sdk, ROS2 출시 및 Meta Quest 3 VR 원격 조작을 다룹니다.

1

CAN 버스 및 호스트 설정

~15분

AgileX Piper는 다음을 통해 독점적으로 통신합니다. 1Mbps의 CAN 버스. Linux 호스트에 SocketCAN 인터페이스를 노출하려면 USB-CAN 어댑터(예: CANable, GS_USB)가 필요합니다.

안전 제일 전원을 켜기 전에 팔 베이스를 안정된 표면에 물리적으로 고정하십시오. 움직이는 동안 팔의 전체 도달 범위(반경 ~600mm)에 사람이 접근하지 못하도록 하십시오.

CAN 인터페이스 불러오기

USB-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
자동 활성화 스크립트. 그만큼 piper_sdk 저장소에는 can_activate.sh 돕는 사람. 다음과 같이 실행하세요: bash can_activate.sh can0 1000000. 이것은 다음에서 사용하는 것과 동일한 스크립트입니다. piper_ros.
인터페이스 이름은 다를 수 있음 여러 개의 USB-CAN 어댑터가 연결된 경우 인터페이스는 다음과 같이 나타날 수 있습니다. can1, can2등 사용 ip link show 모든 CAN 인터페이스를 나열하고 올바른 이름을 전달하려면 C_PiperInterface.

OS 지원

Ubuntu 18.04, 20.04 및 22.04는 공식적으로 테스트된 플랫폼입니다. Python 3.6 이상이 필요합니다.

2

Piper_sdk 설치

~20분

그만큼 piper_sdk Python 라이브러리는 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 버스 통신에 대한 종속성으로 사용됩니다.

연결 및 활성화

그만큼 C_PiperInterface 클래스가 주요 진입점입니다. 연결 후 팔이 모션 명령을 수락하기 전에 활성화되어야 합니다. EnableArm(7) 6개의 관절과 그리퍼를 모두 활성화합니다.

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.")
데모 스크립트. SDK는 바로 실행 가능한 데모와 함께 제공됩니다. 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를 연결하십시오.

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분

그만큼 piper_ros 패키지는 MoveIt 모션 계획 및 Gazebo 시뮬레이션이 포함된 전체 ROS Noetic 드라이버를 제공합니다. 감싸는 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 모델을 로딩하기 전에 팔 밑면에 있는 펌웨어 버전 라벨을 확인하세요.

참조 사양 페이지 전체 ROS 주제 및 서비스 표를 확인하세요.

5

메타 퀘스트 3 VR 원격조작

~90분

파이퍼는 다음을 사용하여 실시간으로 제어할 수 있습니다. 메타 퀘스트 3 헤드폰. 아키텍처는 로컬 네트워크를 통해 UDP를 사용합니다. Quest는 손 자세 데이터를 스트리밍하는 Unity 앱을 실행하고 로봇 PC의 Python 서버는 이를 Piper SDK 명령으로 변환합니다.

건축학

메타 퀘스트 3(Unity)
↓ UDP — 포트 8888 / 8889
Python UDP 서버(호스트 PC)
Piper_sdk → C_PiperInterface
AgileX Piper(CAN 버스)

Unity 측(VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) 및 UDP 레이어는 xArm 설정에서 완전히 재사용 가능합니다. 로봇 컨트롤러 모듈만 교체하면 됩니다.

설정 단계

  1. CAN 인터페이스를 시작하고 암을 활성화하십시오.
    sudo ip link set can0 type can bitrate 1000000
    sudo ip link set can0 up
  2. 만들기 PiperControllerC_PiperInterface. 교체 XArmController 새로운 원격 운용 스택의 클래스 piper_controller.py. 구현하다 connect(), set_pose(x, y, z, roll, pitch, yaw), set_gripper(value), 그리고 emergency_stop() Piper_sdk 호출을 사용합니다.
  3. 로봇 PC에서 Python UDP 서버를 시작합니다.
    python3 teleoperation_main.py --robot-type piper
    서버는 UDP 포트 8888/8889에서 수신 대기하고 수신된 손 자세 패킷을 Piper에 전달합니다.
  4. Quest 3에서 Unity 앱을 실행하고 PC의 IP 주소에 연결합니다. 조정하다 positionOffset, rotationOffset, 그리고 scaleFactor Piper의 작업 공간과 일치하도록 Unity에서. 이러한 매개변수는 Piper의 도달 범위가 더 작기 때문에 xArm과 다릅니다.
좌표계 차이 Piper 작업 공간은 xArm보다 작습니다. 줄이다 scaleFactor 원격 조작 중에 팔이 관절 한계에 도달하는 것을 방지하기 위해 Unity를 사용합니다. 보수적인 규모로 시작하여 관절 각도를 모니터링하면서 점차적으로 증가시킵니다.
전체 퀘스트 3 가이드. Unity 앱 설치, PC 페어링, 핸드 트래킹 보정 등 전체 설정 지침은 다음을 참조하세요. Quest 3 VR 원격조종 가이드.
6

데이터 수집

전진

원격 조작이 작동되면 SVRC 플랫폼을 사용하여 조작 시연을 기록하고, 라벨을 지정하고, 내보냅니다.

  • Python UDP 서버를 통해 또는 직접 통해 원격 조작 에피소드를 녹화하세요. piper_ros 가방 녹음
  • 다음으로 내보내기 RLDS 또는 르로봇 다운스트림 정책 학습 형식
  • 사용 SVRC 플랫폼 데이터 세트를 관리하고, 품질 검사를 실행하고, ACT 또는 확산 정책 모델을 교육합니다.
팁. 사용 piper.GetArmJointMsgs() 그리고 piper.GetArmEndPoseMsgs() 원격 조작 중 동기화된 조인트 및 엔드 이펙터 상태를 캡처하기 위해 백그라운드 스레드에서 ~50Hz.
오픈 플랫폼 → 전체 개발자 위키 →

설정에 도움이 필요하십니까?

우리 팀은 캘리포니아주 마운틴뷰 시설에서 실습 세션에 참여할 수 있습니다.