sdp resources guide - the university of edinburgh · 2017-12-21 · sdp resources guide sandy enoch...

26
SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are a bit different this time around, not least because we find our- selves in the rustic confines of Forrest Hill. Part of this site was in the past used as a charity workhouse, where ”the city poor could be housed and set to work”. 1 Nothing much has changed. You will have most of the third floor of Forrest Hill for SDP. This includes two pitch rooms and a large lab. Each group will be allocated some desks in the lab, but you will need to make use of break out space to get the whole group together. Each of you will be allocated a group, and the groups will be paired up to form teams. You’ll know who your teammates are from the beginning, and you will need to devise a strategy to work with them, sharing work as appropriate, but remembering that the groups are individually marked. This guide will briefly outline the facilities that you have access to, what you have to make and what you’re given to make it with, who to contact for support, and how to contact them. Things are going to be cramped this year, but it should actually be a lot of fun. 2 The mentors, Kat, Garry, and even Henry 3 are all here to make sure you get the most out of SDP. 2 Lab space and facilities The areas allocated for SDP largely on the third floor of the Forrest Hill building. For the most part, you will work in the large lab, where your group is given dedicated space. The two pitch rooms are used for milestone assessment and for playing the actual matches. You can use these rooms to practice as well, initially on a first-come first-serve basis, but later on through a booking system to make sure everyone gets a shot. 2.1 The Main Lab The layout of the main lab is shown in Fig. 1. Each team gets one side of a row of desks, with a small practice area for that team at the end of the row. Each 1 http://www.sterratt.me.uk/forrest-hill-history 2 And work. Lots of work. 3 That’s Dr Thompson to you 1

Upload: others

Post on 06-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

SDP Resources Guide

Sandy Enoch & Garry Ellard

January 13, 2016

1 Introduction

Welcome to SDP 2016.Things are a bit different this time around, not least because we find our-

selves in the rustic confines of Forrest Hill. Part of this site was in the pastused as a charity workhouse, where ”the city poor could be housed and set towork”.1 Nothing much has changed.

You will have most of the third floor of Forrest Hill for SDP. This includestwo pitch rooms and a large lab. Each group will be allocated some desks in thelab, but you will need to make use of break out space to get the whole grouptogether.

Each of you will be allocated a group, and the groups will be paired up toform teams. You’ll know who your teammates are from the beginning, and youwill need to devise a strategy to work with them, sharing work as appropriate,but remembering that the groups are individually marked.

This guide will briefly outline the facilities that you have access to, whatyou have to make and what you’re given to make it with, who to contact forsupport, and how to contact them.

Things are going to be cramped this year, but it should actually be a lot offun.2 The mentors, Kat, Garry, and even Henry3 are all here to make sure youget the most out of SDP.

2 Lab space and facilities

The areas allocated for SDP largely on the third floor of the Forrest Hill building.For the most part, you will work in the large lab, where your group is givendedicated space. The two pitch rooms are used for milestone assessment andfor playing the actual matches. You can use these rooms to practice as well,initially on a first-come first-serve basis, but later on through a booking systemto make sure everyone gets a shot.

2.1 The Main Lab

The layout of the main lab is shown in Fig. 1. Each team gets one side of a rowof desks, with a small practice area for that team at the end of the row. Each

1http://www.sterratt.me.uk/forrest-hill-history2And work. Lots of work.3That’s Dr Thompson to you

1

Page 2: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

GR

OU

P 1

GR

OU

P 2

GR

OU

P 3

GR

OU

P 4

GR

OU

P 5

GR

OU

P 6

GR

OU

P 7

GR

OU

P 8

GR

OU

P 9

GR

OU

P 1

0

GR

OU

P 1

1G

RO

UP

12

GR

OU

P 1

3G

RO

UP

14

GR

OU

P 1

5G

RO

UP

16

PRACTICEAREA

PRACTICEAREA

PRACTICEAREA

PRACTICEAREA

PRACTICEAREA

STORE

ELE

CT

RO

NIC

S &

SO

LDE

RIN

G S

TAT

ION

BR

EA

KO

UT

SPA

CE

Figure 1: Layout of the main lab

group is therefore allocated two flip desk machines.Each group has one PC with a vision feed to one of the pitch rooms (odd

numbered teams are connected to room 3.D03 and even numbered teams toroom 3.D04 - please note that each group will consist of a odd and even num-bered team). These feeds are analogue and run through a sequence of boosters,splitters etc., so will have varying latencies and noise levels.

There are two projectors in the main working lab which are connected tothe pitches to allow for demo and game viewing. There will be limited numbersallowed in the pitch rooms on demo and match days. Students wishing to viewthe proceedings are encouraged to do so via either the live feeds (links to bothon the SDP wiki) or via the projectors in the main lab.

2.1.1 The Practice Areas

At the end of each row is a small area of floor marked out with white tape. Thecarpet here is the same as that used in the pitch rooms, and the tape used tomark it out is the same as the stuff used on the pitches.

You may position a webcam to look down on the practice area and connectit to one of your group’s DICE machines, and you have your team’s very ownmini pitch.

You should also use your practice area to test the movement of your robot,your communications system, and any onboard sensors you have. Please do asmuch testing as possible in your practice area, to ease the load on the pitchrooms.

Your team’s practice area borders that of the team next to you. Try to workwith them to use the whole space, and play mini-friendlies when you are ready.

When walking through the lab, you’ll pretty much have to walk through the

2

Page 3: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

practice areas. Watch out for robots and stray lego parts, and if you’ve gotyour robot in a practice area it is your responsibility to guard it against beingstepped on/tripped over.

2.2 The Pitch Rooms

