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 laser.world
from the project root directory, file which have the necessary information to initiate and populate a world.
gazebo --verbose laser.world
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