RobAIR2013-RICM4-Groupe3-Report

BIDOIS Morgan & NUNES Thomas

RobAIR Projet - Multimedia part

04/2013

=Introduction=

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.

= Context=

Existing sources
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.

I.1.2) Sources
Existing virtual museum visit system:


 * An example of virtual visit by Google


 * Louvre Virtual visit


 * ErasmeVirtual visit

I.2) Objectives
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

Specifications

 * 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).

Platform constraints:

 * ROS must operate on an Ubuntu platform.


 * Tablet's controller interfaces are developed for the Android platform.

Environmental constraints:

 * Wifi with Internet access for the robot and for the controller.


 * The robot can’t climb up steep slopes.

User characteristics
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.

=Implementation=

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
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.

LibJingle
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
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

RobAIR Interface
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.

Mobile application
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.

Framework
The Flask python micro-framework is used to homogenize with the portal reservation technology. We used on client side javascript, jquery, HTML5 and CSS.

Project global architecture
The RICM5 group was the project architects and designed the architecture of our work.



Reservation portal
Reservation portal structure.

The reservation portal is a python online server.



= ROS integration= 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.

= Achievement =

Reservation portal

 * 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.

Interface

 * 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.

=Conclusion= 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.

=Appendices=

Specification

 * SRS.
 * UML.

Sources of previous years

 * The RobAIR 2012 project by Rémi Barraquand.
 * An exemple of JAVA node to communicate with ROS by Thomas Calmant:

Flask examples (python microframework)

 * An example of flask multiChat with websockets
 * An simple example of flask using websockets

Ros nodes

 * Ros demonstration program

Our sources

 * 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)

Presentation

 * The pdf of the presentation : (to come)
 * The | wiki page