There are two pitch rooms, which will be used interchangeably for milestonesand matches. You should ensure that your robot is equally happy, or at leastequally unhappy, in either room.

Each room has four DICE PCs (and one other machine used for recordingand streaming purposes). You will not be given the choice of which machine touse for milestones and matches, so your system must work on any of the ma-chines. You will also have very limited set up time, so make sure any calibrationis automatic, uses saved values, or is near-instant to perform.

Each room has a pitch marked out in tape and bordered with small boundarywalls. More info on the pitch itself can be found in the Rules document.

A camera is mounted above each pitch, looking straight down. Due tomounting constraints, the location of the camera relative to the pitch is slightlydifferent in each pitch room. Each of the DICE computers receives a feed fromthe overhead camera. This feed can be seen in Xawtv, VLC, Mplayer, and canbe opened with openCV4, or anything that uses Video4Linux5. More info onhow to connect to and use the vision feed is in section 7.

The cameras have settings for brightness, saturation, etc. On the USB cap-ture devices, these will persist across sessions. If you’re getting a dodgy feedlook at these settings. You’ll also want to make sure they’re set properly toallow your colour segmentation to work.

2.3 Break Out Areas

There is a row of unallocated desks in the main lab. This can be used asoverflow from your group’s area, and somewhere to get more members of theteam together. We are a bit short of space, so please be courteous in your useof these desks - don’t hog them, and please leave them at least as clean as youfound them.

2.4 Lockers

You will have the use of a locker to store your equipment and will be issued withone key per group to start off with. Extra keys may be available should you needthem. Extra batteries may be issued dependent on your systems requirements.

2.5 The Store

A lego store cabinet can be found in the lab, which contains various boxes of legoparts such as plates, beams, axles, gears, wheels, fixings and all sorts of otherrandom lego parts. This cabinet is left open 24/7 and you have free access tothe parts within. Please return all unused parts and all the boxes to the cabinet

4http://www.opencv.org5https://en.wikipedia.org/wiki/Video4Linux

3

Page 4: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

when you are done using them each day. Hoarding of parts in your own lockersis not allowed and action may be taken to prevent this.

2.6 The Technician’s (Garry’s) Office

Garry is the course technician, his office is 3.D02. You can go to speak to Garryduring supported hours, for advice and technical support.

Various example robots from previous years SDP groups along with kickers,the kick-bot and motor testing diff-rigs are available to borrow from the techni-cians office (room 3.D02). These should be returned intact to the technician’soffice during technical support hours or returned to the lego store if out of hours.

The technician’s office also houses a battery charging station, and is whereGarry stores various sensors, switches, and other bits and bobs which you maybe able to borrow.

2.7 DICE Machines

DiCE machines are maintained and have the full range of supported software butroot access is not available and customisation is limited to what DiCE allows.

There are a few articles on the computing support help pages that detailhow to install some of the software that you may find useful.

The vision PCs have had their disk space opened up for you to make use ofand this can be found in the /scratch/sdp folder. Be warned this space is NOTbacked up and is open to the next SDP student who logs into that machine touse. Therefore it should be considered as unsecure and used only for installationand video streaming/processing use.

Each team has a group space provided for them, which can be found at:-/group/teaching/sdp/sdp1-16. We would like to encourage you to use this forboth your working area and for hosting any web-pages you create for the project.Your own group space is secure, with the exception of the html folder, which isworld readable.

The SDP archive folder can be found at /groups/sdp/archive and is openfor you to see previous years code. See also the repositories linked to from thewiki.

3 HelpOr How to Complain Efficiently

Support is available from many places, from technical help, to support in thecase of issues within groups. There is a large amount of self-learning requiredfor SDP, but that doesn’t mean you or your group are completely on their own.

Technical Help Check the documentation, Google it, speak to your team-mates and coursemates, use the Piazza, and speak to Garry. For any issues withthe kits or equipment in general, speak to Garry

Other Help Your mentor should usually be your first point of contact, butyou can escalate up the chain if needs be. After your mentor you can speak toKat, the TA, and above Kat is Henry.

4

Page 5: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

3.1 Course Management Structure

3.1.1 Mentors

Every group is assigned a mentor, who should normally be your first point ofcontact for any issues or questions. Your mentor is meant to provide teamguidance, and ensure that no group member is being treated unfairly. Yourmentor is not allowed to provide technical assistance, but can refer you to theappropriate source.

Your mentor should meet with the whole group at least once a week, andyou should e-mail your mentor if anything comes up in the interim.

Roughly half the mentors have done SDP before, and each team should haveat least one mentor who knows what’s going on.

3.1.2 TA

One step above the mentors is Kat, who is the teaching assistant. If there’ssomething your mentor can’t or won’t fix, or you have any issues with yourmentor, get in touch with her.

3.1.3 Henry

Henry is in charge, but you should only contact him if you have an issue thatis not being resolved by your mentor or the TA.

3.1.4 Garry

Garry is the go to guy for anything technical that you can’t find the answer toin the documentation or from your coursemates. He does have obligations otherthan SDP, but you should find him and speak to him for any issues with thekits, facilities, etc. He’s been around for many years of SDP, and has seen a lotof good robots and a lot of bad robots.

3.2 Group discussion - Piazza

New for 2016 is the official SDP Piazza channel. All SDP students can use thisto speak to each other as well as with the mentors and management.

It’s a good place to ask technical questions as chances are another group hasalready faced a similar problem, or a mentor might be able to point you in theright direction. Mentors are allowed to provide technical help on Piazza, as itis shared with everyone.

