Siddhant Shrivastava
June 12, 2015
Filed under “GSoC”
Hi! This is going to be a short post about my developments in the Week 3 of my GSoC project. Since my last post, I have had the chance to work with some exciting state-of-the-art technologies which allow easy distribution and scalability. These are -
- Docker

- Tango-Controls

I used the Ubuntu 14.04 Docker Container to setup my system which can be used by anyone in the world as a common platform to test the applications that I am working on. This has multiple advantages -
- Setup-time for collaborators is null. The developer sets up the Docker container and the community members can use it directly.
- Host platform-independent. It doesn’t matter whether the collaborator’s host system is Arch Linux, Windows 8, or a specific version of Ubuntu. Docker uses Linux namespaces and ensures a separation of concerns.
- Revision control mechanism. The developer plays around with a Docker Image just as he/she would do with any other Distribution Revision Control system. I push my changes to the repository (Docker image) and my mentors can simply pull the updates to get the new system configuration.
So far, I have setup Tango-Controls, ROS Indigo, and the Husky libraries for my Docker image. These can be found in the Docker Registry Hub
The issues that I am currently facing are -
- Graphics Problems. X-server Bad Drawing errors. A way to get around this will be to better understand how ROS applications use the X-server and then provide Docker the appropriate graphics capabilities. But this does not impede with the Command Line applications of ROS and Tango which I have been working on.
- MySQL connection problems. The workaround currently is to use the Host OS’s Tango HOST. I observed that it works fine that way.
This is it for this post. I mainly discussed about Docker in this post, which was an important thing that we discussed in the All-hands meeting on 8th June. I’ll go into much more detail with Tango Controls in the upcoming blog posts and the biweekly reports.
Ciao!
Siddhant Shrivastava
June 08, 2015
Filed under “GSoC”
Hi! This one is about my second week of the Google Summer of Code 2015 program. It was a busy long week two with some crucial design decisions to be implemented and new things to learn. It was also a hectic week of reading how to write better Python code (Fluent Python - O'Reilly Publishers
, maintaining Python2 and Python3 compatibility, etc) After finalizing on the architecture last week (shown below), it was time to work on implementing it -

Evidently from the diagram, there are two distributed systems involved - both significantly complicated. These are -
- Tango Controls
- ROS (Robot Operating System)
The challenge here is to create an event-triggered Tango Device which serves as both a client and a server. This Tango device listens for new events on the Tango bus, and sends data to it when need be. In addition, this is also interfaced with ROS in that the required Tango events for ROS are processed by the device and published to the appropriate TangoROS
topic when required. It also subscribes to ROSTango
topic to listen to any incoming updates from the robot.
Some use-cases for this are as follows -
- The Bodytracking server pushes the location/orientation data on the bus.
- The TangoROS Device subscribes to the events of the Bodytracking data on the Tango bus.
- When an event is triggered, the device processes the data into ROS-compatible messages (
location
and orientation
are transformed into linear velocity
and angular velocity
)
- The ROS Commander node (which is subscribed to the
ROSTango
topic)
- The ROS Commander node continuously monitors the robot for different measurements (sensor readings, battery status, navigation feedback, etc). The important signals are published to the
ROSTango bus
.
This is my first time working with the powerful Tango-Controls system. It is used by -
- Italian Mars Society
- The very large solar array network (SAK)
- Synchotrons and Particle Accelerators around Europe
I’ll discuss how I work with Tango and ROS in my next blog post.
The Italian Mars Society had an All-hands Skype meeting on 8th June, 2015 where all the GSoC students and mentors discussed project status, software architecture document feedback, roadblocks, hardware needs, collaboration, field tests etc.
Things that were discussed and to be done-
- Docker Image for ROS setup (very important)
- Battery status Tango server
- ROS Tango Client
- ROS Tango server for certain use cases
- Tango events
- Timestamp based Transformation of parameters in a time-series data
- Set up the Minoru 3D camera and the Oculus Rift device
This is a week where I’d like most of these things to fall in place. GSoC is turning out to be exciting and challenging! Til the next post. Over to week three.
Ciao!