Adds Teleop UI Feedback Visualization: Framework and Application#3178
Adds Teleop UI Feedback Visualization: Framework and Application#3178lotusl-code wants to merge 3 commits into
Conversation
This is not closed and 3178 is this PR Also you don't need to put code API definitions in the description, please remove. |
|
|
||
| XRVisualization.push_event("enable_teleop_visualization", cfg.enable_visualization) | ||
| XRVisualization.push_data({"sim_device": cfg.sim_device}) | ||
| hand_torque_mapping = ["L_thumb_proximal_pitch_joint", "L_thumb_distal_joint", |
There was a problem hiding this comment.
Can we not get this from the hand_joint_names in the GR1T2RetargeterCfg?
| # get joint torque | ||
| joints_torque = self.scene["robot"].data.applied_torque[0] | ||
| joints_name = self.scene["robot"].data.joint_names | ||
| XRVisualization.push_data({"joints_torque": joints_torque, "joints_torque_limit": joints_torque_limit, "joints_name": joints_name}) |
There was a problem hiding this comment.
This is not the right place to put this I think. We only care about this for imitation learning but this is a base class specifically for RL tasks.
|
@lotusl-code Are you still getting 45fps with these changes specifically with the hand skeleton enabled? In the past we have been bitten by non instanced visualizations in the scene causing performance issues. |
I'll test |
| import carb | ||
| from omni.kit.viewport.utility.camera_state import ViewportCameraState | ||
|
|
||
| def send_message_to_client(message: dict): |
There was a problem hiding this comment.
nit: Can this be a private static member of TeleopVisualizationManager for better encapsulation?
| self._error_text_color = 0xFF0000FF | ||
| self.ik_error_widget_id = "/ik_solver_failed" | ||
|
|
||
| #self.display_widget("IK Error Detected", self.ik_error_widget_id, VisualizationManager.message_widget_preset() | {"text_color": self._error_text_color, "display_duration": None}) |
|
Newly opened #3356 |
Framework
Architecture
TeleopVisualizationManager is a child-class of VisualizationManager. It provides a series of visualization logics by defining callbacks.
If users don't need the logics, they can also use the plain VisualizationManager instead of TeleopVisualizationManager, or even customize their own child-class.
Sample
scene_visualization_sample.py includes 3 visualizers:
Application