BIDOIS Morgan & NUNES Thomas
RobAIR Projet - Multimedia part
- 1 Introduction
- 2 Context
- 3 Implementation
- 3.1 Technologies Choices
- 3.2 Architecture
- 3.3 Reservation portal
- 4 ROS integration
- 5 Achievement
- 6 Conclusion
- 7 Appendices
RobAIR is a project in which several schools and departments are involved, such as the RICM and 3I departments of Polytech'Grenoble, ENSIMAG and Pole Design de Villefontaine. This project consists of developing an extensible and open-source robotic platform. The robot, called RobAIR, is a telepresence robot that can be used for museum tours while the user controls it thanks to an Android tablet. The conception of this robot was divided into several sub-projects, such as the electronic aspects for the 3I students, WiFi Roaming for the RICM's group 1 students, the robotic aspects for the RICM's group 2 students and the communication between the user and the robot for the RICM's group 3 students. As the members of the RICM's group 3, we will explain our sub-project in this report.
One of the first use of the robot robAIR could be the interactive tour of a museum. In this sector, some technologies already exist. The interactive tour of famous museums is already possible on the Internet. It is possible to visit them looking at 360 degrees photos of the rooms. The movement is done by links into the photos like in the google maps application. The robots are also already in place in some museums. Their role for the instance, are just guides or operators. With the robot robAIR, it could be possible to guide the client and make visio tour in the same time but also to have a visit done by a private client.
Existing virtual museum visit system:
- An example of virtual visit by Google 
- Louvre Virtual visit 
- ErasmeVirtual visit
We are responsible in this project of:
- The communication between the robot and the controller.
- Videoconferencing between the robot and the controller.
- The communication between the controller and the tablets which allows the user to control the robot.
- The tablet interface to control the robot.
Figure of project organisation
- Control a robot and interact with videoconferencing.
- Establish the communication between the robot and the server.
- Establish the communication between the server and the robot.
- Have a feedback on the robot state (battery level, problems encountered)
- Display data about the robot environment to get a feedback (robot velocity, position on the map).
- ROS must operate on an Ubuntu platform.
- Tablet's controller interfaces are developed for the Android platform.
- Wifi with Internet access for the robot and for the controller.
- The robot can’t climb up steep slopes.
The user doesn’t need to be familiar with programming and doesn't need a specific formation. He just needs to know how to use a tablet and a television.
OSGi and Jitsi
At the start of the project we talked with Thomas Calmant and Joao Claudio Américo who worked on RobAIR 2012 project. They recommended to use OSGi to organize with a component model our application and help us about the use of Jitsi.
Jitsi, which use OSGi, was not implemented correctly and we could not extract a service of the program. After some research, we discovered that there was a library Jitsi named LibJitsi allowing use of videoconferencing as a service.
Libjitsi is a library based on Jitsi. We tried to use it with the RICM5 group who helped us. However, their examples did not work and we haven’t found support by the community to find a solution.
After the Jitsi problems we have tested an other solution. Libjingle is a collection of open-source C++ code and sample applications that enables you to build a peer-to-peer application like video conferencing.
Very complicated to install and difficult to run a video conferencing application. Despite the help of RICM5 group, we can’t create a videoconferencing with sound and video.
GStreamer is a pipeline-based multimedia framework written in the C programming language with the type system based on GObject. The RICM5 group develop this solution after previous failures.
The code is on Github: 
Then we focused on the RobAIR interface.
RobAIR reservation platform
The RICM5 group has created a Web reservation platform using the python microframework Flask. The platform has an API which accept reservation request and answer if the request is correct and then give the date of the end of the connection session.
Their work is at .
After that, we forked their work to extend this and continue its development.
Our final version is at 
The goal was to allow a tablet or a smartphone to connect to the server. Communication between the TV server and the controller device.
The first architecture indicated the usage of CometD. However this technology is aging. And we have prefered to use the websockets, a technology more adapted to our project. Communication between the TV server and the robot
The communication was designed by the RICM5 group who chose to use a XMPP canal to communicate with the robot.
Three choices were possible:
- A native application on android: sharply reduce the number of supported devices.
- A phoneGap application: Do not work on PCs, heavier installation and configuration.
- A web-mobile application: Can not use all system functions.
We finally choose to do a web-mobile application recommended by the RICM5 group. The implementation of websockets is easier and they could offer a support on these technologies.
Project global architecture
The RICM5 group was the project architects and designed the architecture of our work.
Reservation portal structure.
The reservation portal is a python online server.
Ros intregration of our project.
The Web Server of the interface is integrate as a publisher node on the client-side and publishes commands on a command topic like the keyboard or wiimote node.
- The user logs in the reservation interface and send a connection request to the reservation portal manager.
- Then the user goes to a error page or a information page of their date connection.
- On the command page, the user can control the robot with touchscreen or if he don't be available by mouse drag.
- Depending on the direction in which the drag is done, commands are sent by XMPP and WebSockets to the robot.
- A stop Button is available too for emergency.
To conclude, we wrote a program capable to scan the networks in range and obtains information regarding them, such as the SSID, the type of encoding, the signal strength, etc. So far, we support networks with WEP and WPA encoding. This project allowed the three groups to develop individual tools that eventually could be assembled together. This establishes a ground base for students in RICM3 that will work on the RobAIR2014 project. They will be able to understand much more quickly the main principles of ROS, thanks to the tutorials of the Group 2, and they will have a WiFi roaming program available to use.
Sources of previous years
- The RobAIR 2012 project by Rémi Barraquand. 
- An exemple of JAVA node to communicate with ROS by Thomas Calmant: 
RICM5 Sources used in our subproject
Flask examples (python microframework)
- Ros demonstration program
- A python server with the Flask microframework for the tablet interface. 
- A server platform to manage connection query 
- NXT robot package with our interface (a fork from RICM5 group)
- RobAIR second configuration package with our interface (a fork from first RICM4 group)
- The pdf of the presentation : (to come)
- The wiki page