Date post: | 12-Jan-2016 |
Category: |
Documents |
Upload: | amberlynn-simon |
View: | 212 times |
Download: | 0 times |
The World Leader in High Performance Signal Processing Solutions
Robotics on the Blackfin Processor
Dr. Fred MartinAssistant Professor, Computer Science
University of Massachusetts Lowell
Presentation Overview
• History/Motivations for Educational Robot Controllers• The Blackfin Handy Board: Hardware Design• The Blackfin Handy Board: Software Environments• Classroom Support Materials• Demonstration
The Original Handy Board
• Developed for MIT LEGO Robot Competition, starting in 1991
• Goal: Give students everything they need to start building robots
• Uses 2 MHz Motorola HC11• 32K bytes of RAM• 4 motor outputs• 7 analog, 9 digital sensor inputs• Built-in battery pack & LCD screen• “Interactive C” language
• Open-source design• Over 10,000 in use
Helped shape a new product category:Educational/classroom mobile robot controllers
Design Category: Robot Controllers & CPUs
CPU Power -->
Degree of Robotics Support -->
8-bit MCUOriginal HBLEGO RCXXBC/GameboyPentium 4PC/104Blackfin HB
Blackfin HB
• Many options, with various levels of integration
• Original Handy Board, LEGO RCX, and XBC/Gameboy provide sensor/motor I/O
• Blackfin HB has powerful processor and significant robotics support integrated into one design
De
gre
e o
f R
ob
oti
cs
Su
pp
ort
-->
Design Goals for Blackfin Handy Board
• Highlight power and capabilities of the Blackfin DSP• Vision• Advanced software development
• Keep integrated, hand-held design of original HB
• Support wide range of sensor/motor I/O
The Blackfin Handy Board
Blackfin Handy Board: CPU and Memory
• 600 MHz ADI BF ’537• 64 MB SDRAM• 256 MB NAND flash• 1 MB boot flash
Blackfin Handy Board: Robot Sub-System FPGA
• Xilinx Spartan 3E series FPGA• “Board Support Package” includes
• motor PWM, sensor sampling• CMOS camera PPI pass-thru• LCD driver
• end-user programmable
Blackfin Handy Board: Motor Output
DC motor output• 4 channels bi-directional control• 1A, 12v per motor• locked antiphase & sign-magnitude PWM• back-EMF velocity sensing• motor status LEDs
Servo motor control• 8 outputs• 5A, +5v motor power supply
Blackfin Handy Board: Sensor Input
• three ADI 12-bit A/Ds with 8-1 mux, continuously sampling at 48 kHz• 12 external analog inputs• 10 digital inputs• 8 digital outputs• two i2c connectors• integral 2-axis accelerometer
Blackfin Handy Board: PPI Camera Port
• Blackfin PPI port for CMOS cameras (e.g. Omnivision)• FPGA pass-thru (or image processing)
Blackfin Handy Board: Integrated Power Sub-System
Battery/Charge• Built-in 12v (10 AA cell) 2000 mAh battery pack• Smart-charge circuit (rapid, trickle, thermal cut-off)• Charge and run simultaneously• Battery level sensor to Blackfin
Power Regulation• 5A, +5v supply for servo motors & external devices• 3.3v, 1.8v supplies for Blackfin & FPGA• high-efficient switching regulators
Blackfin Handy Board: Communications
Debug Agent• Built-in USB 1.1 emulator• JTAG connector for external emulator
10/100 BT Ethernet
RS232 Serial
Blackfin Handy Board: Human I/O
16x4 LCD screen
2 buttons & 4 LEDs
User knob
DAC w/amp & speaker
Blackfin Handy Board: Software Environments
• ADI Visual DSP++• C/C++ IDDE• High-performance C compiler• VDK Kernel for threads• LWIP TCP/IP stack
• gcc & uClinux• Compile standalone apps with gcc• Run uClinux kernel and compile apps that use kernel services• uBoot monitor
• LabVIEW Embedded for ADI Blackfin
Academic Support Materials
• Freely available courseware based on use of LabVIEW Embedded being developed; expected January 2007
• Robotic Explorations text (2001) will be updated based on new Blackfin Handy Board design
Recap: Stuff You Can Plug Directly into the Blackfin HB
• Sensors:• Resistive devices (photocell, switch, thermistor)• Voltage sources (IR transistors, IR distance sensors, any 0-5v source)• Ultrasonic ranging sensors• Modulated sensors (e.g., 40 kHz IR)• i2c devices• Audio sources
• Motors• 4 smallish DC motors (12v, 1A)• 8 servo motors• Big DC motors using ESCs in servo outputs (Electronic Speed
Controllers)• Vision
• Omnivision camera modules
Demonstration
• Wall-following using infrared distance sensors
• Multithreaded control program with separate priorities for side-mounted and front-mounted sensors
• Using VDSP++ and the VDK kernel
voidsideSensorThread_RunFunction(void **inPtr){ int side_et = 0; priority = 2; while (1) { side_et = analog(ETSIDE); // Get distance on LEFT if (side_et > 400) // Too Close to wall { clear_led(1); clear_led(2); clear_led(3); set_led(1); // Turn Away pivot_right(75, priority); } else if (side_et < 350) { clear_led(1); clear_led(2); clear_led(3); set_led(3); // Turn Toward pivot_left(75, priority); } else // On Line { clear_led(1); clear_led(2); clear_led(3); set_led(2); // Go Straight motor(2, 100, priority); motor(1, 100, priority);
} }}
Wall-Following Robot VDK CodeVoid frontSensorThread_RunFunction(void **inPtr) { int FL_et = 0; // Front Left ET int FR_et = 0; // Front Right ET unsigned int loopCount = 0; priority = 3; while (1) { FL_et = analog(ETFL); FR_et = analog(ETFR); // Detect Front Obstacle while ( (FL_et > 350) || (FR_et > 350) ) { set_led(4); // Left Obstacle if ( FL_et > FR_et + 50 ) {pivot_right(75, priority);} // Right Obstacle else if ( FR_et > FL_et + 50 ) { pivot_left(75,
priority); } // Forward Obstacle else { motor(1, 0, priority); motor(2, 0, priority); } FL_et = analog(ETFL); FR_et = analog(ETFR); } clear_led(4); }}
More Information
• Schematic design, PCB art, FPGA code, and Blackfin software libraries to be distributed with open-source license
• Blackfin Handy Boards publicly available Q4 2006
• See http://www.cs.uml.edu/blackfin/ for latest and to sign up for mailing list
• See LabVIEW Embedded Vision Tracking demo here in the booth