Gazebo | Ignition | Community
Ask Your Question

How to improve communication performance between Gazebo Ubuntu and Windows?

asked 2015-02-23 15:22:01 -0500

Eduardo Albuquerque gravatar image


I'm working on an application that runs on Windows using Unity3d while Gazebo is running on Ubuntu in a virtual machine. The communication between them is made via ROS topics/services and Gazebo plugins. The physics is calculated on Gazabo while the Windows application is used for visualization and user control.

Right now, my windows application calls Gazebo API functions using ROS services, but the performance is too bad. Every time my main application calls a service (e.g for setting a joint velocity), it freezes until the service is complete. Calling a dozen services in each simulation step is enough to make the application execution impossible.

Is there a way to improve communication performance between the two platforms? Any suggestion is welcome. We are thinking about using ROS actions, but we're not sure it's gonna solve our problem.


Eduardo de Albuquerque

edit retag flag offensive close merge delete


Hi Eduardo, can I ask you why you choose Unity3D only for visualization & Ui? I currently evaluating an approach for developing a software for a virtual implementation. We want to test our robots in a virtual factory. I played a little with Unity3D and the whole API is very need. I like also the design approach in the editor but when it comes to sensors and the physics engine, definitely Gazebo has a better solution. Can you share your experiences? Would be great to hear from you, Robert

TwoBid gravatar imageTwoBid ( 2016-05-05 07:03:41 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2015-02-23 23:05:50 -0500

Kunal Tyagi gravatar image

updated 2015-02-23 23:08:37 -0500

I have 2 suggestions:

  • Move all applications to single platform. Unity3D editor doesn't come for linux, but you can publish applications for linux based os. So, use that. It will result in faster execution, since the VM is eliminated. You can also use Wine, but I haven't tried that
  • Use ROS actions. Basically, using a ROS service is like calling a function in the same thread. If that function takes a lot of time, the service blocks the thread, till the service call is completed. Either use another thread to call the service, or use ROS actions which implement this crude hack in a more elegant manner
edit flag offensive delete link more


Thanks for the suggestions. We need to use the Unity3d editor, so create a Linux application is not an option. At first, we were using only Ubuntu and Wine, but the application was very unstable and kept crashing randomly. For this reason, we moved to windows and a VM. We gonna try to use ROS actions as you suggested. Right now, we are doing some tests and then I will publish the results here. Again, thanks for the advices.

Eduardo Albuquerque gravatar imageEduardo Albuquerque ( 2015-02-24 11:32:18 -0500 )edit

You can use the Unity3D editor in windows, use the publish option to get an application for linux. Use that application to interact with gazebo.

Kunal Tyagi gravatar imageKunal Tyagi ( 2015-02-24 11:38:49 -0500 )edit

Thanks again! But for some pratical reasons, for our current project, it would impossible to do this. For now, we're gonna try ROS actions. We hope Gazebo 6.0 will support windows.

Eduardo Albuquerque gravatar imageEduardo Albuquerque ( 2015-02-24 12:19:19 -0500 )edit
Login/Signup to Answer

Question Tools


Asked: 2015-02-23 15:22:01 -0500

Seen: 1,265 times

Last updated: Feb 23 '15