You can also ask for clarification on milestone tasks, game rules, or anythingelse. Remember that for milestone tasks, the mentors who will be marking themilestone have the final say.

While the mentors and the management will have access to the Piazza, wecannot guarantee how often they will check it.6 If you have an urgent issuethat only your mentor or the course managers can sort, you should e-mail theappropriate person.

6They’re only paid for a few hours per week, but the mentors will try to keep an eye onthe Piazza as part of their responsibilities

5

Page 6: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Figure 2: Example top plate. The centre disc is swappable and denotes yourteam - yellow or blue.

4 The Game

The task this year is two a side football, based loosely on the Robocup SmallSize League7. For more information, see the rules document.

5 The Robot

You are required to build a robot. There are restrictions on how large yourrobot can be, and how it can interact with the ball - see the rules for these.

Each group will be issued with, a box of lego (all groups will have an equalquantity of lego, but no two kits will be indentical), one Arduino assembly(including power and motor boards along with the associated cables), one SRFstick, sixteen AA rechargable batteries, two 8-way battery holders, a batterycharger and a battery tester. Further info on the electronics, batteries, andbattery charging/testing facilities are in section 8

We have limited stocks of holonomic wheels and various types of motors,sensors and associated leads available from the lego store (room 3.D02A), someof which are free and some of which are chargeable parts. However if you chooseto take items from these stocks and decide not to use them on your robot, thenthey must be returned to the store room. Hoarding of these types of parts inyour group lockers is not allowed and action may be taken to prevent this.

5.1 The Top Plate

On top of your robot you will place a top plate. This is a green lego board witha pattern that identifies your team and your robot. An example pattern canbe seen in Fig. 2. The center marker of the pattern will identify which team arobot is on, and will be either blue or yellow. The colours will be allocated atthe start of each match, and your robot should be happy working with eithercolour.

The remainder of the pattern (fluorescent pink and/or green markers) iden-tify your robot specifically, so that you can distinguish between your robot andyour team-mates robot.

7http://robocupssl.cpe.ku.ac.th/

6

Page 7: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

(a) An omni-directional wheel (b) Ball Transfer Units

The plan is to provide each group with a top plate, which you can buildin to your robot. The center markers will be swappable and placed in at thebeginning of each match. We’ll give you some for testing as well.

5.2 The Other Bits

Your robot will need to move around, and will need to sense some things aboutitself and it environment. The lego store contains an array of parts, but youshould note:

Motors There are a few types of Lego motors in the store, the old style Technicmotors (which are just motors), the power functions motors (which include somegearing) and the newer NXT motors, which are geared motors with built inencoders to give feedback about rotation. Lots of info on lego motors can befound here: http://www.philohome.com/motors/motorcomp.htm

Wheels There are a few options for wheels. 1) Normal wheels; there are afew different varieties of these. 2) Omnidirectional wheels8 (commonly calledholonomic wheels), which you can use to make a robot that can go sidewayswithout turning.9 3) Ball transfer units / castors - which are passive, but whichwill support your robot as it moves in any direction.

Sensors There are a huge number of potential sensors you could use with yourrobot. The lego sensors include bump switches and colour detectors, and thereare many other types of sensors in the store and Garry’s office, and available tobuy. Some examples are given later.

6 Code

SDP is a bit different from other courses. You are encouraged to not reinventthe wheel wherever possible. This means that you are given access to previousyears’ code, and are encouraged to use of the shelf libraries and packages asmuch as possible.

8https://en.wikipedia.org/wiki/Omni_wheel9First introduced to SDP by Holly: https://www.youtube.com/watch?v=KXbTorONqT0

7

Page 8: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

You should fully document your code, and you are required to attribute codewhere you are re-using it.

6.1 Previous Years’ Code

The SDP wiki page carries links to the repositories of code from previous years.You are strongly encouraged to look through this, understand what the previousyears did, and see if there is anything you want to make use of.

Remember that the task is slightly different this year, and that some partsof the code have been reused and re-bodged every year for several years. Therewill be some code it is worth reusing, some code for which it would be better touse a library, and some code which would be better binned and rewritten.

A good example is some of the vision systems, which require large amountof manual calibration, have very slow cycle times, and still don’t work very well.Some of the systems are worse than others for this, so think carefully before youimport a large chunk of code and then spend more time fixing it than it wouldhave taken to make something from scratch.

6.2 Repositories

You are required to put your code in a repository such as github or bitbucket.You can keep it private for now, but it needs to be there, and you should giveyour mentor access to it.

You should ensure that all of your group are familiar with the version controlsystem you use, and your standard workflow.

7 Vision

Each of the pitch rooms has a top-down camera which you can use to locate thepitch, the robots, and the ball. Each of the PCs in the pitch rooms receive afeed from this camera, and feeds from both pitches are sent through to certaincomputers in the main lab.

7.1 The Pitch Cameras

The capture devices used have settings for brightness, saturation, etc. Thesesettings are critical for correct operation of your vision system, and you willneed to make sure, every time you log on that they are set correctly.

To test the video feed and to adjust the video format and baseline settingsrun xawtv from the command line within a terminal window. Note:- by runningthis from the command line you will see all the relevant error messages that youwill need to see to diagnose any potential problems.

There are several different video programs on DiCE which can be run fromboth the menus and the command line, however xawtv is the only one to giveyou useful fault finding information when the video feed fails to appear. Xawtvmay fail the first time that you try to run it, if it does, then close it and run itagain.

Right click in the main window to gain access to the control menu. Checkand select PAL and S-Video as the format options. You should also centre thecolour, contrast, brightness and gamma settings.

8

Page 9: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

We would suggest going through this or an equivalent procedure each andevery time you sit down at a vision system prior to launching your vision systemprograms.

