Telerobotics - Final Report
Siddhant Shrivastava
August 22, 2015
Filed under “GSoC”
Hi all! Yesterday was the firm-pencils-down deadline for the Coding Period and the past week was one of the best weeks of the Google Summer of Code 2015 program. I went all-guns-blazing with the documentation and Virtual Machine distribution efforts of my work on Telerobotics. I also added some significant features to Telerobotics such as ROS Integration with the EUROPA Scheduler which Shridhar worked on this summer with the Italian Mars Society.
Project Report
I completed the main aspects of the Telerobotics interface with strong results -
- Introduced Robot Operating Sytem (ROS) to ERAS
- Developed a Telerobotics Interface to Bodytracking and EUROPA
- Implemented Stereoscopic Streaming of 3-D video to the Blender Game Engine V-ERAS application
I explain each of these points and summarize my experience in the following paragraphs. In the last week, I got a chance to pursue a collective effort in all the areas of my project -
Replication Experiments
The ultimate week began with attempts to ensure that my mentors could replicate my machine setup in order to test and comment on the performance of Telerobotics. To that end, I added detailed instructions to describe my machine and network configuration, which can be found here.
Docker Working!
I delineated the importance of Docker in this project in a previous post. Franco started the ball rolling by telling me how the ssh-to-image method could be used for running Qt applications in Docker. ROS and Gazebo employ Qt extensively for their visualization and simulation applications. Thus, it was a non-functional requirement of Telerobotics. Thus the long-standing Docker issue was solved. The final Docker image with everything packaged can be used to test Telerobotics. The image can be pulled from here. The instructions to use the image are in the Telerobotics Documentation pages.
A walkthrough with the Docker image can be found in this YouTube video that I created -
Fallback Keyboard Teleoperation
Telerobotics works out of the box with the Bodytracking module that Vito has developed. But in the unfortunate case when the Tango-Control server fails, there emerges the functional requirement to have a fallback interface in place. Seeking inspiration from the Teleoperation tools for ROS, I added the Fallback Keyboard Teleoperation interface. Thus, the Rover can now also be controlled with the Keyboard if need be. The controls are currently inclined towards right-handed astronauts. I hope to add the left-handed version soon as a minor extension of the interface. The code for this can be found here.
EUROPA and Navigation Interfaces
Shridhar’s work on the EUROPA platform needed access to the Telerobotics interface for the following tasks -
- Getting Robot Diagnostic Information
- Navigating the Robot to certain points
I achieved the initial goal before midsems. The second goal was achieved this week after the EUROPA Planner was complete. The workflow to this end was to receive coordinates from the EUROPA Tango Server and send them to the ROS Node corresponding to the Husky.
Finding the optimal path between two points on an incompletely-known map is solved by using Augmented Monte Carlo Localization.
It is necessary to localize the rover with respect to its environment based on the inputs of its multiple sensors. The following diagram from the ROS website explains the concept -
I used the Husky frame coordinates and added the code using the ROS Action Server and Action Client and Tango Event Listeners to create the appropriate Telerobotics-EUROPA interfaces. It can be found here.
Minoru Camera Tools
The Minoru 3-D Camera that I used to prototype streaming applications for ERAS has obscure documentation for Linux platforms. I was able to setup the Minoru Calibration tools from a Git clone of the original vl42stereo
package. I added them to the streams
tree of the Telerobotics source code. It can be accessed here.
Documentation!
2023 Update - The documentation has been moved to: https://marscity.readthedocs.io/en/latest/servers/telerobotics/doc/index.html
The following paragraph is being kept in for posterity’s sake.
The documentation underwent a major overhaul this week. In addition to commenting the code since the beginning, I ensured to update/add the following documentation pages -
- Software Architecture Document for Telerobotics
- Docker Image Setup Instructions
- Telerobotics Walkthrough
- Minoru Camera Calibration and Instructions
- Oculus Rift Troubleshooting and Installation
- Video Streaming FFmpeg Manual
The latest version of the documentation can be found here.
The excitement of the final moments can be ascertained from my commit patterns on the last day -
Learning Experience
The past 12 weeks (and an almost equivalent time before that during application period) have been transformative.
Just to get an idea of the different tools and concepts that I’ve been exposed to, here’s a list -
- Tango Controls
- Robot Operating System
- Blender Game Engine
- Oculus Rift
- FFmpeg
- Stereoscopic Cameras
- Video4Linux2
- Python
- OpenVPN
- Docker
That indicates a great deal of experience in terms of tools alone.
I learned how to create software architecture documents, how to work in tandem with other developers, how to communicate in the Open Source Community, when to seek help, how to seek help, how to help others, how to document my work, how to blog, and much more.
With so many things to say, here’s what I must definitely acknowledge -
Thank you Python Software Foundation, Italian Mars Society, and Google Open Source Programs Office for this opportunity!
I seriously can’t imagine a better way in which I could have spent the past summer. I got a chance to pursue what I wanted to do, got an amazing mentoring and umbrella organization, a fascinating group of peers to work with, and arguably the best launchpad for Open Source contributions - the Google Summer of Code.
Time for evaluations now! Fingers crossed :-)
I have maintained a weekly-updated blog since the beginning of this summer of code. My organization required the blog frequency to be one post every two weeks. I loved blogging about my progress throughout. The eighteen posts so far can be found in the GSoC Category of my website. In case you are interested in this project with the Italian Mars Society, you can follow the page of my blog
Ciao!