DAIRLab / dairlib

MIT License
76 stars 27 forks source link

Add utility class to simultaneously visualize multiple robot poses and DIRCON callback. #144

Closed mposa closed 4 years ago

mposa commented 4 years ago

Related to #103

Visualizes multiple states simultaneously, also wraps into a DIRCON callback function.

Parses a URDF multiple times to achieve this, with the only option of welding one frame to the world. It would probably be better to simple work off of an existing MBP, if that were possible.

RussTedrake commented 4 years ago

Nice. Related to https://github.com/RobotLocomotion/drake/issues/9728 .

mposa commented 4 years ago

I could also add an option to not show every knot point during TrajectoryOptimization (instead showing every T knot points). Would this be useful?

mposa commented 4 years ago

Will also add transparency as an option, once upstream Drake feature is implemented.

https://github.com/RobotLocomotion/drake/issues/13126

yminchen commented 4 years ago

I could also add an option to not show every knot point during TrajectoryOptimization (instead showing every T knot points). Would this be useful?

Yes this feature will be helpful, especially when we cannot change the transparency of the poses between start and end. I'm imagining after https://github.com/RobotLocomotion/drake/issues/13126 is fixed we can show non-transparent poses every T knot points, and show the rest of the poses with high transparency.

yminchen commented 4 years ago

I'm imagining after RobotLocomotion/drake#13126 is fixed we can show non-transparent poses every T knot points, and show the rest of the poses with high transparency.

If we don't want to see the the rest of the poses, we can just set the transparency parameter to 0 (assume 0 is invisible).

mposa commented 4 years ago

Added the option to display fractional poses, which I think is worthwhile. Note that it shows poses

(1, 1 + T, 1 + 2T, 1 + 3T, ..., N)

always showing the last pose. Take a look and see what you think.

yminchen commented 4 years ago

Another use case just occurred to me, I think it will be great to have an API which takes a list of the key frame indices? For example, if we have a multi-mode trajectory, and the key frames we want to see might not necessarily locate at (1, 1 + T, 1 + 2T, 1 + 3T, ..., N)

yangwill commented 4 years ago

LGTM! Having the option to specify the number of poses when calling DrawPoses() might be slightly more flexible but I don't see a dire need for that in the foreseeable future.

By the way, I have code in a branch to visualize the trajectory after saving the states at the knot points to a LCM trajectory, so you don't need to rerun the optimization problem just to visualize something. Could be useful later on.