The hardware retains the last users settings, so you may not get the imagethat you were expecting to see otherwise

7.1.1 Troubleshooting

The video capture devices can only do one job at a time.The first user to login into a DiCE PC gets the hardware permissions.Remotely accessing a video feed from another PC wont work without first

being logged into the machine with the direct feed.There are two different types of video capture device in use:-

• The USB ones - which retail the previous users format and colour andcontrast settings.

• The PCI ones - which default to factory settings every time that you tryto use them.

Table 1 gives a guide to troubleshooting the most common issues with thevideo feeds. If after trying these solutions you still cannot see the video feedcorrectly, report this to the course technician along with the name and locationof the PC in question.

7.2 Using a Vision Feed

Regardless of whether you’re using a USB capture device, PCI capture card,or a USB webcam, your image feed should be accessible through openCV andany program that uses Video4Linux. Aside from some calibration, your codeshould operate completely independently from a particular type of camera, andyou must not rely on using a particular type of capture device.

7.3 OpenCV

OpenCV10 is a fairly comprehensive open source vision library, which is easy touse from Python, C/C++, and Java. You will find that most if not all of theprevious years’ code makes use of OpenCV.

OpenCV is installed on the DICE machines you will be using.

7.3.1 Python

In Python, it’s easiest to run in a Python2.7 virtual environment11 , and add/usr/lib64/python2.7/site-packages to your PYTHONPATH, for example byadding

export PYTHONPATH=$PYTHONPATH: / usr / l i b 6 4 /python2 .7/ s i t e −packages

10http://www.opencv.org11http://computing.help.inf.ed.ac.uk/python

9

Page 10: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Symptom Cause Solution

Black screen The video capture device has beenupset and will not function properlywithout rebooting the PC. Reasonsfor this include, the last users pro-gram not being terminated cleanly,the last user being bounced of themachines front screen which meansthat they still have all the hardwarepermissions.

Reboot the PC.

Blue Screen The capture device is not seeing avideo feed. Note - that the capturedevices have two inputs:- Compos-ite and S-video. The device may beset to the wrong one.

• Run xawtv and check that S-Video has been selected.

• Check that the PC has a cap-ture device plugged into it.

• Check that the capture de-vice has an S-video leadplugged securely into it.

• Check that that S-Video leadgoes to an amplifier and isplugged in securely.

• Check that the amplifier hasan S-video input lead pluggedsecurely into it.

• Check that the amplifierspower light is on, if not pleaseplug the adapter back in andor switch it on at the wall.

Green Screen xawtv has crashed Try running it again from the com-mand line.

Fuzzy or Black andWhite (Greyscale)Image

You either have a faulty feed or youhave the wrong settings. • Run xawtv and select PAL

and S-Video.

• Check the attached videolead for bent or broken pins,both at the capture deviceand the nearby amplifier.

Dark/bright/strangelycoloured image

Dodgy camera settings Use your favourite method to ad-just the brightness, saturation, etc.settings for the camera

Table 1: Video feed troubleshooting guide

10

Page 11: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

to your virtual environment’s /bin/activate file.It’s extremely worthwhile having your vision person/people run through the

openCV Python tutorials 12

7.3.2 C++

You should find opencv in /usr/include/opencv2, and should be able to just doe.g. #include ”opencv2/core/core.hpp”. The official opencv c++ tutorials13

are a little dense, but contain a lot of information organised by opencv module.

7.4 Papers to Read

It is strongly recommended that any persons working on the vision system readthe following papers:

• Bruce, James, Balch, and Veloso. ”Fast and inexpensive color image seg-mentation for interactive robots.” Intelligent Robots and Systems, 2000.(IROS2000). Proceedings. 2000 IEEE/RSJ International Conference on. Vol.3. IEEE, 2000.

• Bruce, James, and Veloso. ”Fast and accurate vision-based pattern de-tection and identification.” Robotics and Automation, 2003. Proceedings.ICRA’03. IEEE International Conference on. Vol. 1. IEEE, 2003.

These papers describe methods for segmenting an image by colour, and forrecognising patterns in segmented images, exactly as you are required to do.

Even better, code that implements these algorithms is available at: http:

//www.cs.cmu.edu/~jbruce/cmvision/

7.4.1 SSL Vision

The vision processing problem you face is very similar to that faced in theRobocup Small Size League. The league makes use of a communal vision systemcalled SSLVision1415 16, which you may wish to investigate.

7.4.2 Crediting Code

To reiterate, if you make use of open source libraries or packages, or anybodyelse’s code in general, you must leave relevant licenses in place. You must alsoindicate in your documentation/technical reports etc. where you have utilisedothers’ code. Failure to do this, or attempting to pass others’ work off as yourown, may lead to serious negative repercussions.

12https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_

tutorials.html13http://docs.opencv.org/2.4/doc/tutorials/tutorials.html14Zickler, Stefan, et al. ”SSL-vision: The shared vision system for the RoboCup Small Size

League.” RoboCup 2009: Robot Soccer World Cup XIII. Springer Berlin Heidelberg, 2010.425-436.

15Zickler, Stefan, et al. ”Five Years of SSL-Vision - Impact and Development.” RoboCup2013: Robot World Cup XVII. Springer Berlin Heidelberg, 2014. 656-663.

16https://github.com/RoboCup-SSL/ssl-vision

11

Page 12: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

(a) Power & I/O Board (b) Motor Board (c) Encoder Board

Figure 3: The basic electronics set

8 Electronics

