60#ifndef guWhiteboard_HalArmTarget_h
61#define guWhiteboard_HalArmTarget_h
63#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
72#undef guWhiteboard_HalArmTarget_DEFINED
73#define guWhiteboard_HalArmTarget_DEFINED
75#undef HalArmTarget_DEFINED
76#define HalArmTarget_DEFINED
90 void init(int32_t t_target_movement_time = INT_MAX, int16_t t_target_shoulderpitch = 0, int16_t t_target_shoulderroll = 0, int16_t t_target_elbowroll = 0, int16_t t_target_elbowyaw = 0, int16_t t_target_wristyaw = 0, uint8_t t_target_arm =
LEFT_ARM, uint8_t t_target_hand = 0, uint8_t t_target_shoulderpitchstiffness = 0, uint8_t t_target_shoulderrollstiffness = 0, uint8_t t_target_elbowrollstiffness = 0, uint8_t t_target_elbowyawstiffness = 0, uint8_t t_target_wristyawstiffness = 0, uint8_t t_target_handstiffness = 0, uint8_t t_target_pliability = 0,
unsigned int t_target_shoulderpitch_active =
true,
unsigned int t_target_shoulderroll_active =
true,
unsigned int t_target_elbowroll_active =
true,
unsigned int t_target_elbowyaw_active =
true,
unsigned int t_target_wrist_active =
true,
unsigned int t_target_hand_active =
true,
unsigned int t_target_arm_at_goal =
false,
unsigned int t_target_arm_stop =
false) {
121 HalArmTarget(int32_t t_target_movement_time = INT_MAX, int16_t t_target_shoulderpitch = 0, int16_t t_target_shoulderroll = 0, int16_t t_target_elbowroll = 0, int16_t t_target_elbowyaw = 0, int16_t t_target_wristyaw = 0, uint8_t t_target_arm =
LEFT_ARM, uint8_t t_target_hand = 0, uint8_t t_target_shoulderpitchstiffness = 0, uint8_t t_target_shoulderrollstiffness = 0, uint8_t t_target_elbowrollstiffness = 0, uint8_t t_target_elbowyawstiffness = 0, uint8_t t_target_wristyawstiffness = 0, uint8_t t_target_handstiffness = 0, uint8_t t_target_pliability = 0,
unsigned int t_target_shoulderpitch_active =
true,
unsigned int t_target_shoulderroll_active =
true,
unsigned int t_target_elbowroll_active =
true,
unsigned int t_target_elbowyaw_active =
true,
unsigned int t_target_wrist_active =
true,
unsigned int t_target_hand_active =
true,
unsigned int t_target_arm_at_goal =
false,
unsigned int t_target_arm_stop =
false) {
122 this->init(t_target_movement_time, t_target_shoulderpitch, t_target_shoulderroll, t_target_elbowroll, t_target_elbowyaw, t_target_wristyaw, t_target_arm, t_target_hand, t_target_shoulderpitchstiffness, t_target_shoulderrollstiffness, t_target_elbowrollstiffness, t_target_elbowyawstiffness, t_target_wristyawstiffness, t_target_handstiffness, t_target_pliability, t_target_shoulderpitch_active, t_target_shoulderroll_active, t_target_elbowroll_active, t_target_elbowyaw_active, t_target_wrist_active, t_target_hand_active, t_target_arm_at_goal, t_target_arm_stop);
129 this->init(t_other.target_movement_time(), t_other.target_shoulderpitch(), t_other.target_shoulderroll(), t_other.target_elbowroll(), t_other.target_elbowyaw(), t_other.target_wristyaw(), t_other.target_arm(), t_other.target_hand(), t_other.target_shoulderpitchstiffness(), t_other.target_shoulderrollstiffness(), t_other.target_elbowrollstiffness(), t_other.target_elbowyawstiffness(), t_other.target_wristyawstiffness(), t_other.target_handstiffness(), t_other.target_pliability(), t_other.target_shoulderpitch_active(), t_other.target_shoulderroll_active(), t_other.target_elbowroll_active(), t_other.target_elbowyaw_active(), t_other.target_wrist_active(), t_other.target_hand_active(), t_other.target_arm_at_goal(), t_other.target_arm_stop());
136 this->init(t_other.
target_movement_time, t_other.
target_shoulderpitch, t_other.
target_shoulderroll, t_other.
target_elbowroll, t_other.
target_elbowyaw, t_other.
target_wristyaw, t_other.
target_arm, t_other.
target_hand, t_other.
target_shoulderpitchstiffness, t_other.
target_shoulderrollstiffness, t_other.
target_elbowrollstiffness, t_other.
target_elbowyawstiffness, t_other.
target_wristyawstiffness, t_other.
target_handstiffness, t_other.
target_pliability, t_other.
target_shoulderpitch_active, t_other.
target_shoulderroll_active, t_other.
target_elbowroll_active, t_other.
target_elbowyaw_active, t_other.
target_wrist_active, t_other.
target_hand_active, t_other.
target_arm_at_goal, t_other.
target_arm_stop);
143 this->init(t_other.target_movement_time(), t_other.target_shoulderpitch(), t_other.target_shoulderroll(), t_other.target_elbowroll(), t_other.target_elbowyaw(), t_other.target_wristyaw(), t_other.target_arm(), t_other.target_hand(), t_other.target_shoulderpitchstiffness(), t_other.target_shoulderrollstiffness(), t_other.target_elbowrollstiffness(), t_other.target_elbowyawstiffness(), t_other.target_wristyawstiffness(), t_other.target_handstiffness(), t_other.target_pliability(), t_other.target_shoulderpitch_active(), t_other.target_shoulderroll_active(), t_other.target_elbowroll_active(), t_other.target_elbowyaw_active(), t_other.target_wrist_active(), t_other.target_hand_active(), t_other.target_arm_at_goal(), t_other.target_arm_stop());
151 this->init(t_other.
target_movement_time, t_other.
target_shoulderpitch, t_other.
target_shoulderroll, t_other.
target_elbowroll, t_other.
target_elbowyaw, t_other.
target_wristyaw, t_other.
target_arm, t_other.
target_hand, t_other.
target_shoulderpitchstiffness, t_other.
target_shoulderrollstiffness, t_other.
target_elbowrollstiffness, t_other.
target_elbowyawstiffness, t_other.
target_wristyawstiffness, t_other.
target_handstiffness, t_other.
target_pliability, t_other.
target_shoulderpitch_active, t_other.
target_shoulderroll_active, t_other.
target_elbowroll_active, t_other.
target_elbowyaw_active, t_other.
target_wrist_active, t_other.
target_hand_active, t_other.
target_arm_at_goal, t_other.
target_arm_stop);
184 return !(*
this == t_other);
194 return !(*
this == t_other);
502#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
512#ifdef USE_WB_HAL_ARM_TARGET_C_CONVERSION
515 std::string descr = buffer;
518 std::ostringstream ss;
527 ss <<
"target_elbowyaw=" <<
static_cast<signed>(this->
target_elbowyaw());
529 ss <<
"target_wristyaw=" <<
static_cast<signed>(this->
target_wristyaw());
531 ss <<
"target_arm=" <<
static_cast<unsigned>(this->
target_arm());
533 ss <<
"target_hand=" <<
static_cast<unsigned>(this->
target_hand());
569#ifdef USE_WB_HAL_ARM_TARGET_C_CONVERSION
572 std::string toString = buffer;
575 std::ostringstream ss;
588 ss << static_cast<unsigned>(this->
target_arm());
625#ifdef USE_WB_HAL_ARM_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_shoulderpitch", key)) {
703 }
else if (0 == strcmp(
"target_shoulderroll", key)) {
705 }
else if (0 == strcmp(
"target_elbowroll", key)) {
707 }
else if (0 == strcmp(
"target_elbowyaw", key)) {
709 }
else if (0 == strcmp(
"target_wristyaw", key)) {
711 }
else if (0 == strcmp(
"target_arm", key)) {
713 }
else if (0 == strcmp(
"target_hand", key)) {
715 }
else if (0 == strcmp(
"target_shoulderpitchstiffness", key)) {
717 }
else if (0 == strcmp(
"target_shoulderrollstiffness", key)) {
719 }
else if (0 == strcmp(
"target_elbowrollstiffness", key)) {
721 }
else if (0 == strcmp(
"target_elbowyawstiffness", key)) {
723 }
else if (0 == strcmp(
"target_wristyawstiffness", key)) {
725 }
else if (0 == strcmp(
"target_handstiffness", key)) {
727 }
else if (0 == strcmp(
"target_pliability", key)) {
729 }
else if (0 == strcmp(
"target_shoulderpitch_active", key)) {
731 }
else if (0 == strcmp(
"target_shoulderroll_active", key)) {
733 }
else if (0 == strcmp(
"target_elbowroll_active", key)) {
735 }
else if (0 == strcmp(
"target_elbowyaw_active", key)) {
737 }
else if (0 == strcmp(
"target_wrist_active", key)) {
739 }
else if (0 == strcmp(
"target_hand_active", key)) {
741 }
else if (0 == strcmp(
"target_arm_at_goal", key)) {
743 }
else if (0 == strcmp(
"target_arm_stop", key)) {
870 }
while(index < length);
875#ifdef WHITEBOARD_POSTER_STRING_CONVERSION
881#ifdef USE_WB_HAL_ARM_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 shoulderpitchMargin =
static_cast<int16_t
>(abs(
target_shoulderpitch() - status.target_shoulderpitch()));
1049 int16_t shoulderrollMargin =
static_cast<int16_t
>(abs(
target_shoulderroll() - status.target_shoulderroll()));
1050 int16_t elbowrollMargin =
static_cast<int16_t
>(abs(
target_elbowroll() - status.target_elbowroll()));
1051 int16_t elbowyawMargin =
static_cast<int16_t
>(abs(
target_elbowyaw() - status.target_elbowyaw()));
1055 if ( (shoulderpitchMargin <= tolerance.target_shoulderpitch())
1056 && (shoulderrollMargin <= tolerance.target_shoulderroll())
1057 && (elbowrollMargin <= tolerance.target_elbowroll())
1058 && (elbowyawMargin <= tolerance.target_elbowyaw())
1275 if ((stiffness <= 1.0f) && (stiffness >=0.0f)) {
Class for moving a SINGLE robotic arm with up to 6 degrees of freedom using local coords of each join...
const int16_t & target_shoulderpitch() const
void set_shoulderpitch_RAD(float setting)
Movement Setters (Radians)
void set_target_hand_active(const unsigned int &t_newValue)
unsigned int target_arm_stop() const
bool atTargetLocation(HalArmTarget status, HalArmTarget tolerance)
Client side test to determine if arm is at the target location, allowing for specified tolerances.
void set_shoulderpitchstiffness(float setting)
Stiffness Setters.
void set_target_wrist_active(const unsigned int &t_newValue)
uint8_t & target_pliability()
void set_target_shoulderroll_active(const unsigned int &t_newValue)
void set_elbowrollstiffness(float setting)
void set_target_shoulderpitchstiffness(const uint8_t &t_newValue)
void set_target_arm_at_goal(const unsigned int &t_newValue)
float get_elbowroll_DEG()
int16_t & target_shoulderroll()
void setArmStiffness(float stiffness)
Convenience function to set uniform stiffness on all arm joints to a custom value.
const int16_t & target_elbowroll() const
void setArmStiffnessNormal()
Convenience function to set the stiffness of all the arm's joints to what Aldebaran considers 'normal...
const uint8_t & target_hand() const
void stop()
Command the arm to stop at its current location and not act on motion commands until ready() is calle...
void setPose_Rad(float shoulderpitch, float shoulderroll, float elbowroll, float elbowyaw, float wristyaw, float hand)
Set Pose in radians.
bool operator==(const HalArmTarget &t_other) const
void set_target_elbowroll(const int16_t &t_newValue)
uint8_t & target_wristyawstiffness()
void set_target_elbowrollstiffness(const uint8_t &t_newValue)
float get_shoulderroll_RAD()
void set_wristyawstiffness(float setting)
std::string valueDescription()
WHITEBOARD_POSTER_STRING_CONVERSION.
void set_elbowroll_RAD(float setting)
unsigned int target_hand_active() const
const uint8_t & target_wristyawstiffness() const
int16_t & target_shoulderpitch()
void from_string(const std::string &t_str)
void set_target_movement_time(const int32_t &t_newValue)
unsigned int target_elbowyaw_active() const
void set_target_elbowyawstiffness(const uint8_t &t_newValue)
uint8_t & target_shoulderrollstiffness()
float get_elbowroll_RAD()
void set_elbowyaw_DEG(float setting)
HalArmTarget & operator=(const HalArmTarget &t_other)
Copy Assignment Operator.
uint8_t & target_handstiffness()
bool atGoal()
Arm at Goal Getter Clients/Machines should use this getter to test if the DCM has reported that the a...
void set_target_wristyaw(const int16_t &t_newValue)
void set_target_hand(const uint8_t &t_newValue)
const int16_t & target_shoulderroll() const
uint8_t & target_elbowrollstiffness()
const uint8_t & target_elbowrollstiffness() const
void ready()
Set arm to ready state (Default) The arm will act on motion commands.
void tieToArm(uint8_t arm)
USE_WB_HAL_ARM_TARGET_C_CONVERSION WHITEBOARD_POSTER_STRING_CONVERSION.
uint8_t & target_shoulderpitchstiffness()
uint8_t & target_elbowyawstiffness()
int32_t & target_movement_time()
const uint8_t & target_pliability() const
void setArmStiffnessOff()
Convenience function to turn off stiffness in all the arm's joints (0.0f).
void copyStiffness(const HalArmTarget &other)
Convenience function to copy stiffness settings from one HalArmTarget object to another.
void set_handstiffness(float setting)
HalArmTarget(const std::string &t_str)
String Constructor.
const uint8_t & target_elbowyawstiffness() const
void set_elbowyawstiffness(float setting)
void copyPose(const HalArmTarget &other)
Convenience function to copy pose settings from one HalArmTarget object to another.
void set_wristyaw_RAD(float setting)
float get_elbowyawstiffness()
void setArmPliability(bool shoulderpitch, bool shoulderroll, bool elbowroll, bool elbowyaw, bool wristyaw, bool hand)
Individually set the active/passive state of each joint.
void set_shoulderroll_RAD(float setting)
void set_target_wristyawstiffness(const uint8_t &t_newValue)
void setPose_Deg(float shoulderpitch, float shoulderroll, float elbowroll, float elbowyaw, float wristyaw, float hand)
Set Pose in degrees.
float get_hand()
Hand Movement Getter.
void set_target_arm_stop(const unsigned int &t_newValue)
HalArmTarget(int32_t t_target_movement_time=INT_MAX, int16_t t_target_shoulderpitch=0, int16_t t_target_shoulderroll=0, int16_t t_target_elbowroll=0, int16_t t_target_elbowyaw=0, int16_t t_target_wristyaw=0, uint8_t t_target_arm=(static_cast< uint8_t >(0)), uint8_t t_target_hand=0, uint8_t t_target_shoulderpitchstiffness=0, uint8_t t_target_shoulderrollstiffness=0, uint8_t t_target_elbowrollstiffness=0, uint8_t t_target_elbowyawstiffness=0, uint8_t t_target_wristyawstiffness=0, uint8_t t_target_handstiffness=0, uint8_t t_target_pliability=0, unsigned int t_target_shoulderpitch_active=true, unsigned int t_target_shoulderroll_active=true, unsigned int t_target_elbowroll_active=true, unsigned int t_target_elbowyaw_active=true, unsigned int t_target_wrist_active=true, unsigned int t_target_hand_active=true, unsigned int t_target_arm_at_goal=false, unsigned int t_target_arm_stop=false)
Create a new HalArmTarget.
void from_string(const std::string &str)
Parser for recreating this class (NYI)
void set_shoulderroll_DEG(float setting)
float get_wristyawstiffness()
void set_target_elbowyaw_active(const unsigned int &t_newValue)
void set_target_shoulderrollstiffness(const uint8_t &t_newValue)
void set_shoulderpitch_DEG(float setting)
Movement Setters (Degrees)
unsigned int target_wrist_active() const
void set_target_handstiffness(const uint8_t &t_newValue)
const uint8_t & target_shoulderrollstiffness() const
const uint8_t & target_handstiffness() const
void set_hand(float setting)
Hand Movement Setter.
void set_wristyaw_DEG(float setting)
void set_target_pliability(const uint8_t &t_newValue)
void goToWithTime_Rad(float shoulderpitch, float shoulderroll, float elbowroll, float elbowyaw, float wristyaw, float hand, int32_t time=INT_MAX)
move to position in radians over a given time
bool hasSamePose(const HalArmTarget &other)
Tests if this HalArmTarget object has the same pose settings as the other HalArmTarget object.
float get_shoulderroll_DEG()
void set_target_arm(const uint8_t &t_newValue)
void mirrorPose(const HalArmTarget &other)
Convenience function to mirror pose settings about the XZ plane from one HalArmTarget object to anoth...
int16_t & target_elbowroll()
HalArmTarget(const uint8_t &target_arm=0, const float shoulderpitch=0, const float shoulderroll=0, const float elbowroll=0, const float elbowyaw=0, const float wristyaw=0, const float hand_PCT=0, const float shoulderpitchstiffness=0, const float shoulderrollstiffness=0, const float elbowrollstiffness=0, const float elbowyawstiffness=0, const float wristyawstiffness=0, const float handstiffness=0, const bool shoulderpitch_active=true, const bool shoulderroll_active=true, const bool elbowroll_active=true, const bool elbowyaw_active=true, const bool wrist_active=true, const bool hand_active=true, const int32_t movement_time=1000000, const uint8_t pliability=10, const bool arm_stop=false, const bool inRadians=false)
Constructor, defaults to LEFT_ARM.
void set_target_shoulderroll(const int16_t &t_newValue)
void set_elbowroll_DEG(float setting)
bool isArmAllActive()
Are all of the arm's joints set to active.
float get_shoulderpitchstiffness()
Stiffness Getters.
void set_target_shoulderpitch_active(const unsigned int &t_newValue)
float get_handstiffness()
unsigned int target_elbowroll_active() const
void setArmPassive()
Set arm to be Passive Manually moving the arm causes the arm to remain in the new position.
void goToWithTime_Deg(float shoulderpitch, float shoulderroll, float elbowroll, float elbowyaw, float wristyaw, float hand, int32_t time=INT_MAX)
move to position expressed in degrees over a given time
void set_target_elbowroll_active(const unsigned int &t_newValue)
void set_target_shoulderpitch(const int16_t &t_newValue)
const uint8_t & target_shoulderpitchstiffness() const
bool hasSameMirroredPose(const HalArmTarget &other)
Tests if this HalArmTarget object has the same mirrored pose settings as the other HalArmTarget objec...
std::string description()
const int32_t & target_movement_time() const
bool hasSameStiffness(const HalArmTarget &other)
Tests if this HalArmTarget object has the same stiffness settings as the other HalArmTarget object.
void setArmActive()
Set arm to be Active (DEDAULT DCM state) The arm is active and manual movements will be resisted,...
float get_shoulderpitch_RAD()
Movement Getters (Radians)
const uint8_t & target_arm() const
void set_elbowyaw_RAD(float setting)
unsigned int target_arm_at_goal() const
unsigned int target_shoulderpitch_active() const
void isAtGoal(bool goalReached)
Arm at Goal Setter Clients/Machines should not use this method.
void setArmStiffnessMax()
Convenience function to set the stiffness of all the arm's joints to the maximum (1....
float get_shoulderrollstiffness()
HalArmTarget(const struct wb_hal_arm_target &t_other)
Copy Constructor.
const int16_t & target_elbowyaw() const
float get_elbowrollstiffness()
unsigned int target_shoulderroll_active() const
void set_shoulderrollstiffness(float setting)
int16_t & target_elbowyaw()
HalArmTarget(const HalArmTarget &t_other)
Copy Constructor.
bool isArmPassive()
Are any of the arm's joints set to passive.
void mirrorArm(const HalArmTarget &other)
Convenience function to mirror arm settings about the XZ plane from one HalArmTarget object to anothe...
int16_t & target_wristyaw()
const int16_t & target_wristyaw() const
void set_target_elbowyaw(const int16_t &t_newValue)
bool isArmAllPassive()
Are all of the arm's joints set to passive.
float get_shoulderpitch_DEG()
Movement Getters (Degrees)
bool operator!=(const HalArmTarget &t_other) const
WHITEBOARD_POSTER_STRING_CONVERSION.
unsigned int target_arm_at_goal
Control Message: Not used.
uint8_t target_wristyawstiffness
target wrist yaw stiffness as a percentage
int16_t target_shoulderpitch
target shoulder pitch angle in 10ths of degrees
int16_t target_elbowroll
target elbow roll angle in 10ths of degrees
unsigned int target_elbowroll_active
Is the elbowroll Active (true[DEFAULT]) or Passive (false)
unsigned int target_hand_active
Is the hand Active (true[DEFAULT]) or Passive (false)
uint8_t target_handstiffness
target hand grasper stiffness as a percentage
unsigned int target_shoulderroll_active
Is the shoulderroll Active (true[DEFAULT]) or Passive (false)
uint8_t target_pliability
target arm's pliability when in Passive Mode.
unsigned int target_wrist_active
Is the wrist Active (true[DEFAULT]) or Passive (false)
uint8_t target_shoulderpitchstiffness
target shoulder pitch stiffness as a percentage
unsigned int target_shoulderpitch_active
Is the shoulderpitch Active (true[DEFAULT]) or Passive (false).
uint8_t target_arm
target arm number: This property is used strictly for accounting purposes when the struct is stored w...
uint8_t target_elbowrollstiffness
target elbow roll stiffness as a percentage
unsigned int target_arm_stop
Control Message: Stop the arm at its current location.
uint8_t target_elbowyawstiffness
target elbow yaw stiffness as a percentage
int16_t target_shoulderroll
target shoulder roll angle angle in 10ths of degrees
unsigned int target_elbowyaw_active
Is the elbowyaw Active (true[DEFAULT]) or Passive (false)
uint8_t target_hand
target hand grasper opening as a percentage: 0 gripper will be clasped shut, 100 gripper will be full...
int16_t target_wristyaw
target wrist yaw angle in 10ths of degrees
int32_t target_movement_time
The elapsed time, in mSec, in which the movement should be completed.
uint8_t target_shoulderrollstiffness
target shoulder roll stiffness as a percentage
int16_t target_elbowyaw
target elbow yaw angle in 10ths of degrees
target_shoulderpitch target_elbowroll target_wristyaw target_hand target_shoulderrollstiffness target_elbowyawstiffness target_handstiffness int16_t int16_t int16_t int16_t int16_t wristyaw
target_shoulderpitch target_elbowroll target_wristyaw target_hand target_shoulderrollstiffness target_elbowyawstiffness target_handstiffness int16_t int16_t int16_t int16_t elbowyaw
target_shoulderpitch target_elbowroll target_wristyaw target_hand target_shoulderrollstiffness target_elbowyawstiffness target_handstiffness int16_t shoulderpitch
target_shoulderpitch target_elbowroll target_wristyaw target_hand target_shoulderrollstiffness target_elbowyawstiffness target_handstiffness int16_t int16_t int16_t elbowroll
target_shoulderpitch target_elbowroll target_wristyaw target_hand target_shoulderrollstiffness target_elbowyawstiffness target_handstiffness int16_t int16_t shoulderroll
target_shoulderpitch target_elbowroll target_wristyaw target_hand target_shoulderrollstiffness target_elbowyawstiffness target_handstiffness int16_t int16_t int16_t int16_t int16_t uint8_t hand
struct wb_hal_arm_target * wb_hal_arm_target_from_string(struct wb_hal_arm_target *self, const char *str)
Convert from a string.
const char * wb_hal_arm_target_value_description(const struct wb_hal_arm_target *self, char *toString, size_t bufferSize)
Convert to a string.
const char * wb_hal_arm_target_description(const struct wb_hal_arm_target *self, char *descString, size_t bufferSize)
Convert to a description string.
const char * wb_hal_arm_target_to_string(const struct wb_hal_arm_target *self, char *toString, size_t bufferSize)
Convert to a string.
#define HAL_ARM_TARGET_TO_STRING_BUFFER_SIZE
#define HAL_ARM_TARGET_DESC_BUFFER_SIZE