raspberry pi robotics

14
Lloyd Moore, President [email protected] www.CyberData-Robotics.com Raspberry Pi Robotics Seattle Robotics Society 6/21/2014

Upload: lloydmoore

Post on 13-May-2015

275 views

Category:

Technology


0 download

DESCRIPTION

Abstract: The Raspberry Pi has become a very popular, inexpensive, credit card sized computer that runs the Linux operating system. The Pi is also, with a bit of help, an excellent controller for robotics projects. This talk will explore the use of the Raspberry Pi, along with an open source Cypress PSoC daughter board, for building a very functional robot. The final goal of this project will be to update the SRS robot with a Raspberry Pi, camera, and Wi-Fi network connection. This talk builds on several of my previous talks and begins to tie them all together into a functional project. While I won't dive deeply into any of these topics again, the background will be helpful for this talk. Links to my prior talks are: Getting Started with the Raspberry Pi: http://www.cyberdata-robotics.com/Presentations/StartingPi/StartingRaspberryPi.pdf Using the Cypress PSoC Processor: http://www.cyberdata-robotics.com/Presentations/UsingPSoC.ppt Using Cypress PSoC Creator: http://www.cyberdata-robotics.com/Presentations/PsocCreator/Using_PSoC_Creator.ppt Bio Lloyd Moore is the founder and owner of CyberData Corporation, which provides consulting services in the robotics, machine vision and industrial automation fields. Lloyd has worked in software industry for 25 years. His formal training in biological-based artificial intelligence, electronics, and psychology. Lloyd is also currently the president of the Northwest C++ User’s Group and an organizer of the Seattle Robotics Society Robothon event.

TRANSCRIPT

Page 1: Raspberry pi robotics

Lloyd Moore, PresidentLloyd@CyberData-

Robotics.comwww.CyberData-Robotics.com

Raspberry Pi Robotics

Seattle Robotics Society 6/21/2014

Page 2: Raspberry pi robotics

Why the Pi?

Why not the Pi?

Raspberry Pi – PSoC Development Board

RPi-Dev Motor Controller

RPi-Dev SPI Ring

System Block Diagram

Resources

Outline

Page 3: Raspberry pi robotics

There are TONS of other controller boards on the market, what makes the Pi special?

• Computing power per dollar is, or very close to best in class• 700MHz ARM 11, hardware floating point, Open GL GPU, 512MB

RAM, Ethernet

• USB, SD Card for mass storage, audio output, video output

• $25 - 35 price tag!

• 5 MP camera available for $25 • Plugs directly into the Pi and software is available for vision

applications

• I/O Expansion port• Easy to access

• Contains UART, I2C, SPI and several GPIO lines

• Full schematics available for the board

• Fairly light weight and power efficient ( 1.6 oz, 3.5W)

Why the Pi?

Page 4: Raspberry pi robotics

But nothing is perfect right?

• No real time processor – could emulate with Linux, but not great

• No analog inputs, no ADC

• Minimal GPIO and what you do have is 3.3V and raw, don’t even have a proper RS-232 port

• GPIO also awkward to get at from inside Linux

• No motor drivers, or high current outputs

• Really no standard I/O of any kind other than USB and Ethernet!

• Doesn’t really have enough processing power to do vision applications

Why not the Pi?

Page 5: Raspberry pi robotics

• Designed to be a flexible development and prototyping platform for both Raspberry Pi and PSoC ecosystems

• Developed this as I frequently need to rapidly prototype ideas and wasn’t finding anything single device available that really fit the bill

• CyberData (my company) is releasing this as open source!• Designs and documentation released under Creative Commons,

Attribution-NonCommercial 3.0 Unported license

• Sample code released under GNU GPL V3.0 license

• If someone really wants a commercial license talk to me about it

Raspberry Pi <-> PSoC Dev. Board

Page 6: Raspberry pi robotics

Provides the Raspberry Pi with the resources for doing real word, real time problems:

• Central processor is a PSoC 5LP or PSoC 3, 100 pin device• Allows for real time work on the Cortex M3 core and configurable logic in

the UDB blocks for “hard real time” applications

• Has configurable analog and DSP processor for low level signal processing

• Standard RS-232/485 driver on board, with a DB9 connector

• 3x 12 pin Diligent PMOD connectors – many devices available

• Configurable motor controller• Directly drive 2 3.5A DC motors

• Can also be used for stepper motors, solenoids or other high current loads

• Additional GPIO lines, 8 precision analog, 4 protected, 6 general

• Also usable on any PC with a USB connection, or standalone• Board can be powered from the USB connection as well

RPi-Dev Features

Page 7: Raspberry pi robotics

RPi-Dev Block Diagram

Page 8: Raspberry pi robotics

Designed to provide a very flexible resource which can be used for most types of motors

Achieved by having robust discrete motor drivers on the board, while keeping the control logic configurable in the PSoC UDB system

Sample code implements a dual H-Bridge based motor controller with PWM speed control

RPi-Dev Motor Controller

Page 9: Raspberry pi robotics

• Provides generalized, high speed, packet based communications between the Raspberry Pi and the PSoC processor

• Uses the SPI Master peripheral on the Raspberry Pi

• Uses a SPI Slave component with DMA support on the PSoC

• Transfer made at 4Mbps, bidirectional

• Packets appear in a C structucture on each side at a configurable time interval

• All this is implemented in the sample code – just configure the data structure and hook up the completion signals to your own code!

RPi-Dev SPI Ring

Page 10: Raspberry pi robotics

1. Define the SensoryMembers and MotorMembers data structures to contain the data members you want in the file ringcoms.h

2. Note that both structures MUST be the same size, add padding if not. If the structures are not the same size you will get an error!

3. In the PSoC main() routine change the code testing the g_spiReady flag to do what you need to at the end of each transfer.

1. For a robot this will be transferring the data in the MotorMembers structure to the actual motors and reading new sensor data into the SensoryMembers structure.

2. Note that you can also hook the DMA interrupt directly if desired.

4. In the BotMonitor program connect the newTransferReceived() signal to your handler function and do what is needed there.

1. For a robot this will be processing the sensor data and issuing a new set of motor commands.

To use the SPI Ring

Page 11: Raspberry pi robotics

SRS Robot Block Diagram

Page 12: Raspberry pi robotics

SRS Robot PSoC Software DiagramEach new SPI packet:• If bump sensor triggered,

block forward motion• If RC enabled, pass RC

commands to motors• If RC not enabled pass

MotorMembers commands to motors

• Read sensors and populate SensoryMembers data structure

• Wait for next SPI packet

Note: This algorithm is NOT contained in the sample code.

Page 13: Raspberry pi robotics

Raspberry Pi <-> PSoC Board Open Source Resources: http://www.cyberdata-robotics.com/RPi-Dev

Raspberry Pi Home Page: http://www.raspberrypi.org/

Tight VNC Home Page: http://www.tightvnc.com/

Qt Home Page: http://qt-project.org/

PSOC Home Page: http://www.cypress.com/psoc5lp/?source=CY-ENG-HEADER

QExtSerialPort Home Page: http://code.google.com/p/qextserialport/

BCM2835 Drivers: http://www.open.com.au/mikem/bcm2835/index.html

BCM2835 Peripherals Datasheet: http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

MagPi Magazine: http://www.themagpi.com/

References

Page 14: Raspberry pi robotics

Questions?