As a part of my time at Carnegie Mellon as a graduate student, I have been involved in the avionics and navigation development. Recently, the focus of the main lunar rover team, lead by my adviser Red Whittaker, as switched gears from our 4kg Lunar XPrize design towards a even more daring 2kg rover destined to carry out future science missions on the Lunar surface. In conjunction with NASA, we are developing this rover to serve as a commercial platform in which future Lunar scientists can cost effectively deploy a system to perform experiments on the surface. The goal is to achieve success akin to that of the CubeSat, and thus the name for this rover project, CubeRover.
During the first phase of development, a need arose for the science and mechanical team to have a mobile system on which they could begin testing and getting results to secure the next phase of funding. In response to this need, I developed a prototype system that de-laminated avionics’ work from progress by the other subsystems. Relying on my experience with embedded linux/ROS, I created a system around a ODROID XU4 embedded linux computer running Ubuntu 14.04 and ROS Indigo. The rover could be controlled via either a XBox 360 controller (as seen in the gif) or by a prototype teleoperation interface. Power and Ethernet were run through a tether to improve testing fidelity and speed. The motor controllers used were Trinamic 1633 BLDC drivers with a CANopen interface. As a fan of CANopen, I took this as an opportunity to take a crack at writing my own implementation of a CANopen interface for ROS. You can find my code at my github here. I am currently working towards making this CANopen ROS interface a standalone package.