60#ifndef guWhiteboard_HalLegTarget_h
61#define guWhiteboard_HalLegTarget_h
63#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
72#undef guWhiteboard_HalLegTarget_DEFINED
73#define guWhiteboard_HalLegTarget_DEFINED
75#undef HalLegTarget_DEFINED
76#define HalLegTarget_DEFINED
90 void init(int32_t t_target_movement_time = INT_MAX, int16_t t_target_hipyawpitch = 0, int16_t t_target_hiproll = 0, int16_t t_target_hippitch = 0, int16_t t_target_kneepitch = 0, int16_t t_target_anklepitch = 0, int16_t t_target_ankleroll = 0, uint8_t t_target_leg =
LEFT_LEG, uint8_t t_target_hipyawpitchstiffness = 0, uint8_t t_target_hiprollstiffness = 0, uint8_t t_target_hippitchstiffness = 0, uint8_t t_target_kneepitchstiffness = 0, uint8_t t_target_anklepitchstiffness = 0, uint8_t t_target_anklerollstiffness = 0, uint8_t t_target_pliability = 0,
unsigned int t_target_hipyawpitch_active =
true,
unsigned int t_target_hiproll_active =
true,
unsigned int t_target_hippitch_active =
true,
unsigned int t_target_kneepitch_active =
true,
unsigned int t_target_anklepitch_active =
true,
unsigned int t_target_ankleroll_active =
true,
unsigned int t_target_leg_at_goal =
false,
unsigned int t_target_leg_stop =
false) {
121 HalLegTarget(int32_t t_target_movement_time = INT_MAX, int16_t t_target_hipyawpitch = 0, int16_t t_target_hiproll = 0, int16_t t_target_hippitch = 0, int16_t t_target_kneepitch = 0, int16_t t_target_anklepitch = 0, int16_t t_target_ankleroll = 0, uint8_t t_target_leg =
LEFT_LEG, uint8_t t_target_hipyawpitchstiffness = 0, uint8_t t_target_hiprollstiffness = 0, uint8_t t_target_hippitchstiffness = 0, uint8_t t_target_kneepitchstiffness = 0, uint8_t t_target_anklepitchstiffness = 0, uint8_t t_target_anklerollstiffness = 0, uint8_t t_target_pliability = 0,
unsigned int t_target_hipyawpitch_active =
true,
unsigned int t_target_hiproll_active =
true,
unsigned int t_target_hippitch_active =
true,
unsigned int t_target_kneepitch_active =
true,
unsigned int t_target_anklepitch_active =
true,
unsigned int t_target_ankleroll_active =
true,
unsigned int t_target_leg_at_goal =
false,
unsigned int t_target_leg_stop =
false) {
122 this->init(t_target_movement_time, t_target_hipyawpitch, t_target_hiproll, t_target_hippitch, t_target_kneepitch, t_target_anklepitch, t_target_ankleroll, t_target_leg, t_target_hipyawpitchstiffness, t_target_hiprollstiffness, t_target_hippitchstiffness, t_target_kneepitchstiffness, t_target_anklepitchstiffness, t_target_anklerollstiffness, t_target_pliability, t_target_hipyawpitch_active, t_target_hiproll_active, t_target_hippitch_active, t_target_kneepitch_active, t_target_anklepitch_active, t_target_ankleroll_active, t_target_leg_at_goal, t_target_leg_stop);
129 this->init(t_other.target_movement_time(), t_other.target_hipyawpitch(), t_other.target_hiproll(), t_other.target_hippitch(), t_other.target_kneepitch(), t_other.target_anklepitch(), t_other.target_ankleroll(), t_other.target_leg(), t_other.target_hipyawpitchstiffness(), t_other.target_hiprollstiffness(), t_other.target_hippitchstiffness(), t_other.target_kneepitchstiffness(), t_other.target_anklepitchstiffness(), t_other.target_anklerollstiffness(), t_other.target_pliability(), t_other.target_hipyawpitch_active(), t_other.target_hiproll_active(), t_other.target_hippitch_active(), t_other.target_kneepitch_active(), t_other.target_anklepitch_active(), t_other.target_ankleroll_active(), t_other.target_leg_at_goal(), t_other.target_leg_stop());
136 this->init(t_other.
target_movement_time, t_other.
target_hipyawpitch, t_other.
target_hiproll, t_other.
target_hippitch, t_other.
target_kneepitch, t_other.
target_anklepitch, t_other.
target_ankleroll, t_other.
target_leg, t_other.
target_hipyawpitchstiffness, t_other.
target_hiprollstiffness, t_other.
target_hippitchstiffness, t_other.
target_kneepitchstiffness, t_other.
target_anklepitchstiffness, t_other.
target_anklerollstiffness, t_other.
target_pliability, t_other.
target_hipyawpitch_active, t_other.
target_hiproll_active, t_other.
target_hippitch_active, t_other.
target_kneepitch_active, t_other.
target_anklepitch_active, t_other.
target_ankleroll_active, t_other.
target_leg_at_goal, t_other.
target_leg_stop);
143 this->init(t_other.target_movement_time(), t_other.target_hipyawpitch(), t_other.target_hiproll(), t_other.target_hippitch(), t_other.target_kneepitch(), t_other.target_anklepitch(), t_other.target_ankleroll(), t_other.target_leg(), t_other.target_hipyawpitchstiffness(), t_other.target_hiprollstiffness(), t_other.target_hippitchstiffness(), t_other.target_kneepitchstiffness(), t_other.target_anklepitchstiffness(), t_other.target_anklerollstiffness(), t_other.target_pliability(), t_other.target_hipyawpitch_active(), t_other.target_hiproll_active(), t_other.target_hippitch_active(), t_other.target_kneepitch_active(), t_other.target_anklepitch_active(), t_other.target_ankleroll_active(), t_other.target_leg_at_goal(), t_other.target_leg_stop());
151 this->init(t_other.
target_movement_time, t_other.
target_hipyawpitch, t_other.
target_hiproll, t_other.
target_hippitch, t_other.
target_kneepitch, t_other.
target_anklepitch, t_other.
target_ankleroll, t_other.
target_leg, t_other.
target_hipyawpitchstiffness, t_other.
target_hiprollstiffness, t_other.
target_hippitchstiffness, t_other.
target_kneepitchstiffness, t_other.
target_anklepitchstiffness, t_other.
target_anklerollstiffness, t_other.
target_pliability, t_other.
target_hipyawpitch_active, t_other.
target_hiproll_active, t_other.
target_hippitch_active, t_other.
target_kneepitch_active, t_other.
target_anklepitch_active, t_other.
target_ankleroll_active, t_other.
target_leg_at_goal, t_other.
target_leg_stop);
184 return !(*
this == t_other);
194 return !(*
this == t_other);
502#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
512#ifdef USE_WB_HAL_LEG_TARGET_C_CONVERSION
515 std::string descr = buffer;
518 std::ostringstream ss;
523 ss <<
"target_hiproll=" <<
static_cast<signed>(this->
target_hiproll());
525 ss <<
"target_hippitch=" <<
static_cast<signed>(this->
target_hippitch());
533 ss <<
"target_leg=" <<
static_cast<unsigned>(this->
target_leg());
569#ifdef USE_WB_HAL_LEG_TARGET_C_CONVERSION
572 std::string toString = buffer;
575 std::ostringstream ss;
590 ss << static_cast<unsigned>(this->
target_leg());
625#ifdef USE_WB_HAL_LEG_TARGET_C_CONVERSION
630 char * str_cstr =
const_cast<char *
>(t_str.c_str());
631 size_t temp_length = strlen(str_cstr);
632 int length = (temp_length <= INT_MAX) ? static_cast<int>(
static_cast<ssize_t
>(temp_length)) : -1;
637 char* var_str = &var_str_buffer[0];
639 char* key = &key_buffer[0];
646 if (index == 0 && str_cstr[0] ==
'{') {
652 for (
int i = index; i < length; i++) {
654 if (bracecount == 0 && str_cstr[i] ==
'=') {
659 if (bracecount == 0 && isspace(str_cstr[i])) {
666 if (bracecount == 0 && str_cstr[i] ==
',') {
670 if (str_cstr[i] ==
'{') {
674 if (str_cstr[i] ==
'}') {
676 if (bracecount < 0) {
681 if (i == length - 1) {
685 if (endKey >= startKey && endKey - startKey < length) {
686 strncpy(key, str_cstr + startKey,
static_cast<size_t>((endKey - startKey) + 1));
687 key[(endKey - startKey) + 1] = 0;
691 strncpy(var_str, str_cstr + startVar,
static_cast<size_t>((index - startVar) + 1));
692 var_str[(index - startVar) + 1] = 0;
698 if (strlen(key) > 0) {
699 if (0 == strcmp(
"target_movement_time", key)) {
701 }
else if (0 == strcmp(
"target_hipyawpitch", key)) {
703 }
else if (0 == strcmp(
"target_hiproll", key)) {
705 }
else if (0 == strcmp(
"target_hippitch", key)) {
707 }
else if (0 == strcmp(
"target_kneepitch", key)) {
709 }
else if (0 == strcmp(
"target_anklepitch", key)) {
711 }
else if (0 == strcmp(
"target_ankleroll", key)) {
713 }
else if (0 == strcmp(
"target_leg", key)) {
715 }
else if (0 == strcmp(
"target_hipyawpitchstiffness", key)) {
717 }
else if (0 == strcmp(
"target_hiprollstiffness", key)) {
719 }
else if (0 == strcmp(
"target_hippitchstiffness", key)) {
721 }
else if (0 == strcmp(
"target_kneepitchstiffness", key)) {
723 }
else if (0 == strcmp(
"target_anklepitchstiffness", key)) {
725 }
else if (0 == strcmp(
"target_anklerollstiffness", key)) {
727 }
else if (0 == strcmp(
"target_pliability", key)) {
729 }
else if (0 == strcmp(
"target_hipyawpitch_active", key)) {
731 }
else if (0 == strcmp(
"target_hiproll_active", key)) {
733 }
else if (0 == strcmp(
"target_hippitch_active", key)) {
735 }
else if (0 == strcmp(
"target_kneepitch_active", key)) {
737 }
else if (0 == strcmp(
"target_anklepitch_active", key)) {
739 }
else if (0 == strcmp(
"target_ankleroll_active", key)) {
741 }
else if (0 == strcmp(
"target_leg_at_goal", key)) {
743 }
else if (0 == strcmp(
"target_leg_stop", key)) {
870 }
while(index < length);
875#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
881#ifdef USE_WB_HAL_LEG_TARGET_C_CONVERSION
884 std::string descr = buffer;
887 std::stringstream ss;
948 int32_t time = INT_MAX)
973 int32_t time = INT_MAX)
1048 int16_t hipyawpitchMargin =
static_cast<int16_t
>(abs(
target_hipyawpitch() - status.target_hipyawpitch()));
1049 int16_t hiprollMargin =
static_cast<int16_t
>(abs(
target_hiproll() - status.target_hiproll()));
1050 int16_t hippitchMargin =
static_cast<int16_t
>(abs(
target_hippitch() - status.target_hippitch()));
1051 int16_t kneepitchMargin =
static_cast<int16_t
>(abs(
target_kneepitch() - status.target_kneepitch()));
1052 int16_t anklepitchMargin =
static_cast<int16_t
>(abs(
target_anklepitch() - status.target_anklepitch()));
1053 int16_t anklerollMargin =
static_cast<int16_t
>(abs(
target_ankleroll() - status.target_ankleroll()));
1054 if ( (hipyawpitchMargin <= tolerance.target_hipyawpitch())
1055 && (hiprollMargin <= tolerance.target_hiproll())
1056 && (hippitchMargin <= tolerance.target_hippitch())
1057 && (kneepitchMargin <= tolerance.target_kneepitch())
1058 && (anklepitchMargin <= tolerance.target_anklepitch())
1059 && (anklerollMargin <= tolerance.target_ankleroll())
1274 if ((stiffness <= 1.0f) && (stiffness >=0.0f)) {
Class for moving a SINGLE robotic leg with up to 6 degrees of freedom using local coords of each join...
float get_anklepitch_RAD()
HalLegTarget(const struct wb_hal_leg_target &t_other)
Copy Constructor.
void from_string(const std::string &t_str)
void isAtGoal(bool goalReached)
Leg at Goal Setter Clients/Machines should not use this method.
void setLegPliability(bool hipyawpitch, bool hiproll, bool hippitch, bool kneepitch, bool anklepitch, bool ankleroll)
Individually set the active/passive state of each joint.
void setLegStiffnessMax()
Convenience function to set the stiffness of all the leg's joints to the maximum (1....
void set_target_ankleroll_active(const unsigned int &t_newValue)
uint8_t & target_hipyawpitchstiffness()
float get_kneepitch_RAD()
bool hasSameMirroredPose(const HalLegTarget &other)
Tests if this HalLegTarget object has the same mirrored pose settings as the other HalLegTarget objec...
void mirrorLeg(const HalLegTarget &other)
Convenience function to mirror leg settings about the XZ plane from one HalLegTarget object to anothe...
void set_anklepitch_DEG(float setting)
void set_target_leg_stop(const unsigned int &t_newValue)
void set_target_hipyawpitch_active(const unsigned int &t_newValue)
const int16_t & target_ankleroll() const
void set_hipyawpitchstiffness(float setting)
Stiffness Setters.
void set_hippitch_RAD(float setting)
HalLegTarget(const uint8_t &target_leg=0, const float hipyawpitch=0, const float hiproll=0, const float hippitch=0, const float kneepitch=0, const float anklepitch=0, const float ankleroll=0, const float hipyawpitchstiffness=0, const float hiprollstiffness=0, const float hippitchstiffness=0, const float kneepitchstiffness=0, const float anklepitchstiffness=0, const float anklerollstiffness=0, const bool hipyawpitch_active=true, const bool hiproll_active=true, const bool hippitch_active=true, const bool kneepitch_active=true, const bool anklepitch_active=true, const bool ankleroll_active=true, const int32_t movement_time=1000000, const uint8_t pliability=10, const bool leg_stop=false, const bool inRadians=false)
Constructor, defaults to LEFT_LEG.
int32_t & target_movement_time()
bool isLegAllPassive()
Are all of the legs's joints set to passive.
bool isLegPassive()
Are any of the leg's joints set to passive.
void setPose_Rad(float hipyawpitch, float hiproll, float hippitch, float kneepitch, float anklepitch, float ankleroll)
Set Pose in radians.
float get_anklepitch_DEG()
unsigned int target_hiproll_active() const
void set_hiproll_RAD(float setting)
uint8_t & target_kneepitchstiffness()
void set_hippitchstiffness(float setting)
float get_hippitchstiffness()
void set_kneepitchstiffness(float setting)
float get_hiprollstiffness()
std::string description()
void set_ankleroll_RAD(float setting)
bool hasSamePose(const HalLegTarget &other)
Tests if this HalLegTarget object has the same pose settings as the other HalLegTarget object.
void goToWithTime_Rad(float hipyawpitch, float hiproll, float hippitch, float kneepitch, float anklepitch, float ankleroll, int32_t time=INT_MAX)
move to position in radians over a given time
void set_target_anklepitch_active(const unsigned int &t_newValue)
void set_anklepitchstiffness(float setting)
const uint8_t & target_pliability() const
void ready()
Set leg to ready state (Default) The leg will act on motion commands.
HalLegTarget & operator=(const HalLegTarget &t_other)
Copy Assignment Operator.
uint8_t & target_anklerollstiffness()
int16_t & target_hiproll()
const uint8_t & target_anklerollstiffness() const
unsigned int target_hipyawpitch_active() const
int16_t & target_hipyawpitch()
const uint8_t & target_leg() const
void set_hippitch_DEG(float setting)
void set_target_hiproll_active(const unsigned int &t_newValue)
float get_hipyawpitch_DEG()
Movement Getters (Degrees)
void tieToLeg(uint8_t leg)
USE_WB_HAL_LEG_TARGET_C_CONVERSION WHITEBOARD_POSTER_STRING_CONVERSION.
unsigned int target_hippitch_active() const
const uint8_t & target_hippitchstiffness() const
unsigned int target_kneepitch_active() const
void set_target_movement_time(const int32_t &t_newValue)
void setLegStiffnessNormal()
Convenience function to set the stiffness of all the leg's joints to what Aldebaran considers 'normal...
const uint8_t & target_hiprollstiffness() const
void set_hipyawpitch_DEG(float setting)
Movement Setters (Degrees)
uint8_t & target_hiprollstiffness()
uint8_t & target_hippitchstiffness()
void set_kneepitch_DEG(float setting)
void set_target_hipyawpitch(const int16_t &t_newValue)
float get_ankleroll_DEG()
void from_string(const std::string &str)
Parser for recreating this class (NYI)
int16_t & target_ankleroll()
void set_kneepitch_RAD(float setting)
void set_target_ankleroll(const int16_t &t_newValue)
const int32_t & target_movement_time() const
bool atTargetLocation(HalLegTarget status, HalLegTarget tolerance)
Client side test to determine if leg is at the target location, allowing for specified tolerances.
unsigned int target_anklepitch_active() const
void set_target_hiproll(const int16_t &t_newValue)
void set_target_leg(const uint8_t &t_newValue)
void mirrorPose(const HalLegTarget &other)
Convenience function to mirror pose settings about the XZ plane from one HalLegTarget object to anoth...
void set_target_kneepitch_active(const unsigned int &t_newValue)
void set_target_kneepitch(const int16_t &t_newValue)
const int16_t & target_kneepitch() const
void set_anklerollstiffness(float setting)
uint8_t & target_anklepitchstiffness()
float get_kneepitch_DEG()
void copyStiffness(const HalLegTarget &other)
Convenience function to copy stiffness settings from one HalLegTarget object to another.
void set_target_anklerollstiffness(const uint8_t &t_newValue)
void set_target_hipyawpitchstiffness(const uint8_t &t_newValue)
void goToWithTime_Deg(float hipyawpitch, float hiproll, float hippitch, float kneepitch, float anklepitch, float ankleroll, int32_t time=INT_MAX)
move to position in degrees over a given time
int16_t & target_kneepitch()
void copyPose(const HalLegTarget &other)
Convenience function to copy pose settings from one HalLegTarget object to another.
void setLegStiffness(float stiffness)
Convenience function to set uniform stiffness on all leg joints to a custom value.
void set_hiproll_DEG(float setting)
float get_anklerollstiffness()
void set_target_hippitchstiffness(const uint8_t &t_newValue)
void set_target_hippitch_active(const unsigned int &t_newValue)
bool hasSameStiffness(const HalLegTarget &other)
Tests if this HalLegTarget object has the same stiffness settings as the other HalLegTarget object.
const int16_t & target_anklepitch() const
void setPose_Deg(float hipyawpitch, float hiproll, float hippitch, float kneepitch, float anklepitch, float ankleroll)
Set Pose in degrees.
bool isLegAllActive()
Are all of the leg's joints set to active.
void set_ankleroll_DEG(float setting)
void stop()
Command the leg to stop at its current location and not act on motion commands until ready() is calle...
void set_target_hippitch(const int16_t &t_newValue)
const uint8_t & target_hipyawpitchstiffness() const
int16_t & target_anklepitch()
std::string valueDescription()
WHITEBOARD_POSTER_STRING_CONVERSION.
float get_ankleroll_RAD()
void setLegActive()
Set leg to be Active (DEDAULT DCM state) The leg is active and manual movements will be resisted,...
void set_anklepitch_RAD(float setting)
void setLegStiffnessOff()
Convenience function to turn off stiffness in all the leg's joints (0.0f).
void set_target_kneepitchstiffness(const uint8_t &t_newValue)
HalLegTarget(const std::string &t_str)
String Constructor.
const int16_t & target_hipyawpitch() const
const uint8_t & target_kneepitchstiffness() const
void set_hiprollstiffness(float setting)
void setLegPassive()
Set leg to be Passive Manually moving the leg causes the leg to stay in the new position.
unsigned int target_leg_at_goal() const
float get_hipyawpitchstiffness()
Stiffness Getters.
bool operator==(const HalLegTarget &t_other) const
bool operator!=(const HalLegTarget &t_other) const
void set_target_leg_at_goal(const unsigned int &t_newValue)
int16_t & target_hippitch()
float get_kneepitchstiffness()
const uint8_t & target_anklepitchstiffness() const
const int16_t & target_hippitch() const
float get_hipyawpitch_RAD()
Movement Getters (Radians)
void set_target_pliability(const uint8_t &t_newValue)
HalLegTarget(int32_t t_target_movement_time=INT_MAX, int16_t t_target_hipyawpitch=0, int16_t t_target_hiproll=0, int16_t t_target_hippitch=0, int16_t t_target_kneepitch=0, int16_t t_target_anklepitch=0, int16_t t_target_ankleroll=0, uint8_t t_target_leg=(static_cast< uint8_t >(0)), uint8_t t_target_hipyawpitchstiffness=0, uint8_t t_target_hiprollstiffness=0, uint8_t t_target_hippitchstiffness=0, uint8_t t_target_kneepitchstiffness=0, uint8_t t_target_anklepitchstiffness=0, uint8_t t_target_anklerollstiffness=0, uint8_t t_target_pliability=0, unsigned int t_target_hipyawpitch_active=true, unsigned int t_target_hiproll_active=true, unsigned int t_target_hippitch_active=true, unsigned int t_target_kneepitch_active=true, unsigned int t_target_anklepitch_active=true, unsigned int t_target_ankleroll_active=true, unsigned int t_target_leg_at_goal=false, unsigned int t_target_leg_stop=false)
Create a new HalLegTarget.
void set_target_anklepitchstiffness(const uint8_t &t_newValue)
bool atGoal()
Leg at Goal Getter Clients/Machines should use this getter to test if the DCM has reported that the l...
unsigned int target_leg_stop() const
float get_anklepitchstiffness()
HalLegTarget(const HalLegTarget &t_other)
Copy Constructor.
void set_target_anklepitch(const int16_t &t_newValue)
const int16_t & target_hiproll() const
uint8_t & target_pliability()
void set_hipyawpitch_RAD(float setting)
Movement Setters (Radians)
void set_target_hiprollstiffness(const uint8_t &t_newValue)
unsigned int target_ankleroll_active() const
WHITEBOARD_POSTER_STRING_CONVERSION.
uint8_t target_pliability
target leg's pliability when in Passive Mode; When the leg is passive, this value reduces the update ...
uint8_t target_hipyawpitchstiffness
target hip yaw pitch stiffness as a percentage
uint8_t target_hiprollstiffness
target hip roll stiffness as a percentage
uint8_t target_kneepitchstiffness
target knee pitch stiffness as a percentage
unsigned int target_anklepitch_active
Is the ankle pitch Active (true[DEFAULT]) or Passive (false)
uint8_t target_anklerollstiffness
target ankle roll stiffness as a percentage
int16_t target_hipyawpitch
target hip yaw pitch angle in 10ths of degrees
uint8_t target_leg
target leg number; This property is used strictly for accounting purposes when the struct is stored w...
uint8_t target_anklepitchstiffness
target ankle pitch stiffness as a percentage
unsigned int target_ankleroll_active
Is the ankle roll Active (true[DEFAULT]) or Passive (false)
unsigned int target_hiproll_active
Is the hip roll Active (true[DEFAULT]) or Passive (false)
unsigned int target_hipyawpitch_active
Is the hipyawpitch Active (true[DEFAULT]) or Passive (false).
int16_t target_kneepitch
target knee pitch angle in 10ths of degrees
int32_t target_movement_time
Control Message: The elapsed time, in mSec, in which the movement should be completed.
int16_t target_anklepitch
target ankle pitch angle in 10ths of degrees
int16_t target_ankleroll
target ankle roll angle in 10ths of degrees
unsigned int target_kneepitch_active
Is the knee pitch Active (true[DEFAULT]) or Passive (false)
unsigned int target_leg_stop
Control Message: Stop the leg at its current location.
unsigned int target_hippitch_active
Is the hip pitch Active (true[DEFAULT]) or Passive (false)
uint8_t target_hippitchstiffness
target hip pitch stiffness as a percentage
int16_t target_hiproll
target hip roll angle angle in 10ths of degrees
unsigned int target_leg_at_goal
Control Message: Not used.
int16_t target_hippitch
target hip pitch angle in 10ths of degrees
target_hipyawpitch target_hippitch target_anklepitch target_leg target_hiprollstiffness target_kneepitchstiffness target_anklerollstiffness int16_t int16_t int16_t int16_t int16_t anklepitch
target_hipyawpitch target_hippitch target_anklepitch target_leg target_hiprollstiffness target_kneepitchstiffness target_anklerollstiffness int16_t int16_t int16_t int16_t kneepitch
target_hipyawpitch target_hippitch target_anklepitch target_leg target_hiprollstiffness target_kneepitchstiffness target_anklerollstiffness int16_t int16_t int16_t hippitch
target_hipyawpitch target_hippitch target_anklepitch target_leg target_hiprollstiffness target_kneepitchstiffness target_anklerollstiffness int16_t int16_t hiproll
target_hipyawpitch target_hippitch target_anklepitch target_leg target_hiprollstiffness target_kneepitchstiffness target_anklerollstiffness int16_t hipyawpitch
target_hipyawpitch target_hippitch target_anklepitch target_leg target_hiprollstiffness target_kneepitchstiffness target_anklerollstiffness int16_t int16_t int16_t int16_t int16_t int16_t ankleroll
const char * wb_hal_leg_target_to_string(const struct wb_hal_leg_target *self, char *toString, size_t bufferSize)
Convert to a string.
const char * wb_hal_leg_target_value_description(const struct wb_hal_leg_target *self, char *toString, size_t bufferSize)
Convert to a string.
const char * wb_hal_leg_target_description(const struct wb_hal_leg_target *self, char *descString, size_t bufferSize)
Convert to a description string.
struct wb_hal_leg_target * wb_hal_leg_target_from_string(struct wb_hal_leg_target *self, const char *str)
Convert from a string.
#define HAL_LEG_TARGET_DESC_BUFFER_SIZE
#define HAL_LEG_TARGET_TO_STRING_BUFFER_SIZE