מפרט טכני

מפרט חומרה מלא, התייחסות לנושאי ROS2, סיכום API של piper_sdk ומדריך לפתרון בעיות.

מפרט מכני

מפרט עֵרֶך
דרגות חופש6 DOF + תפסן אופציונלי
לְהַגִיעַ~600 מ"מ
מטען מקסימלי~1.5 ק"ג
הֲדִירוּת±0.1 מ"מ
גורם צורהשולחן קומפקטי/שולחן עבודה
רב זרועותמאסטר-עבד בעל זרוע כפולה באמצעות ממשקי CAN נפרדים
יַצרָןAgileX Robotics

חשמל ותקשורת

מפרט עֵרֶך
ספק כוח24 V DC
תִקשׁוֹרֶתCAN bus — 1,000,000 bps (1 Mbps)
ממשק מארחמתאם USB ל-CAN (לדוגמה, CANable, GS_USB)
ממשק לינוקסSocketCAN (can0, can1, …)

תוכנה ובקרה

מפרט עֵרֶך
מצבי שליטהתנוחת מפרק, תנוחת קצה, תפסן
Python SDKpip3 install piper_sdkagilexrobotics/piper_sdk
חבילת ROSagilexrobotics/piper_ros (ROS Noetic + MoveIt)
הַדמָיָהביתן משם piper_gazebo.launch
URDFpiper_description.urdf (קושחה ≥ S-V1.6-3)
תמיכה במערכת ההפעלהאובונטו 18.04, 20.04, 22.04
גרסת פייתוןPython 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 geometry_msgs/Pose פאב (משוב) משוב על תנוחת קצה במרחב קרטזיאני (מיקום + קווטרניון)
/enable_srv std_srvs/SetBool שֵׁרוּת אפשר (true) או השבת (false) כל מפרקי הידיים
/go_zero_srv std_srvs/טריגר שֵׁרוּת פקד על הזרוע לעבור למצב אפס/בית
/gripper_srv piper_msgs/GripperCmd שֵׁרוּת הגדר את מיקום האוחז (0 = פתוח, מקסימום = סגור לחלוטין)
/stop_srv std_srvs/טריגר שֵׁרוּת עצור מיד את כל תנועת המפרקים (עצירת חירום באמצעות ROS)
/reset_srv std_srvs/טריגר שֵׁרוּת אפס שגיאות זרוע והפעל מחדש לאחר מצב תקלה

API של piper_sdk

שיטות מפתח על 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
זרוע לא מגיבה לפקודות הזרוע לא במצב עבד או לא מופעלת שִׂיחָה piper.EnableArm(7) לאחר החיבור. ודא שמגשר מצב עבדים מוגדר כהלכה על הזרוע.
משוב משותף קורא את כל האפסים אי התאמה של קצב סיביות ודא שקצב הסיביות של ממשק CAN הוא בדיוק 1000000. הפעל מחדש ip link set can0 type can bitrate 1000000.
can.CanError: Failed to transmit אוטובוס CAN לא הסתיים ודא שנגדי סיום של 120 אוהם קיימים בשני הקצוות של אפיק ה-CAN. אפשר את המחסל הפנימי של הפייפר באמצעות מתג DIP.
דגם רובוט URDF שגוי ב-RViz אי התאמה לקושחה קושחה < S-V1.6-3: שימוש piper_description_old.urdf. קושחה חדשה יותר: השתמש piper_description.urdf.
ההרשאה נדחתה ב-can0 המשתמש לא נמצא dialout קְבוּצָה SocketCAN דורש בסיס או הרשאות מתאימות. הפעל פקודות עם sudo או להגדיר כללי udev.
טלאופ VR: הזרוע חורגת / פוגעת בגבולות scaleFactor גבוה מדי באחדות לְהַפחִית scaleFactor באפליקציית Unity ובדוק מחדש בהדרגה. סביבת העבודה של Piper קטנה מ-xArm.

מאגרי GitHub

מאגר תֵאוּר
agilexrobotics/piper_sdk Python SDK הרשמי. לְהַתְקִין: pip3 install piper_sdk. כולל הדגמות, מפרט ממשק (INTERFACE_V2.MD), ומדריך בעל זרוע כפולה.
agilexrobotics/piper_ros חבילת ROS Noetic עם MoveIt, הדמיית Gazebo, URDF ונושאים/שירותים סטנדרטיים של ROS.
← חזרה אל Piper Hub מדריך התקנה ← ויקי מפתחים מלא →

מוכן לאסוף נתוני מניפולציה עם הפייפר?

זמין עבור הערכה מעשית ואיסוף נתונים במתקן Mountain View שלנו, קליפורניה.