AgileX 파이퍼
기술 사양
전체 하드웨어 사양, ROS2 주제 참조, Piper_sdk API 요약 및 문제 해결 가이드.
기계 사양
| 투기 | 값 |
|---|---|
| 자유도 | 6 DOF + 옵션 그리퍼 |
| 도달하다 | ~600mm |
| 최대 페이로드 | ~1.5kg |
| 반복성 | ±0.1mm |
| 폼 팩터 | 컴팩트한 탁상/데스크탑 |
| 다중 팔 | 별도의 CAN 인터페이스를 통한 듀얼 암 마스터-슬레이브 |
| 제조업체 | AgileX 로봇공학 |
전기 및 통신
| 투기 | 값 |
|---|---|
| 전원공급장치 | 24V DC |
| 의사소통 | CAN 버스 — 1,000,000bps(1Mbps) |
| 호스트 인터페이스 | USB-CAN 어댑터(예: CANable, GS_USB) |
| 리눅스 인터페이스 | 소켓CAN(can0, can1, …) |
소프트웨어 및 제어
| 투기 | 값 |
|---|---|
| 제어 모드 | 관절 위치, 엔드 이펙터 자세, 그리퍼 |
| 파이썬 SDK | pip3 install piper_sdk — 애질렉스로보틱스/piper_sdk |
| ROS 패키지 | 애질렉스로보틱스/piper_ros (ROS 노에틱 + MoveIt) |
| 시뮬레이션 | 가제보 어웨이 piper_gazebo.launch |
| URDF | piper_description.urdf (펌웨어 ≥ S-V1.6-3) |
| OS 지원 | 우분투 18.04, 20.04, 22.04 |
| 파이썬 버전 | 파이썬 3.6+ |
관절 제한
| 관절 | 나의 (당신) | 맥스(당신) |
|---|---|---|
| 조인트 1 | −175 | +175 |
| 조인트 2 | −90 | +135 |
| 조인트 3 | −150 | +80 |
| 조인트 4 | −175 | +175 |
| 공동 5 | −90 | +90 |
| 합동 6 | −175 | +175 |
ROS 주제 및 서비스
공개되는 표준 주제 및 서비스 piper_ros 출시 후 start_single_piper.launch.
| 주제/서비스 | 유형 | 방향 | 설명 |
|---|---|---|---|
/joint_states |
sensor_msgs/JointState | 하위(명령 보내기) | 관절 위치 명령 - 모션 타겟을 팔로 보내기 위해 구독 |
/arm_status |
Piper_msgs/ArmStatus | 펍(피드백) | 팔 상태 피드백: 활성화/비활성화, 오류 플래그, 현재 관절 위치 |
/end_pose |
기하학_msgs/포즈 | 펍(피드백) | 데카르트 공간(위치 + 쿼터니언)의 엔드 이펙터 포즈 피드백 |
/enable_srv |
std_srvs/SetBool | 서비스 | 할 수 있게 하다 (true) 또는 비활성화(false) 모든 팔 관절 |
/go_zero_srv |
std_srvs/트리거 | 서비스 | 팔에 0/홈 위치로 이동하도록 명령합니다. |
/gripper_srv |
Piper_msgs/GripperCmd | 서비스 | 그리퍼 위치 설정(0 = 열림, 최대 = 완전 닫힘) |
/stop_srv |
std_srvs/트리거 | 서비스 | 모든 관절 동작을 즉시 중지(ROS를 통한 긴급 중지) |
/reset_srv |
std_srvs/트리거 | 서비스 | 암 오류를 재설정하고 오류 상태 후 다시 활성화 |
Piper_sdk API 참조
에 대한 주요 방법 C_PiperInterface 수업. 다음으로 초기화 piper = C_PiperInterface("can0").
| 방법 | 설명 |
|---|---|
ConnectPort() |
CAN 인터페이스를 열고 통신 스레드를 시작하십시오. |
EnableArm(7) |
6개 관절과 그리퍼를 모두 활성화합니다(비트마스크, 7 = 모두). |
DisableArm(7) |
모든 관절 비활성화 - 완료되면 또는 연결을 끊기 전에 항상 호출하십시오. |
EmergencyStop() |
모든 관절 운동을 즉시 중단 |
MotionCtrl_2(j1, j2, j3, j4, j5, j6) |
6-DOF 관절 위치 명령(각도 단위) 보내기 |
GetArmJointMsgs() |
현재 관절 위치, 속도 및 토크 읽기 |
GetArmEndPoseMsgs() |
현재 엔드 이펙터 직교 위치 읽기 |
GripperCtrl(position, speed) |
그리퍼 위치(0 = 열림) 및 속도 설정 |
GetArmGripperMsgs() |
현재 그리퍼 상태 및 위치 피드백 읽기 |
문제 해결
| 징후 | 가능한 원인 | 고치다 |
|---|---|---|
OSError: [Errno 19] No such device |
CAN 인터페이스가 작동하지 않음 | 달리다 sudo ip link set can0 up 그리고 확인 ifconfig can0 |
| Arm이 명령에 응답하지 않습니다. | Arm이 슬레이브 모드가 아니거나 활성화되지 않았습니다. | 부르다 piper.EnableArm(7) 연결 후. 슬레이브 모드 점퍼가 암에 올바르게 설정되어 있는지 확인하십시오. |
| 공동 피드백은 모두 0을 읽습니다. | 비트레이트 불일치 | CAN 인터페이스 비트 전송률이 정확히 1000000인지 확인하십시오. 다시 실행하십시오. ip link set can0 type can bitrate 1000000. |
can.CanError: Failed to transmit |
CAN 버스가 종료되지 않음 | CAN 버스의 양쪽 끝에 120옴 종단 저항이 있는지 확인하십시오. DIP 스위치를 통해 Piper의 내부 터미네이터를 활성화합니다. |
| RViz에서 URDF 로봇 모델이 잘못되었습니다. | 펌웨어 불일치 | 펌웨어 < S-V1.6-3: 사용 piper_description_old.urdf. 최신 펌웨어: 사용 piper_description.urdf. |
| can0에 대한 권한이 거부되었습니다. | 사용자가 없음 dialout 그룹 |
SocketCAN에는 루트 또는 적절한 권한이 필요합니다. 다음을 사용하여 명령을 실행하세요. sudo 또는 udev 규칙을 구성하세요. |
| VR 텔레오프: 팔 오버슈트/한계에 도달 | scaleFactor Unity에서는 너무 높음 |
줄이다 scaleFactor Unity 앱에서 점진적으로 다시 테스트하세요. Piper 작업 공간은 xArm보다 작습니다. |
GitHub 저장소
| 저장소 | 설명 |
|---|---|
| 애질렉스로보틱스/piper_sdk | 공식 Python SDK. 설치하다: pip3 install piper_sdk. 데모, 인터페이스 사양 포함(INTERFACE_V2.MD) 및 이중 암 가이드. |
| 애질렉스로보틱스/piper_ros | MoveIt, Gazebo 시뮬레이션, URDF 및 표준 ROS 주제/서비스를 포함하는 ROS Noetic 패키지입니다. |