Releases: agilexrobotics/piper_sdk
Release list
0.6.2
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_msgandtx_msgin the interface to avoid repeatedly creating message objects in receive and transmit paths
- Reuses
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
Version 0.6.1
Features
- ✨ feat(can_encapsulation): Adds
dlcandis_extended_idparameters toSendCanMessage - ✨ feat(interface,piper_msgs): Adds CPV mode selection and comments
- CPV mode can be switched using
ModeCtrl(0x01, 0x05)
- CPV mode can be switched using
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
CreateCanBusfunction to specify that the expected parameter is'socketcan'or'slcan'.
- Modified the comments related to bustype in the
- 🧪 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 aspiper_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 aspiper_ctrl_end_pose.py; - Synchronized the README content in the demos.
- Added a demo for
0.6.0
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_inita new meaning; when it isFalse, the CAN bus will not be initialized, andCreateCanBusneeds to be called manually. - Added a check in
ConnectPortto see if the CAN bus is None; if it is None, aValueErrorerror will be reported. - Modified the
Initfunction incan_encapsulation_v0_4_0to add baud rate setting when creating the bus. - Added
piper_set_can.pytodemo.
- Gave
- Added some wrapper functions:
GetMotorStatesis a wrapper function forGetArmHighSpdInfoMsgs, and the name has been changed to make its meaning clearer.GetDriverStatesis a wrapper function forGetArmLowSpdInfoMsgs, and the name has been changed to make its meaning clearer.ResetPiperis a wrapper function forMotionCtrl_1, making the function of resetting the robotic arm a separate function.
- Added serial port CAN reading functionality:
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
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
DisableFilterAbnormalDatafunction to disable it; use theEnableFilterAbnormalDatafunction to enable it. TheisFilterAbnormalDatafunction 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.
- Abnormal data filtering is enabled by default. Use the
- ✨ feat(interface): Add the get function
GetCanBusof 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, andClearRespSetInstruction, 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
SetInstructionResponsefunction 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
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
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.pythat prevented the first MoveC after returning to zero.
Miscellaneous
None
0.4.1(Yank)
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
InterfaceaddsGetCanNamefunction to get the can port name currently read byinterface
Bug Fixes
None
Miscellaneous
- Modify the note about
Message NOT sentin README to the prompt of log printing; modify the instructions about updating piper_sdk.
0.4.0
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.pyand the revised versioncan_encapsulation_v0_4_0.pycorresponding to the sdk version, add enum inside the class as the status feedback after the can function is executed, and modify the__init__.pyofhardware_portand the way to importC_STD_CANin the interface for this purpose -
Add the import of
ArmMsgFeedbackStatusEnumclass 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_pathrelated 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
0.3.2
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