Skip to content

Releases: agilexrobotics/piper_sdk

0.3.3

15 Jul 09:02
Compare
Choose a tag to compare

Version 0.3.3

Features

  • Modify the maximum torque of mit mode to 8 N.m

Bug Fixes

None

Miscellaneous

None

0.3.2

07 Jul 07:36
Compare
Choose a tag to compare

Version 0.3.2

Features

None

Bug Fixes

None

Miscellaneous

  • Interface modified the import of hardware to import all in init instead of importing the specified class from the file;
  • Interface added thread lock when creating an instance;
  • Interface added error feedback when creating the C_STD_CAN class failed;
  • Interface put the calculation of the fps count of the can bus at the beginning of the ReadCan thread loop;
  • Interface optimized the judgment logic of executing the PiperInit function;
  • SDK param modified demo to add the setting of formal parameters;
  • Modified the import range of hardware to * instead of the specified C_STD_CAN;
  • Optimized the init.py of msg v1 to be the same as v2;
  • Added some comments

0.3.0

25 Jun 10:42
Compare
Choose a tag to compare

Version 0.3.0

Features

  • Added interface parameters start_sdk_joint_limit, start_sdk_gripper_limit, the default parameter is False

  • Added utils path, which contains tools for fps calculation and quaternion Euler angle calculation (external rotation sxyz)

    • Convert quaternion to Euler angle through quat_convert_euler
    • Convert Euler angle to quaternion through euler_convert_quat
  • Added functions EnableFkCal and DisableFkCal to enable/disable sdk calculation fk. isCalFk is used to get whether to enable fk calculation, and then read it through GetFK function. After enabling fk calculation, the reading thread will occupy a high CPU, please enable it as needed

  • Added function get_connect_status to get the call status of ConnectPort function

  • Reduced the frequency (20hz) of CanMonitor thread enabled in the interface and the length of the queue for storing frame rate values ​​(5)

  • Added the friction coefficient parameter of the teach pendant in the gripper/teach pendant parameter feedback command (feedback and send)

  • Added ModeCtrl and EmergencyStop functions to set the mode and perform emergency stop (replace MotionCtrl_1 and MotionCtrl_2)

  • Will get CAN_ID=0x151 - Renamed the function of the arm mode control command from GetArmCtrlCode151 to GetArmModeCtrl

  • Added enum in the robot status feedback. When you use the piper_read_status.py in the demo to print the current status of the robot, you can see an explicit formatted string representing the current status of the robot (the actual variable value is still int)

  • Renamed the demo file to be standardized

  • Initialized rx_message to Message() type in the C_STD_CAN class

  • Modified the location of obtaining the timestamp of the feedback information, from obtaining the current system time from the interface to obtaining the timestamp in the decoding function to increase the accuracy of the data timestamp

  • Added the piper_param_manager file, which contains the angle and gripper range limits and applies constraints to feedback and control messages

    • Use the parameters in the interface to turn on the sdk limit function: piper = C_PiperInterface_V2("can0", start_sdk_joint_limit=True, start_sdk_gripper_limit=True)
    • If the feedback or control message exceeds the set limit, the value will be clamped within the boundary value
    • Default limits already exist in the program. To customize the configuration limit range, use the SetSDKJointLimitParam and SetSDKGripperRangeParam functions to set software constraints

    See the piper_set_sdk_param.py file in the demo for examples.

  • Slightly reduced the joint limits to prevent exceeding the angle limit of the robot when converting radians to degrees using math.degrees. The new limits are as follows:

    joint_name limit(rad) limit(angle) limit(rad/s)
    joint1 [-2.6179, 2.6179] [-150.0, 150.0] [0, 3.0]
    joint2 [0, 3.14] [0, 180.0] [0, 3.0]
    joint3 [-2.967, 0] [-170, 0] [0, 3.0]
    joint4 [-1.745, 1.745] [-100.0, 100.0] [0, 3.0]
    joint5 [-1.22, 1.22] [-70.0, 70.0] [0, 3.0]
    joint6 [-2.09439, 2.09439] [-120.0, 120.0] [0, 3.0]

    Note: The conversion factor from radians to degrees is 57.2957795 (180/3.1415926).

  • Added piper_set_load.py demo for setting load conditions (empty/half/full)

  • Added detect_arm.py in the demo path to monitor various information of the robot arm in the terminal. Note that this file is not backward compatible

Bug Fixes

  • Fixed the issue where the gripper feedback timestamp was of type int.

Miscellaneous

  • Modified the folder structure, put fps.py into the utils path, the monitor path will be deleted after the next version
  • Restructured the documentation:
    • Most of the documentation has been rewritten in English
    • Simplified the documentation to focus only on interface usage

0.2.20_beta

01 Apr 11:12
Compare
Choose a tag to compare

