Open JuanDelAguila opened 1 year ago
Thanks @JuanDelAguila
I think the best thing is to create a flag that the user can set in the robot yaml configuration file, e.g. target_message_type: 'JointState' # or 'Float64MultiArray'
. First you will need to implement extractor methods, e.g.
@staticmethod
def get_target_from_joint_state_msg(msg: JointState):
# TODO: convert JointState to list
return q
@staticmethod
def get_target_from_float64multiarray(msg: Float64MultiArray):
# TODO: convert Float64MultiArray to list
return
then after the following if
-statement
you can set the extractor function as a class variable, e.g.
if self.target_message_type == 'JointState':
self.get_target_from_msg = self.get_target_from_jointstate
elif # TODO...
then call this function inside the set_target
method.
@joaomoura24 and I have been discussing that the topic
joint_states/target
maybe should be renamed tojoint_states/command
to remain consistent with conventions in robot control. Additionally, the topicjoint_states/target
uses asensor_msgs/JointState
message type which is usually reserved for reading joint_states, not for commanding. Perhaps a more standard message type should be used for commanding joints such asstd_msgs/Float64MultiArray
.