RoboComp Logo

A simple robotics framework.

Gazebo-RoboComp Integration Tool: gazeboserver

Currently RoboComp uses RoboComp Innermodel Simulator (RCIS), an inbuilt simulator, to check its applications and algorithms. It provides a lot of basic tools and features to easily test and verify an application developed by a developer. But besides its usefulness, more tools and features need to be developed to make it better. So, gazebo was chosen to serve as an secondary options to the developers to test their algorithms and fulfill their needs to the fullest.

So, here we are with a working model of the integration that uses ICE framework as a communication layer combined with the Gazebo’s transport layer to have a seamless communication between gazebo simulator and any robocomp simulator. For the ones who don’t what is Ice, Internet Communications Engine (Ice) is an object-oriented RPC framework that helps you build distributed server-client base applications with minimal effort. I will have a separate blog on it.

So, the model is not integrated with the robocomp’s current code base. But I did test it with a robocomp component and it worked absolutely fine.

Here is a demo video for the testing with I did with a ICE client and a server.

server instantiates a LaserI object which is responsible for connecting to the gazebo simulator. client will have the proxy to connect with the server to listen to its request. For if we do give signal to the server then it will print out the laser scan data of the laser sensor used in the simulator.

In the demo I first start the gazebo simulator with the from the project root directory, file which have the necessary information to initiate and populate a world. gazebo --verbose

Then to show the channel which on which communication is done: gz topic -l which lists all the channel published or subscribed by gazebo.

The information about the laser is getting published on a particular topic /gazebo/gazebo_robocomp_laser/hokuyo/hokuyo/link/laser/scan. To know what is being published we do: gz topic -e /gazebo/gazebo_robocomp_laser/hokuyo/hokuyo/link/laser/scan

Next to intiate the server we go to build dir and iniate the server by ./server. It starts printing the Getting Callbacks, that means it is receiving information on the gazebo topic that it LaserI has subscibed.

Next we initiate the client by ./client 1. This makes a request to the server to print all the laser data on the console.

This way we are able to communicate with gazebo with the help of ICE interface.

Of course the real tool, which I have named gazeboserver which will be very different from it and have presentation and logging techniques, but the idea is the same.

Akash Kumar Singh