The magnets mounted to the femur/tibia joints of the hexapod legs are all mounted differently. This means that although the tibia angle of the front/right leg might be mechanically the same as the tibia angle of the back/right leg, the leg controllers will report widely different angles. To overcome this, at startup the control software is driving all hydraulically controlled actuators to a defined position and is then capturing the offset of all sensor values. It then uses this offset to calculate the correct angle offset.
The purpose of this feature is to offload the offset compensation to the leg controller. The robot control software will still drive all joints to a pre-defined location, but instead of capturing the offset itself it will utilize a OpenCyphal service (i.e. 435.ExecuteCommand.1.1.dsdl) pair to instruct the leg controller to capture the current magnetic angle and subsequently use it for offset angle compensation.
Suggest A Solution
Offset angle at firmware startup is zero.
When receiving a CAPTURE_MAGNETIC_OFFSET command the current angle is captured and stored as offset.
Going forward the firmware reports corrected_angle = angle_sensor - angle_offset.
⚡ Feature Request
The magnets mounted to the femur/tibia joints of the hexapod legs are all mounted differently. This means that although the tibia angle of the front/right leg might be mechanically the same as the tibia angle of the back/right leg, the leg controllers will report widely different angles. To overcome this, at startup the control software is driving all hydraulically controlled actuators to a defined position and is then capturing the offset of all sensor values. It then uses this offset to calculate the correct angle offset.
The purpose of this feature is to offload the offset compensation to the leg controller. The robot control software will still drive all joints to a pre-defined location, but instead of capturing the offset itself it will utilize a OpenCyphal service (i.e. 435.ExecuteCommand.1.1.dsdl) pair to instruct the leg controller to capture the current magnetic angle and subsequently use it for offset angle compensation.
Suggest A Solution
CAPTURE_MAGNETIC_OFFSET
command the current angle is captured and stored as offset.corrected_angle = angle_sensor - angle_offset
.