You are provided with a selection of electronics to use on your robot. At thecore of the standard kit is an Arduino Xino RF17, a variant of the Arduino Unowith an attached Radio Frequency (RF) link. This RF link appears as a serialport to your Arduino, and can be used to speak to a USB RF stick which plugsinto a PC. The RF stick appears as a serial device on the PC as well. Moreinformation on the RF comms is given in section 9.

Fig. 3 shows the main electronics kit. The Arduino attaches to the Powerand I/O board, which does some power management stuff and breaks out somedigital pins, some analog pins, and a bunch of I2C sockets for you to use.18.

The Motor Board connects via I2C and drives up to six motors. The Encoderboard also connects via I2C, and connects to up to six rotary encoders of thetype used in the lego NXT motors or available separately in the kit. As thename suggests, rotary encoders measure rotation, and these should be used atleast to measure the rotation of your wheels.

You can add lots of different types of sensors, and some examples are givenlater in this section. You are also free to use your budget to upgrade theelectronics on your robot.

8.1 The Arduino

An Arduino is a microcontroller with some firmware loaded to make thingsmore simple. A basic Arduino program consists of a setup function, called onceat the beginning, and a loop function which is run indefinitely. You programthe Arduino in C or C++, although the Arduino environment provides somesimplifications to use if you wish.

The Arduino IDE is loaded on the DICE machines. If plug your Arduino inthrough the mini-USB (no external power needed at this point), and run thearduino program, it should find your Arduino Uno on one of the ttyACM serialports.

17http://openmicros.org/index.php/articles/88-ciseco-product-documentation/

235-xinorf-learning-the-basics18more info on that later

12

Page 13: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

There are many example Arduino programs available19, lots of libraries, andexamples of connecting external devices to your Arduino.

8.1.1 The SDP Arduino Library

On the SDP wiki, there is a link to SDPArduino.zip, which contains a smalllibrary to help you get started with the Arduino.

If you extract this .zip into ∼/sketchbook/libraries/SDPArduino/, you canthen ”#include <SDPArduino.h>” at the start of your Arduino programs.

Have a look through the SDPArduino.h and SDPArduino.cpp files. You willsee that there is an SDPSetup() function which configures the I/O ports (defaultto analog/digital I/O as inputs and digital I/O as outputs) and activates theRF comms.

There are also functions for controlling the Motor Board, and some simplifiedI/O functions. A demo script for testing the motor board is also available onthe wiki.

8.2 Power & I/O Board

The Power and I/O Board is effectively an Arduino shield. It plugs into yourArduino, providing power to it and breaking out digital, analog, and I2C con-nections.

A schematic of the Power and I/O Board is shown in Fig. 4. There arefour 6-pin connectors which expose various power levels and digital and analogports from the Arduino. These ports are directly connected to the Arduino withno additional protection circuitry, so make sure you know what you are doingbefore you start connecting stuff. If you don’t know what you’re doing, have alook a the examples section.

The boards have a bank of seven 4-pin I2C connectors. The cables providedto attach to the motor board and the encoder board should only fit in one way,so you shouldn’t be able to connect these up incorrectly. If attaching your ownI2C devices, pay attention to the pinout on the schematic.

8.3 Batteries and Chargers

You will be provided with a set of rechargeable AA cells, two 8-cell holders, anda battery charger. Your team will also be provided with two battery testers,one swanky one and one basic one. We suggest you share them.

8.3.1 Battery Charging Station

A battery charging station is available in the technicians office (room 3.08) andyou are allowed access during the supported hours to trade in empty batteriesfor charged ones on a one for one basis.

8.4 Motor Board

Fig. 5 shows a schematic of the Motor Board.

19https://www.arduino.cc/en/Tutorial/HomePage

13

Page 14: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Power & I/O Board

POWER IN(BATTERY)

POWER OUT(TO MOTOR BOARD)

A0

A1

A2

A3

ANALOG IN OR

DIGITAL I/0

3 /

INT

1 /

OC

2B

5

/ O

C0

B

9 /

OC

1A

6

/ O

C0

A

DIGITAL I/0OR PWM

~9

V

GN

D 5V

GN

D

GN

DSC

LSD

A5

V

I2C

Figure 4: The Power and I/O Board

14

Page 15: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Motor Board

POWER INMOTOR 0

MOTOR 1

MOTOR 2

MOTOR 3

MOTOR 4

MOTOR 5

GNDSCLSDA5V

I2C

Figure 5: Schematic of the Motor Board

The board has two I2C connectors, you can attach one to your Arduino viathe Power and I/O Board, and use the other I2C connector to attach somethingelse. It doesn’t matter which you use.

The board has six 2-pin connectors to attach to motors. Adaptor cables areprovided for connecting the lego motors to these.

You control the motors by sending commands over I2C from your Arduino.The SDPArduino library contains functions for doing this, and there is a demoscript available on the SDP wiki.

8.4.1 Motor Power and Battery Level

The voltage level of your battery pack will drop as you use up the charge in thecells. The Power and I/O Board will keep the voltage supplied to the motorsto less than 10v, regardless of input voltage, but it will not increase the voltagefrom the batteries. Unless you do something clever, this will mean that with afresh set of batteries the motors will turn faster than with slightly dischargedbatteries, for the same percentage power command.

Things you can do about this include:

• Use the rotary encoder feedback to actually measure how much your mo-tors are turning.

• Monitor the battery level and account for it when you command the mo-tors (example connections shown later - do not just plug the batteryinto an Arduino port)

15

Page 16: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Encoder Board

GNDSCLSDA5V

I2C

Figure 6: Schematic of the Encoder Board

• Use a voltage regulator to get a fixed voltage level for your motors. (thisone’s pretty much just for the electrical nerds. Don’t bother making yourown, it’s cheaper and easier to get one off the shelf).

