Home | Tutorials | Wiki | Issues
Ask Your Question

Revision history [back]

We use Ignition Transport services for communicating between the HAPTIX client code and Gazebo/real arm. It's not possible to send a single request that reaches multiple services, it's only received by one of the Gazebo instances. There's a slightly different behavior when using the keyboard teleoperation because we're publishing messages that can be received by multiple Gazebo instances. So the behavior that you observe is expected.

If you really want to control more that one arm at the same time you could:

  • Launch Gazebo on a terminal with IGN_PARTITION=gazebo1
  • Open a new terminal, set IGN_PARTITION=gazebo1 . At this point, a controller (controller_1) running here will talk with gazebo1.
  • Launch Gazebo on a terminal with IGN_PARTITION=gazebo2
  • Open a new terminal, set IGN_PARTITION=gazebo2 . At this point, a controller (controller_2) running here will talk with gazebo1.
  • You would need to modify your controllers for accepting (via Ignition Transport, raw sockets, shared memory, or any other IPC mechanism) commands from your master controller. Your controller_1 and controller_2 will receive the command and redirect it to its Gazebo instance.

                       +------------> controller_1 ------------> Gazebo_1
                       |
                       |
    master_controller  +
                       |
                       |
                       +------------> controller_2 ------------> Gazebo_2