Features

  • Added the teaching pendant friction coefficient parameter to the gripper/teaching pendant parameter feedback command (both feedback and sending) and adapted the protocol.
  • Added ModeCtrl and EmergencyStop functions to set modes and perform emergency stops (future updates will introduce dictionary-based parameter matching for all functions).
  • Renamed all data reading files in the demo to start with "read" for easier searching.
  • Initialized rx_message as an empty Message() in the C_STD_CAN encapsulation class
  • Added piper_param_manager file, which includes angle and gripper range limits, applying constraints to both feedback and control messages.
    • If feedback or control messages exceed the set limits, the values will be clamped to the boundary values.
    • To configure limit ranges, use the SetSDKJointLimitParam and SetSDKGripperRangeParam functions to set software constraints.
      Refer to the piper_sdk_param.py file in the demo for examples.

Bug Fixes

  • Fixed the issue where the gripper feedback timestamp was of type int. Now, a unified timestamp retrieval function is used.

0.2.19

20 Mar 08:29
1324780
Compare
Choose a tag to compare

Bug Fixes

  • Fixed abnormal current feedback values.(High speed piper msg)
    piper_sdk/piper_msgs/msg_v1/feedback/arm_high_spd_feedback.py
    piper_sdk/piper_msgs/msg_v2/feedback/arm_high_spd_feedback.py
    piper_sdk/protocol/protocol_v1/piper_protocol_v1.py
    piper_sdk/protocol/protocol_v2/piper_protocol_v2.py

0.2.18-Yank

06 Mar 02:49
Compare
Choose a tag to compare

Attention!!!
Incorrect unit for current information in high-speed feedback, which caused abnormal values and led to incorrect torque feedback.

Features

  • Added effort feedback to high-speed information feedback, with a unit of 0.001 N/m.
  • Removed elements in the sh script to ensure compatibility with zsh.
  • Added interface_v1 without affecting previous versions, reserving it for future updates.
  • Added class references in __init__.py.
  • Fixed incorrect comments in msg_v1/__init__.py, msg_v2/__init__.py, protocol/protocol_v2/piper_protocol_v2.py, and arm_low_spd_feedback.py.
  • Corrected the unit description of max_joint_acc in the ArmMsgFeedbackCurrentMotorMaxAccLimit class to 0.001 rad/s^2.
  • Added firmware version descriptions in the interface documentation.

Bug Fixes

  • Modified pyproject.toml to allow proper installation using setup.py (the previous version was missing the version field in the project tag, causing pip install . to fail).
  • Fixed the issue where msg_type in msg_v2 was not assigned using auto.
  • Fixed missing class references in piper_sdk/__init__.py, which caused errors.
  • Fixed an error in protocol where the position information of motor 2 was incorrectly assigned to motor 3.
  • Fixed an issue in interface where the timestamp for high-speed feedback data was mistakenly using the timestamp from low-speed feedback data.

0.2.17

26 Feb 09:47
Compare
Choose a tag to compare
  • Changed the parameter names of foc_status in piper_msgs/msg_v1(msg_v2)/feedback/arm_low_spd_feedback.py in two files:
    • Renamed sensor_status to collision_status
    • Renamed homing_status to stall_status
  • Added type checking (must be of Python's int type) and value range checking (within joint limit range) for the JointCtrl function.
  • Added type checking (must be of Python's int type) for the EndPoseCtrl function's input values
  • Modified the comments in the SearchAllMotorMaxAngleSpd and SearchAllMotorMaxAccLimit functions to include CAN ID descriptions.
  • Added a demo file to set and print the robotic arm's collision level piper_read_crash_protectation.py.
  • Modified the arm_high_spd_feedback to set the motor_speed unit to 0.001 rad/s and the current unit to 0.001 A.
  • Modified the shell script. Since the sh command does not support == for equality comparison, but bash does, changed it to use = for equality comparison. This allows the script to be used in zsh.

0.1.16

24 Feb 10:09
Compare
Choose a tag to compare

Compared to version 0.1.15, the following changes were made:

  • Corrected the output unit for the gripper's printed data.
  • Fixed some comments and provided clearer explanations.
  • Unified the code formatting to maintain consistency.
  • Added data limits for the gripper message sending: [0, 5000], corresponding to [0, 5] N/m.
  • Added data limits for setting the maximum joint speed: [0, 3000], corresponding to [0, 3] rad/s.
  • Added data limits for setting the maximum joint acceleration: [0, 500], corresponding to [0, 5] rad/s^2.

0.1.15

19 Feb 09:37
44a8042
Compare
Choose a tag to compare

修复hardware/can_encapsulation.py文件的C_STD_CAN类内的SendCanMessage函数内调用is_can_bus_ok函数时,base_stateNone的问题

0.1.14

10 Feb 07:47
3b59ac0
Compare
Choose a tag to compare

相比0.1.13,修改了GetFK函数,增加了mode形参来选择计算机械臂关节正解的消息来源

mode仅支持两个参数["feedback","control"]

mode参数默认为"feedback"

  • 'feedback' -> 来自机械臂反馈关节角消息,对应GetArmJointMsgs函数反馈的数据;
  • 'control' -> 来自机械臂主臂模式下发送的控制关节角消息,对应GetArmJointCtrl函数反馈的数据