This document will show how iRbobot's Create protocol specification can be implemented on an ATMEL ATMEGA micro controller and how already available ROS packages can be customized to integrate it. It has been implemented into the package "ipa_odroidx_open_package".
Contents
Hardware
The hardware is a ATMEGA168P micro-controller powered board which uses its hardware UART port for communication with the master and has two more UART port made out of GPIO pins which are used to communicate with two Faulhaber MCDC3006 S RS motor controllers. The controllers are each used to drive a Faulhaber 3863H motor. The hardware is also using the internal ADC to measure the voltage on an external battery powering the motors and the micro-controller board.
The layout of the circuit is available as a part of the "ipa_odroidx_open_interface" package. The layout is an Eagle schematics and can be found in the doc folder of the package.
It should be noted that the crystal used for micro-controller board was of 18.432 Mhz.
Prerequisite Programming Tools Required
The programming for the micro-controller was done in C language and the compiler used was GNU's GCC AVR Compiler. For setting up the environment please refer to its installation manual. For uploading the the compiled hex image onto the micro-controller GNU avrdude was used using AVR's ISP interface.
Compilation Instructions
The ipa_odroidx_open_interface package consists of a Makefile which can be used for the compilation and installation. It is recommended that variables such as the F_CPU is first verified with the actual crystal oscillator on the target system. Also the type of micro-controller should also be checked in the Makefile represented with the variable "MCU".
Loading the micro-controller with the hex file is a two-step process:
$ make
This will compile all the sources and generate the hex file "main.hex". Then to upload the new hex onto the micro-controller, use:
$ make loadu
Additional Software Packages
Following is a list of additional packages:
turtlebot: Custom implementation of the original turtlebot stack.
lcrob1_description: It is a modified urdf model of the iRobot Roomba robot, source code at: .
lcrob1_simulation: It loads all components required to initialize the gazebo simulation with lcrob1_description in a test environment and to use its output to generate "ExRangeMsgArray" messages.