Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

ZumoCC3200

From Texas Instruments Wiki
Jump to: navigation, search

The Zumo CC3200: A WiFi Enabled Motorized Robotics Platform

Welcome to the home page for the Zumo CC3200, a 2015 TI Santa Barbara Summer Intern project. Zumo CC3200 is the third generation of TInk (a project completed by the TI Santa Barbara interns in the summer of 2013) in which the CC3200 is used to control a motorized robotics platform that includes Inertial Measurement (IMU) sensors.

Assembled Balancing Control & Telemetry
front view Zumo CC3200 balancing Zumo CC3200 assisted drive
(click images to see how to build the Zumo and see it in action)

This year's bot is easy to build, easy to program, costs less than $130.00, and all development tools and software libraries needed to create interesting applications are entirely free and Open Source. See the Zumo CC3200 Assembly Prerequisites for a complete parts list.

Project Goal

Design a robotic tank that uses on-board IMU sensors for autonomous motion control which can be remotely controlled over WiFi, and create a Software Platform that enables others to easily develop new applications for the tank.

To enable future contributions, all sources are maintained in this repo. However, the Basic System Test page contains everything you need to build and run a simple functional demo of the Zumo CC3200.

Hardware Overview

Unlike previous years where we built the tank from the ground up, we are starting from an existing motorized tank platform that permits the addition of almost any micro-controller. This should avoid the power and I2C noise issues that plagued our software development in previous years.

This summer's hardware platform, the Zumo CC3200, is a RedBearLab CC3200 motherboard combined with the Pololu Zumo Robot for Arduino.

Pololu Zumo Chassis & Shield RedBearLab CC3200 Motherboard Two Wires
Pololu Zumo Shield RedBearLab CC3200 Zumo pins connections.png


Chassis: The tank chassis and Arduino shield can be purchased fully assembled from Pololu: Zumo Robot for Arduino, v1.2 (Assembled with 75:1 HP Motors). The shield combines a TI dual H-Bridge motor driver (DRV8835) with numerous motion sensors, LEDs, push buttons, and a buzzer for simple tone playback. The Zumo Robot from Pololu does not include a microprocessor but is designed to support any Arduino compatible motherboard.

Motherboard: Since we're interested in wireless motor control and telemetry, we use the TI CC3200. Rather than adapt the CC3200 LaunchPad to the Zumo Bot Arduino Shield's headers, we opted to use the RedBearLab CC3200 board which is designed to be Arduino Shield compatible. The RedBearLab CC3200 provides an almost plug-and-play Zumo Bot motherboard solution allowing us to focus on developing software for the Zumo.

Two Wires: The CC3200 has a limited number of pins that support PWM output. As a result, the RedBearLab mother board only supports PWM output on pins 5 and 6. Unfortunately, the Zumo for Arduino Shield connects pins 9 and 10 to the PWM inputs of the DRV8835 motor driver. But, with the addition of just two wires and a few lines of software, we can safely connect the CC3200 PWM outputs to the DRV8835 inputs and reuse the original ZumoMotors library from Pololu.

Since the Zumo for Arduino shield is nicely designed to enable the addition of expansion headers, it's quite straightforward to physically connect pin 5 to pin 9 and pin 6 to pin 10 without limiting any future use of the Zumo for Arduino shield.

Software Overview

One of the goals of this project is to create reusable libraries and sketches that when combined with a simple development environment forms a Software Platform. In other words, a extensible software development environment in which third-parties can contribute new libraries and end-users can easily integrate almost any combination of these libraries to form new applications. The Arduino IDE together with the Wiring Libraries is a simple example of a Software Platform.

In order to leverage more powerful micro-controllers and wireless communication in this project, we built atop the Energia Software Platform which provides the same embedded development environment as Arduino but also has support for the CC3200.

In order to provide an equally simple development environment for the wireless clients controlling and communicating with the ZumoCC3200, we built the host applications using Processing. This has the advantage that, despite having to concurrently manage GUI input and network communication with the ZumoCC3200, the applications are quite simple and the Processing development tooling is almost identical to Energia. That said, any programming environment that enables one to create and communicate of the simple TCP or UDP socket can be used to control and communicate with the Zumo CC3200

Energia and Energia MT

Energia is an open-source electronics prototyping platform with the goal of bringing the Wiring and Arduino framework to Texas Instruments micro-processors and development boards. In particular, Energia supports both TI's CC3200 Launchpad and the RedBearLab's CC3200 development boards.

Energia MT (Multi-Threaded) is a natural extension of the basic Arduino Wiring framework to support concurrent execution of multiple sketches in a single program. This single extension makes it possible to very easily reuse existing sketches to create new applications. For example, it's possible to reuse the classic "Blink" sketch to create a application that blinks multiple LEDs at different rates. With Energia MT, both libraries and sketches become reusable "components".

Energia MT (version 16 and above) supports TI's MSP432 and CC3200 and is available for download from here.

The ZumoCC3200 Library

In order to simplify the examples and eliminate duplicate code from Energia sketches that run on the ZumoCC3200, we've created the ZumoCC3200 library. This library contains a number of reusable "modules" that should make the creation of new ZumoCC3200 applications easier.

Motor Control Modules

  • PID Controller - used for feedback control by calculating motor powers based on error and user specified P, I and D "gains", or constants
  • Zumo Motors - used to drive the motors on the bot
  • Balancer - uses IMU data and PID control to send stabilizing motor commands in order to balance the bot horizontally or vertically
  • Motion Planner - used for advanced motion control and executing autonomous drives along complex paths

Inertial Measurement Modules

  • IMU Manager - used to incorporate sensor data from an accelerometer, gyroscope, and magnetometer and does useful operations such as gyro integration for angle and angle calculation from accelerometer data
  • DCM - taking accelerometer, gyroscopic, and magnetometer data as input, calculates and maintains as state the bot's direction cosine matrix, which fully defines its orientation in three-dimensional space.

Credits

The software for Zumo CC3200 was created by Adam Dai and Tony Oliverio as part of the TI Santa Barbara Summer 2015 Intern program. At that time, both Adam and Tony were high school seniors who graduated from the Dos Pueblos Engineering Academy.

Adam Dai Tony Oliverio
Adam Dai zumo.JPG
Tony Oliverio zumo.JPG