It’s a good idea to do at least one of the above things. You should be usingencoder feedback as a matter of course, so that’s a no-brainer, and monitoringthe battery level is easy.

Needing to swap the battery pack after every match doesn’t look very good,and the judges are unlikely to give you much sympathy if you explain that yourrobot didn’t move at all because the batteries were not quite fully charged.

8.5 Encoder Board

The Encoder Board can be connected to your Arduino through I2C, and moni-tors up to six quadrature encoders. A schematic of the board is shown in Fig.6.

Adaptor cables are provided to connect the Lego NXT motors with built inencoders to the encoder board and motor board simultaneously. The standaloneencoders are prewired with a connector to plug into the encoder board. Theseconnectors will only fit in the correct way round...

The Encoder Board has another Arduino at its heart. It is preprogrammedto detect movement of attached encoders, and when queried will provide infor-mation on how much the encoders have rotated since the last query.

16

Page 17: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

The firmware loaded onto the Encoder Boards20 can be found on the SDPwiki, along with a demo script for reading values from the Encoder Board.

8.6 Background Reading

Whoever is working with the electronics should be familiar with a few things,as well as the microcontroller/Arduino system itself. Here are some starterreferences

I2C (Inter-Intergrated Circuit) is a bidirectional multi-master communicationsbus which uses four wires - power, ground, clock, and data. It’s widely used,available on almost any microcontroller, and very well documented.2122. TheArduino Wire library23 does all the complicated stuff for you.

Incremental Rotary Encoders The rotary encoders inside the NXT mo-tors2425, and in the separate encoders provided in the kits, are incrementalencoders which give a quadrature signal on two lines.26 Put simply, a rotatingshaft will generate two pulse trains with a 90 degree phase shift between them.Which pulse train is ”leading” tells you in which direction the shaft is rotating.There are four states that can be produced, and these are continuously cycledthrough as the encoder rotates.

PWM and Motor Control

8.7 Connecting Stuff to your Arduino

