Rviz for Android

During his internship at Willow Garage, Adam Zimmerman from the University of Illinois, created a version of Rviz for Android tablets. Rviz is a ROS visualization program used to help understand robot systems by providing a 3D environment that lets users see the world from a robot's perspective. This project was started in response to community demand for a mobile robot visualizer that ran on a tablet.

Rviz for Android uses a custom-made OpenGL rendering engine to display information received in ROS messages. The application was written in Java using the ROSJava API to publish and subscribe to ROS topics and transform between TF frames. The Rviz for Android interface is similar to the desktop Rviz interface, featuring a view panel and a list of enabled display types. The 3D display panel is manipulated using intuitive touch gestures. Many of the standard Rviz display types, such as robot model, point cloud, map, and interactive markers, are included. Instructions for adding new display types and camera controls are available online on the source code repository. A Web server, written in Python, runs alongside the ROS core to supply the tablet with meshes and textures referenced by URDF files and marker messages. This server can also create ROS nodes upon request from the tablet. These created nodes can be any ROS application, including message throttlers or compressors to more easily move large amounts of data to the tablet.

Because very little of the desktop Rviz code was portable to the Android platform, Rviz for Android is written almost entirely from scratch. Porting all of the desktop C++ Rviz code to Android using the Android NDK wasn’t a feasible solution for this project. The desktop Rviz code makes use of the Ogre3D graphics engine which has tenuous Android support. Even if Ogre3D was well supported on Android, a good deal of the Rviz code would need to be rewritten in Java to interface with ROSJava. Compiling roscpp natively on an Android device is outside the scope of the Android NDK and requires a good deal of functionality that it doesn't currently include. Another alternative considered was to use an HTML5 Web visualizer like wviz, but WebGL and Web sockets have extremely limited support on current iOS and Android devices. Rviz for Android lets users visualize and debug robot applications in environments where using a desktop or laptop computer is impossible.  It provides an intuitive touch interface and an easily extensible platform to meet the needs of any robot application.  The application supports any Android tablet running Android 3.2 or higher, and the source code, compiled application package, and tutorials for creating new display types are available online at https://bitbucket.org/zimmrmn3/rviz-for-android