Releases: agilexrobotics/piper_sdk
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
0.3.0
Version 0.3.0
Features
-
Added interface parameters
start_sdk_joint_limit
,start_sdk_gripper_limit
, the default parameter isFalse
-
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
- Convert quaternion to Euler angle through
-
Added functions
EnableFkCal
andDisableFkCal
to enable/disable sdk calculation fk.isCalFk
is used to get whether to enable fk calculation, and then read it throughGetFK
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 ofConnectPort
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
andEmergencyStop
functions to set the mode and perform emergency stop (replaceMotionCtrl_1
andMotionCtrl_2
) -
Will get CAN_ID=0x151 - Renamed the function of the arm mode control command from
GetArmCtrlCode151
toGetArmModeCtrl
-
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
toMessage()
type in theC_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
andSetSDKGripperRangeParam
functions to set software constraints
See the
piper_set_sdk_param.py
file in the demo for examples. - Use the parameters in the interface to turn on the sdk limit function:
-
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 theutils
path, themonitor
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
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
andEmergencyStop
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 emptyMessage()
in theC_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
andSetSDKGripperRangeParam
functions to set software constraints.
Refer to thepiper_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
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
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 withzsh
. - 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
, andarm_low_spd_feedback.py
. - Corrected the unit description of
max_joint_acc
in theArmMsgFeedbackCurrentMotorMaxAccLimit
class to0.001 rad/s^2
. - Added firmware version descriptions in the interface documentation.
Bug Fixes
- Modified
pyproject.toml
to allow proper installation usingsetup.py
(the previous version was missing theversion
field in theproject
tag, causingpip install .
to fail). - Fixed the issue where
msg_type
inmsg_v2
was not assigned usingauto
. - 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
- Changed the parameter names of
foc_status
inpiper_msgs/msg_v1(msg_v2)/feedback/arm_low_spd_feedback.py
in two files:- Renamed
sensor_status
tocollision_status
- Renamed
homing_status
tostall_status
- Renamed
- 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
andSearchAllMotorMaxAccLimit
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 themotor_speed
unit to 0.001 rad/s and thecurrent
unit to 0.001 A. - Modified the shell script. Since the
sh
command does not support==
for equality comparison, butbash
does, changed it to use=
for equality comparison. This allows the script to be used inzsh
.
0.1.16
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
修复hardware/can_encapsulation.py
文件的C_STD_CAN
类内的SendCanMessage
函数内调用is_can_bus_ok
函数时,base_state
为None
的问题