Skip to content

Releases: agilexrobotics/piper_sdk

0.6.2

Choose a tag to compare

@RosenYin RosenYin released this 31 Jul 09:29
c9e8a28

Version 0.6.2

Features

  • ✨ feat(can_comm): Separates the send and receive CAN buses to reduce delays or send failures caused by resource contention
  • ✨ feat(piper_interface_v2): Adds receive and transmit message object instances
    • Reuses rx_msg and tx_msg in the interface to avoid repeatedly creating message objects in receive and transmit paths

Bug Fixes

  • 🐞 fix(hardware_port): Creates CAN buses according to the current platform
    • Windows and macOS share the receive/transmit bus, while Linux uses separate receive and transmit buses
    • Avoids shutting down the same bus instance more than once when closing the CAN bus

Miscellaneous

  • 🔧 build(setup.py): Updates the version to 0.6.2

0.6.1

Choose a tag to compare

@RosenYin RosenYin released this 30 Oct 06:40
081e7c5

Version 0.6.1

Features

  • ✨ feat(can_encapsulation): Adds dlc and is_extended_id parameters to SendCanMessage
  • ✨ feat(interface,piper_msgs): Adds CPV mode selection and comments
    • CPV mode can be switched using ModeCtrl(0x01, 0x05)

Bug Fixes

None

Miscellaneous

  • 🧪 test(demo): Added a demo for setting the joint limit of a single motor, piper_set_motor_angle_limit.py
  • 🧪 test(demo): Added a demo for setting the zero point of the robotic arm in CPV mode, piper_set_joint_zero_cpv.py
  • 📃 docs(interface): Modified the comment for the bustype parameter in the CreateCanBus function
    • Modified the comments related to bustype in the CreateCanBus function to specify that the expected parameter is 'socketcan' or 'slcan'.
  • 🧪 test(demo): Added three demos: moveJ, moveL, and moveP; synchronized the README in the demos.
    • Added a demo for piper_ctrl_moveJ.py, with the same content as piper_ctrl_joint.py;
    • Added a demo for piper_ctrl_moveL.py, which shows a robotic arm drawing a square;
    • Added a demo for piper_ctrl_moveP.py, with the same content as piper_ctrl_end_pose.py;
    • Synchronized the README content in the demos.

0.6.0

Choose a tag to compare

@RosenYin RosenYin released this 30 Oct 02:31
8a46807

Version 0.6.0

Features

  • ✨ feat(interface,can_encapsulation,demo): Added serial port CAN functionality (MAC support); Added some wrapper functions
    • Added serial port CAN reading functionality:
      • Gave can_auto_init a new meaning; when it is False, the CAN bus will not be initialized, and CreateCanBus needs to be called manually.
      • Added a check in ConnectPort to see if the CAN bus is None; if it is None, a ValueError error will be reported.
      • Modified the Init function in can_encapsulation_v0_4_0 to add baud rate setting when creating the bus.
      • Added piper_set_can.py to demo.
    • Added some wrapper functions:
      • GetMotorStates is a wrapper function for GetArmHighSpdInfoMsgs, and the name has been changed to make its meaning clearer.
      • GetDriverStates is a wrapper function for GetArmLowSpdInfoMsgs, and the name has been changed to make its meaning clearer.
      • ResetPiper is a wrapper function for MotionCtrl_1, making the function of resetting the robotic arm a separate function.

Bug Fixes

None

Miscellaneous

  • 📃 docs(Q&A.MD): Added explanations regarding the MIT protocol, clarifying the relationship between given torque and executed torque; added explanations regarding the value of motor feedback torque.
  • 📃 docs(Q&A.MD): Added instructions on using serial port CAN in Q&A.MD
  • 📃 docs(INTERFACE_V2.MD): Added descriptions of newly added functions in INTERFACE_V2.MD
  • 📃 docs(asserts): Organized the images into the pictures folder

0.5.0

Choose a tag to compare

@RosenYin RosenYin released this 16 Oct 10:34
e09101e

Version 0.5.0

Features

  • ✨ feat(interface): Added abnormal data filtering for gripper travel, joint angle, and end-point data.
    • Abnormal data filtering is enabled by default. Use the DisableFilterAbnormalData function to disable it; use the EnableFilterAbnormalData function to enable it. The isFilterAbnormalData function returns True to indicate that the abnormal data filtering function is enabled.
    • The gripper travel filter is set to 150mm*1000;
    • The joint angle filter is set to 300 degrees*1000;
    • The end-point data xyz filter is set to 1m*1000*1000, and the rpy filter is set to 361 degrees*1000.
  • ✨ feat(interface): Add the get function GetCanBus of the can class

Bug Fixes

  • 🐞 fix(msg, protocol, interface): Added command response feedback functionality, deprecating the previous version's set command response function.
    • Due to a protocol misunderstanding, the previous version's command response function was a send function, but the protocol actually uses a feedback message.
    • This update adds GetRespInstruction, a function for getting command response feedback, and ClearRespSetInstruction, a function for clearing stored command response messages. This function sets the timestamp variable in the command response feedback message to 0 and all other messages to -1.
    • Added the demo piper_read_resp_instruction.py.
    • The SetInstructionResponse function has been deprecated; calling it will generate a warning.