may break this out into a separate document - i.e. Arduino quickstart. At the very least it needs some diagrams. This section has afew examples to get you started. For more, use Google - the Arduino tutori-als (https://www.arduino.cc/en/Tutorial/HomePage) will walk you throughthings.

Student Beware. The pins on the Arduino are not designed to source or sinklarge amounts of current. Or even medium amounts of current. The absolutemaximum per pin is about 40mA, recommended 20mA. Combined, you shouldnot be putting more than 100mA across a port (The ATMEGA has three ports,Arduino pins 3, 5, and 6 are on port D, pin 9 is on port B). If you break it, youmight have to pay for a new one out of your budget...27

20It is technically possible for you to change the firmware on your encoder board, but youmust speak to Garry first. He can provide help, and it’s important that we know there’s anencoder board with different programming.

21e.g. http://www.robot-electronics.co.uk/i2c-tutorial22https://en.wikipedia.org/wiki/I2C23https://www.arduino.cc/en/Reference/Wire24http://www.brickengineer.com/pages/2008/09/05/lego-nxt-motor-wiring/25When googling, note that many people refer to the encoders in the lego NXT motors as

tachometers. This is not very accurate, but ho hum.26https://en.wikipedia.org/wiki/Rotary_encoder#Incremental_rotary_encoder27Fret not, the odd accident is okay, but try to be careful

17

Page 18: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

8.7.1 Battery Level Monitoring

The battery level is an analog signal, and the Arduino has analog inputs. But,the battery voltage is significantly higher than what the Arduino can cope with.You’ll need to use two resistors as a potential divider to scale down the voltage,and attach the Arduino Analog input to the middle of the potential divider.

You can use one of the ∼9v pins on the Power & I/O board to get the voltagewhich is actually being supplied to your motors. Use a factor of safety to makesure you don’t overload the Arduino pin. Additionally, you could think aboutusing a diode to protect the Arduino pin from getting too high a voltage.

Use the Arduino analogRead() function (e.g. ”analogRead(A0)”) to readthe analog input.

8.7.2 Potentiometer

Potentiometers come in rotary and linear flavours, and give an analog readoutof position. You can use these, e.g. for getting the absolute position of yourkicker. They have three pins, attach one end pin to ground, the middle pin to ananalog input, and the other end pin to 5V. Again, use the arduino analogRead()function.

8.7.3 Bump Switch

You’ll need a switch and a resistor. The value of the resistor isn’t too important,10kΩ is a nice value, but anything above 1k would pretty much be fine. Attachone end of the switch to 5V, the other end to an Arduino pin and the resistor,and the other end of the resistor to ground.

Set the pin up as an input (”pinMode(3, INPUT)”) in your setup function,and then use the digitalRead() function to get the value of the switch.

8.7.4 Tilt Switch

For a simple 2-state tilt switch, its exactly the same idea as for a bump switch.

8.7.5 Servo Motor

In the general sense, a servo motor is an enclosure that includes a motor, (usu-ally) a geartrain, an output sensor, and a closed loop controller. You can com-mand it to go to a specific position (or velocity...), rather than control the motordirectly. In the hobbyist world, servo motors are widely used (and very cheap),and most accept a PWM signal to command them to go to a certain position.

The four digital pins on the Power & I/O board are also PWM output pins,so you can connect the signal line of your servo to one of these. Then connectthe ground of the servo to ground, and the positive line to 5V. (Note :- Thepower board won’t like powering too big a servo.) You might want to include aBEC (Battery Eliminator Circuit), to get a high current 5V, 6V or 7.2V supplyfor your servo(s). These are pretty cheap these days.

Typically, servos require a 50Hz pulse, with an on-time of between 1ms-2mssetting the position, but this varies between servos and you should check for thetype you get.

18

Page 19: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Figure 7: The Ciseco SRF Stick

You can use the Arduino Servo library, or go a bit more low level and set upthe PWM yourself.28

8.7.6 I2C Modules

There are many sensor modules you can buy which will connect though I2C.Connecting these is as simple as connecting the four pins on the sensor moduleto one of the I2C ports on the Power & I/O Board.

8.7.7 IR Sensor

You can implement an IR sensor for proximity/distance detection using a simpleIR LED/detector pair, or by using a dedicated IR distance sensor.29 The SharpIR distance sensors use modulated IR so are fairly robust to noise, and give asurprisingly accurate signal as an analog value. Lots of resources are availableonline.

8.7.8 Sonar

You can pick up a sonar sensor for a couple of quid, and there are lots ofresources online for connecting them to Arduinos.30 Also look at the ArduinoPing library.31

8.7.9 Other Sensors

There are many other sensors you may want to connect to your Arduino32, fromsensors to detect the white lines of the pitch to colour sensors. For the mostpart connecting these to your system is simple, and we encourage you to havesensors on the robot itself, you can get much faster and more specific feedbackthan through the vision system alone.

19

Page 20: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

9 Communications

Each group is provided with an Arduino Xino RF33 and an SRF USB RadioStick34. User guides and full technical documentation for these is available onthe cited pages.

The RF system basically broadcasts to all devices on the same frequency.You can set a ”PAN ID” to configure an addressing system, and/or you canimplement your own. The RF modules can be configured by transmitting three”guard characters”, and then using a command set.35 You may use the ATIDcommand to set the ID for your stick and Arduino. Note that you must issuean ATAC (apply changes) command for this (or other changes) to take effect.

By setting the PAN ID with the ATID command (on both your Arduinoand RF stick), you can configure a particular stick to talk to your particularArduino. However, when using the same frequency band as other groups youwill likely see interference and dropped packets.

You may change the frequency using the ATCN command, but only to thedefault (0) or the number given for your group in Table 2. You may coordinatewith your teammates to use the same frequency. Note that the frequency settingsdo not appear to be persistent (i.e. you’ll need to set them every time you powerup)

You must not use any other frequencies. As this may interfere withother groups. Anybody found to be using a frequency not allotted to themmay face negative repercussions. Do not use the ATCH or ATCS commands tochange these settings.

Please do not change the guard character, as it’s a pain for us to figure outlater.

9.1 Using your Own Communications

There is enough money in your budget to allow you to use a different commu-nications method if you wish, however before you do this you’ll need to do twothings:

1. Speak to Garry and let him know what you’re thinking of doing

2. Check that DICE will work with your kit. It probably won’t, and there’sno point wasting your budget.

28https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM29see e.g. http://www.robotshop.com/uk/infrared-light-sensors.html30e.g. http://arduinobasics.blogspot.co.uk/2012/11/

arduinobasics-hc-sr04-ultrasonic-sensor.html31https://www.arduino.cc/en/Tutorial/Ping32see e.g. https://www.arduino.cc/en/Tutorial/HomePage http://www.proto-pic.co.uk,

http://www.robotshop.com/uk/robot-parts.html, http://www.hobbyking.com33https://www.wirelessthings.net/xinorf-100-arduino-uno-r3-based-dev-board-with-radio-transceiver34https://www.wirelessthings.net/srf-stick-868-915-mhz-easy-to-use-usb-radio35http://openmicros.org/index.php/articles/88-ciseco-product-documentation/260

20

Page 21: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Team Group ATCN setting (hex)Default Any 0x00

Team AGroup 1 0x10Group 2 0x17

Team BGroup 3 0x20Group 4 0x27

Team CGroup 5 0x30Group 6 0x37

Team DGroup 7 0x40Group 8 0x47

Team EGroup 9 0x50Group 10 0x57

Team FGroup 11 0x60Group 12 0x67

Team GGroup 13 0x70Group 14 0x77

Team HGroup 15 0x80Group 16 0x87

Table 2: Communications ATCN (frequency) settings

10 ROS

The Robot Operating System (ROS)36 is a framework and set of libraries usedon some of the most cutting edge robots in academia and, increasingly, in in-dustry.37

It’s not a full OS, but it runs on top of e.g. Linux, and provides a core forpassing messages, calling services and actions etc. You can set up nodes forparticular parts of your system, e.g. vision, communications, planning. Youdefine the communication between them, with messages as simple as integers oras complex as full images. ROS will take care of running your nodes in parallel,handling the communication between them, and give you an easy way to seewhat’s happening, save and replay things, and so on.

ROS also has a large library of extremely useful packages, for tasks rangingfrom navigation to vision processing and state machines.

For this year, ROS has been installed on the DICE machines. The corefunctionality is there, and you can install additional packages to your user space.

It’s not critical that you use ROS, and it will take some effort to understandand use correctly, but if you’re keen it will give you useful experience of a realworld robotics tool. It can also help you modularise your system.

Further documentation on getting started with ROS will follow, and we willtry to run a tutorial. The ROS wiki38 has a whole bunch of tutorials and otherinfo.

36http://www.ros.org/37https://vimeo.com/14618308038http://wiki.ros.org/

21

Page 22: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

11 Your Budget, and Additional Parts

Each group is allocated a budget of £100 with which to buy additional partsand equipment.

Before buying something, you must get approval from Garry, otherwise youwon’t get reimbursed. He can also probably give you some advice about whetherit’s a good idea, if it’s been tried before, and he might already have what youneed in stock.

The final project spend should be finalised and mentioned in your final re-port. You may of course borrow items to test and return them without beingcharged.

There are also some rules about what is allowed and what is not.

The same equipment must be available to all groups. Your uncle Tobymay work at Raspberry Pi and be able to give you some free Pis, but unlessyou’re willing to get and give the same number to every group, no free Pi foryou. Similarly, you can’t use a 3D printer unless every group has access to it.Generally, anything bought from a shop is OK, or things off eBay.

There are some chargeable items in the SDP store, for example the holonomicwheels.

The rules contain some restrictions about what you can use on your robot,and what you can do off pitch, so refer to them before buying stuff. Generally,you’re allowed to use what you buy on the robot or off, but you can’t do some-thing like add your own camera above the field. You can buy tools to work withyour robot.

There is a lot of scope to innovate here, but remember to always have thebasics down, you must deliver a functional robot.

Some examples of things you could buy (from the store if we have them):

• Long arm microswitches for bump detection

• Potentiometer for detecting kicker/grabber/etc. position

• Servo motors (and BEC)39

• IR distance sensors

• Sonar

• Inertial measurement unit

• Single board computer

• Onboard camera?

12 Use of Facilities

You are encouraged to make the best use possible of the given facilities andequipment.

However we reserve the right to restrict anything that we deem as being un-fair or unsporting use. You are also restricted to using the equipment/parts/kit

39e.g. http://www.hobbyking.com (order from the UK warehouse for quick delivery)

22

Page 23: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

that has been (or can be) supplied to each groups equally, and kit that hasbeen bought in under your group budget. This also includes the use of kit thathas been brought in from home, which for the purposes of the project will beconsidered as items bought under the groups budget and looked at on an itemby item basis.

13 Teamwork

Your group is in a team with one other group, and as well as playing matchestogether you share certain facilities. You are permitted to work together asmuch as you want, but remember that groups are assessed individually.

13.1 Shared Communications

Details of the provided RF communications sticks are given in section 9, youare allowed to share a communications channel with your teammate.

There is a limited amount of space in the frequency domain, so each groupand team is allocated a particular channel.

If there are issues with one group spamming a communications channel,please speak to your mentor or Garry.

13.2 Shared Vision

If you want to, you can run a shared vision system.

13.3 Shared Strategy

Ideally, a team will co-ordinate and have its robots work together. The markingis designed in such a way that a good robot always has a chance to performwell, even with a poorly performing team mate, but you should make an effortto coordinate strategy.

You may wish to designate one robot the defender and one the attacker, anddesign each with these roles in mind. You may not.

13.4 Sharing a PC?

You are allowed, but not required, to run both robots from a single DICEmachine for matches.

13.5 Sharing the Workload

You can spread a lot of the workload for SDP between the two groups in yourteam. You do need to ensure, however, that your robot performs at the end ofthe day. It doesn’t matter if you didn’t write the bit of code that broke, youneed to ensure you are confident in your system.

Also remember that your group is marked by its contribution, if you let yourteammates do everything, you won’t get many marks. This notwithstanding,you are encouraged to collaborate as much as you can.

There are lots of open ended challenges in SDP, from vision performance tostrategy to including interesting sensors. You should always ensure you have

23

Page 24: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

a working robot, but with judicious sharing of the workload, you should havemanpower to investigate interesting avenues. If successful, this can impressmentors and the external judges who come along on finals day.

There is always enough work to give everybody enough to do, even with alot of collaboration. If you don’t feel like you have anything to do, or you’reworried about how your group/team is being managed, speak to your mentor.

24

Page 25: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

Contents

1 Introduction 1

2 Lab space and facilities 12.1 The Main Lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 The Pitch Rooms . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3 Break Out Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.4 Lockers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.5 The Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.6 The Technician’s (Garry’s) Office . . . . . . . . . . . . . . . . . . 42.7 DICE Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Help 43.1 Course Management Structure . . . . . . . . . . . . . . . . . . . 53.2 Group discussion - Piazza . . . . . . . . . . . . . . . . . . . . . . 5

4 The Game 6

5 The Robot 65.1 The Top Plate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65.2 The Other Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

6 Code 76.1 Previous Years’ Code . . . . . . . . . . . . . . . . . . . . . . . . . 86.2 Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

7 Vision 87.1 The Pitch Cameras . . . . . . . . . . . . . . . . . . . . . . . . . . 87.2 Using a Vision Feed . . . . . . . . . . . . . . . . . . . . . . . . . 97.3 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97.4 Papers to Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

8 Electronics 128.1 The Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128.2 Power & I/O Board . . . . . . . . . . . . . . . . . . . . . . . . . 138.3 Batteries and Chargers . . . . . . . . . . . . . . . . . . . . . . . . 138.4 Motor Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138.5 Encoder Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168.6 Background Reading . . . . . . . . . . . . . . . . . . . . . . . . . 178.7 Connecting Stuff to your Arduino . . . . . . . . . . . . . . . . . . 17

9 Communications 209.1 Using your Own Communications . . . . . . . . . . . . . . . . . . 20

10 ROS 21

11 Your Budget, and Additional Parts 22

12 Use of Facilities 22

25

Page 26: SDP Resources Guide - The University of Edinburgh · 2017-12-21 · SDP Resources Guide Sandy Enoch & Garry Ellard January 13, 2016 1 Introduction Welcome to SDP 2016. Things are

13 Teamwork 2313.1 Shared Communications . . . . . . . . . . . . . . . . . . . . . . . 2313.2 Shared Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313.3 Shared Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313.4 Sharing a PC? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313.5 Sharing the Workload . . . . . . . . . . . . . . . . . . . . . . . . 23

26