0

Background: I have a rospy-gazebo implementation of a robot simulator. I'm currently using ros_control to collect state estimation data and control joints through a position controller at each joint. I'm interested in transitioning to using the more mature controller types that drake offers.

My current plan is to execute "low-level" torque control at each joint via my current interface of ros_control, but additionally I am interested in creating a pydrake controller (for example PID, or LQR) that:

  • accepts state estimate (e.g. joint position and velocity vectors)
  • returns a torque command (which will then get published to the torque controller topic).

Tried so far: I've searched a fair bit through both the documentation, examples, tutorials as well as the underactuated course notes, associated collab jupyter note books, and drake-ros notes but am not able to find an example. In particular it appears that most of the examples are using the simulator object, native to drake, as opposed to creating a controller and then calling the controller "standalone" from within a different simulation environment (in this case ros-gazebo).

Question: If anyone knows of an example that does what I'm describing (i.e. instantiating a controller, then calling it with the current state at each time step), I'd be grateful to be pointed to said example. If such a thing doesn't exist, I'd be happy with a little guidance on how to achieve what I've described.
Thanks in advance!

0 Answers0