How do I create holonomic command messages?

I’m trying to send holonomic commands to Kaya base driver.
I have x and y linear speeds, and angular speed.
I can’t find in the doc how to populate a StateProto message to send to KayaBaseDriver.

I though I could use isaac.message_generators.HolonomicBaseControlGenerator as an intermediate (it takes x,y and angular speed and outputs stateProto message), but it takes its inputs from parameters!
And correct me if I’m wrong but you can’t modify parameters from other nodes?

I’m kinda lost there, even though it sounds like something simple to do…

Hi,

It is actually possible to modify other nodes’ parameters. However this probably not the right solution here.

When we use an holonomic base, we usually use the HolonomicBaseControl that takes a DifferentialTrajectoryPlanProto as input (despite the name, which should be corrected, it can handle an holonomic trajectory).

However if you do not wish to use the controller but output directly the command yourself, you can do the following:

  messages::HolonomicBaseControls control;
  control.speed_x() = linear_velocity;
  control.speed_y() = lateral_velocity;
  control.angular_speed() = angular_velocity;
  ToProto(control, tx_command().initProto(), tx_command().().buffers());
  tx_command().().publish();

This is assuming you have the correct TX defined:

ISAAC_PROTO_TX(StateProto, command);

Please let me know if you need further help.

Regards,
Ben

1 Like

Thanks a lot, didn’t know there was a ToProto function for states