Tuesday, November 12, 2013

new blog

GENERAL
I wanted an independent study project for Spring 2014 in the Computer Science department at my college. They had a Turtlebot robot outfitted with ROS (Robot Operating System). I proposed that I implement a telepresence robot with that hardware and using the Google+ Hangout platform to transmit audio and video. This robot was supposed to allow a user to navigate a remote area while the operator was physically located some distance away. The project idea was accepted, and this blog has been created to chronicle the progress I make.

The Spring 2014 semester has not started yet, but I've made some small progress on the project.

There is a Google Hangouts API that allows you to develop 'Extensions' for the Hangout platform. I investigated this. The Hangouts API requires that the code for the Extension be hosted on some web server. In the documentation they suggest Google App Engine, so I use App Engine as my serving location.

I also investigated Google Code Project Hosting for my code repository. For the code repository I use Git version control.

The names of these various components follow. The app Extension on Google Hangouts is called 'Tele NP'. As of this writing it is in the 'development' stage, so it is not available to any app user. The App Engine serving component is called 'awesometelenp.appspot.com'. If you navigate to this URL you see a cryptic message on the screen because the server is configured to work with Google Hangouts exclusively. The project hosting is called 'https://code.google.com/p/telenp/' or 'telenp'.

CODING
The Google Hangouts Extensions are written in Javascript, and the App Engine can host code in Python or Java. ROS code is written in C++ or Python, so I'm hoping to use the languages Javascript and Python almost exclusively. I'm hoping not to program in Java or C++.

The Javascript in Hangouts is run locally on the computer end node for that hangout but there is a provision for passing info from one computer to the group in the hangout. Also there's a provision for monitoring information that is broadcast by any one computer in the group to the rest of the group. This is accomplished by including a specific Javascript library from Google in your code.

The Hangout will automatically transmit the video and audio information from one computer to another, so all that is left to do is to transmit instructions from one computer to another regarding how to move the turtlebot. The Google Javascript library can take care of getting the instructions from a remote computer, and all that is left to do is to transmit those instructions to the hardware.

ROS is installed on the turtlebot, and that should be able to control the wheels of the robot. What we need to do then is to get the instructions from the javascript in the Extension to the ROS framework for robot movement. We hope to do this with a ROS library called 'rosbridge'. At this writing I have not tested rosbridge, but it uses web sockets to interact between the Extension (or any javascript) and the ROS operating system.

This is a simplified picture of how I want to proceed with the project. I may want to add my own ROS node to control more finely how ROS uses the Hangout data, but if I do this it will be after testing the simpler situation where no special ROS node is required.

No comments:

Post a Comment