Miscellaneous

  • 📃 docs(INTERFACE_V2.MD): Add Get class function comments and new function descriptions

0.4.3

Choose a tag to compare

@RosenYin RosenYin released this 13 Oct 03:21
9448e73

Version 0.4.3

Features

None

Bug Fixes

None

Miscellaneous

  • 🌈 style(arm_gripper_ctrl, arm_feedback_gripper): Modifies the gripper angle in the msg class to gripper travel, and changes the unit to mm instead of degrees.
  • 🌈 style(kinematics/piper_fk.py): Adds unit annotations to the parameters of the forward function.
    • Adds unit annotations to the parameters and return data in the C_PiperForwardKinematics.CalFk function.
  • 🧪 test(demo/V2/piper_ctrl_reset.py): Removes the mode setting in the reset demo.
  • 🧪 test(demo/V2): Adds a tool coordinate system TCP offset and motor zero point setting demo.
    • demo/V2/piper_read_tcp_pose.py calculates the end point of the official Piper gripper.
    • demo/V2/piper_set_joint_zero.py sets the zero point of the Piper arm.
  • 🦄 Refactor (piper_msgs/msg_v2): Modify the msg init structure and class import method.
    • In piper_msgs/msg_v2/feedback, add an import path for all classes in the init module. Similarly, in piper_msgs/msg_v2/transmit.
    • Modify piper_msgs/msg_v2/init.py to import required classes from the feedback and transmit submodules.
    • Modify piper_msgs/msg_v2/arm_messages.py to import classes from the feedback and transmit submodules.
  • 📃 docs(readme): Added switching slave ARM example code to the readme;增加Jetson相关问题解决到Q&A中
  • 📃 docs(Q&A): Added Jetson related problem solving to Q&A
  • 📃 docs(interface): Optimizing function annotations

0.4.2

Choose a tag to compare

@RosenYin RosenYin released this 10 Sep 07:52
d46ec45

Version 0.4.2

Features

None

Bug Fixes

  • Fixed an issue where the program would fail due to an arm status bit potentially receiving unexpected data. We've added an enumeration attribute, UNKNOWN (0xFF). When unexpected data is received, the variable is assigned the value UNKNOWN (0xFF).
  • Fixed a bug where GetCanFps would still retrieve values ​​when the CAN module was connected alone without the arm.
  • Fixed an issue in demo/V2/piper_ctrl_moveC.py that prevented the first MoveC after returning to zero.

Miscellaneous

None

0.4.1(Yank)

Choose a tag to compare

@RosenYin RosenYin released this 23 Jul 03:10

The arm_status data frame may receive data outside the predefined range, causing the program to exit with an error.

Version 0.4.1

Features

  • Interface adds GetCanName function to get the can port name currently read by interface

Bug Fixes

None

Miscellaneous

  • Modify the note about Message NOT sent in README to the prompt of log printing; modify the instructions about updating piper_sdk.

0.4.0

Choose a tag to compare

@RosenYin RosenYin released this 22 Jul 10:27

Version 0.4.0

Features

  • Delete V1 version code

  • Added the 191 return to zero instruction, which requires the robot firmware version to be 1.7-4 or above, and is defined as follows:

    def ReqMasterArmMoveToHome(self, mode:Literal[0, 1, 2])
    '''
    mode (int): Request return-to-zero mode.
    
                0: Restore master-slave arm mode.
    
                1: Master arm return-to-zero.
    
                2: Master and slave arms return-to-zero together.
    '''
  • Add can encapsulation file can_encapsulation.py and the revised version can_encapsulation_v0_4_0.py corresponding to the sdk version, add enum inside the class as the status feedback after the can function is executed, and modify the __init__.py of hardware_port and the way to import C_STD_CAN in the interface for this purpose

  • Add the import of ArmMsgFeedbackStatusEnum class in __init__.py

  • Add log management (piper_sdk/utils/logger_mag.py) and add a fixed log path to store log files (piper_sdk/log)

  • Add the formal parameters logger_level, log_to_file, log_file_path related to log in the interface

  • Add the demo of piper_set_log_level.py

  • The LogLevel definition is as follows:

    class LogLevel(IntEnum):
        DEBUG = logging.DEBUG
        INFO = logging.INFO
        WARNING = logging.WARNING
        ERROR = logging.ERROR
        CRITICAL = logging.CRITICAL
        SILENT = 100

Bug fix

None

Others

  • setup.py changed the author to Agilex
  • Modified the function comments of the gripper, changed the angle to distance
  • Modified the movec function comments, changed the typo "midpoint" to "end point"

0.3.3

Choose a tag to compare

@RosenYin RosenYin released this 15 Jul 09:02

Version 0.3.3

Features

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

Bug Fixes

None

Miscellaneous

None

0.3.2

Choose a tag to compare

@RosenYin RosenYin released this 07 Jul 07:36

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