Gazebo | Ignition | Community
Ask Your Question

Running gazebo on Docker affects simulation speed, meshes, and world objects

asked 2017-05-04 17:41:58 -0600

ethanabrooks gravatar image

updated 2017-05-05 13:11:49 -0600

I have the following setup:

  • gazebo gets launched in docker with gui:=false via a roslaunch command (which eventually calls gazebo_ros empty_world.launch)

  • gzlient gets launched on my local machine. I connect it to the docker container by setting GAZEBO_MASTER_IP=$(docker inspect --format '{{ .NetworkSettings.Networks.a3cnet.IPAddress }}' [container]) and GAZEBO_MASTER_URI=$GAZEBO_MASTER_IP:11345 before running gzclient.

I am encountering the following three problems:

  1. Even though real_time_update_rate is set to 0 in my .world file, the simulation seems to be running at realtime.
  2. My robot shows up, but all other objects in the world are not displayed in the GUI. I have also tried running roslaunch gazebo_ros rubble_world.launch as well as several other gazebo_ros launch files and the walls and such still do not show up.
  3. gzclient throws errors for the meshes in my robot model because it is looking for the absolute paths in my docker file. Specifically, all the meshes in my docker container are located at /catkin/src/tum_simulator/cvg_sim_gazebo/meshes. Of course they are located elsewhere on my local machine. Is there a way to correct this?

I am running gazebo 7.7.0 locally and 7.6.0 on the docker. I am using ros kinetic.

Thank you for your help.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2017-05-05 13:11:53 -0600

ethanabrooks gravatar image

I solved 1. and 2. by adding verbose:=true when launching empty_world.launch. This seems a bit hacky, but as I understand, when command_args remain blank in empty_world.launch, gzserver does not properly parse the arguments and tries to treat ode as the world_file argument. I discovered this because, when I hard-coded --verbose at the end of the call to gzserver in empty_world.launch:

<node name="gazebo" pkg="gazebo_ros" type="$(arg script_type)" respawn="$(arg respawn_gazebo)" output="screen" args="$(arg command_arg1) $(arg command_arg2) $(arg command_arg3) -e $(arg physics) $(arg extra_gazebo_args) $(arg world_name)" --verbose />

I got the following error: Could not open file[ode]. So there seems to be some problems with how those arguments are passed to gzserver in empty_world.launch.

Problem 3 remains open but it is identical to this question.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2017-05-04 17:41:58 -0600

Seen: 1,205 times

Last updated: May 05 '17