Navsim_navigate: Backend's VirtualGamepadBridge is not ready yet

I have a fresh installation of version 2019.3 of Isaac Sim and Isaac SDK. I can run navsim_navigate, and it works (The robot in the simulation navigates autonomously and avoids obstacles, as it should). However, when I try to control the robot with the Virtual Gamepad in Websight, the Virtual Gamepad widget says “Backend’s VirtualGamepadBridge is not ready yet”. However, according to this post, the navsim_navigate app should already be configured to use the Virtual Gamepad. (And checking the JSON configuration files seems to confirm this)

What could be causing this? How can I control the robot in Unity3D simulation with a virtual joystick?

Thank you for any help you can provide.

Hi scottti,
The navsim_navigate app is not setup to use the joystick.

To add this possibility you need the following changes:

1. Add commander node:

{
  "name": "commander",
  "subgraph": "packages/navigation/apps/differential_base_commander.subgraph.json"
 }

2. Add required edges to enable the command control in simulation:

{
  "source": "commander.subgraph/interface/command",
  "target": "simulation.interface/input/base_command"
 },
 {
  "source": "navigation.subgraph/interface/command",
  "target": "commander.subgraph/interface/control"
}

3. Add the manual mode channel to the navigation control configuration:

config:{
....
"navigation.control.lqr": {
  "isaac.planner.DifferentialBaseLqrPlanner": {
    "manual_mode_channel": "commander.robot_remote/isaac.navigation.RobotRemoteControl/manual_mode"
  }
},
"navigation.control.control": {
  "isaac.planner.DifferentialBaseControl": {
    "manual_mode_channel": "commander.robot_remote/isaac.navigation.RobotRemoteControl/manual_mode"
  }
},
...

4. Add the commander subgraph to the application data in the BUILD file:

isaac_app(
 name = "navsim_navigate",
 data = [
   ...
   "//packages/navigation/apps:differential_base_commander_subgraph"
 ],
 ...
)

After this, you should be able to use the Virtual GamePad.
To disable the manual mode and change to the autonomous navigation disable the deadman_switch (tick Isaac Sight -> Application Configuration -> [commander.robot_remote] -> disable_deadman_switch + submit)

Let me know if it works for you

1 Like

Thank you, that was very helpful!

I also experimented with some other configurations, to help myself learn more about the system, so now I have a pretty good idea of the graph system and how to customize it. Thanks again!

Thank you for the summary! I’m trying to use the above instructions to add the virtual joystick to the navsim_navigate app, which I modified to use the Holonomic Base instead for Kaya. However, I keep running into an issue where bazel outputs:
2020-09-29 18:29:44.829 PANIC engine/alice/application.cpp@157: No node with name 'virtual_gamepad_bridge’

I double checked that the name ‘virtual_gamepad_bridge’ is the one used in the holonomic_base_commander.subgraph.json file and that seems to be the case. I’m a little lost on why it’s giving me this error then. Is there some above step I could have missed to get that? Or is there some other difference to use the holonomic base in the navsim app that I’m ignoring?

Any tips you could provide to help me get to the bottom of this would be much appreciated! Thanks in advance

Sorry for the late reply, missed this before.

2020-09-29 18:29:44.829 PANIC engine/alice/application.cpp@157: No node with name 'virtual_gamepad_bridge’

This type of error usually shows up when you are trying to use the node but you are not including it in your application graph. Ex, if you have a an edge connecting virtual_gamepad_bridge to other component but you don’t declare it in your “graph”.

Can you send/show the exact app file and the changes you made to the application?