Gregory Bock, Brittany Dhall, Ryan Hendrickson, & Jared Lamkin Project Advisors: Dr. Jing Wang & Dr. In Soo Ahn Department of Electrical and Computer

Similar documents
Single-phase Variable Frequency Switch Gear

CEEN Bot Lab Design A SENIOR THESIS PROPOSAL

Preliminary Design Report. Project Title: Search and Destroy

E90 Project Proposal. 6 December 2006 Paul Azunre Thomas Murray David Wright

Proposal Smart Vision Sensors for Entomologically Inspired Micro Aerial Vehicles Daniel Black. Advisor: Dr. Reid Harrison

Lesson 13. The Big Idea: Lesson 13: Infrared Transmitters

Structure and Synthesis of Robot Motion

GPS System Design and Control Modeling. Chua Shyan Jin, Ronald. Assoc. Prof Gerard Leng. Aeronautical Engineering Group, NUS

Single-phase Variable Frequency Switch Gear

1 Lab + Hwk 4: Introduction to the e-puck Robot

Multi robot Team Formation for Distributed Area Coverage. Raj Dasgupta Computer Science Department University of Nebraska, Omaha

Autonomous Robotic Boat Platform

Persistence of Vision LED Sphere

Biologically-inspired Autonomic Wireless Sensor Networks. Haoliang Wang 12/07/2015

Traffic Control for a Swarm of Robots: Avoiding Target Congestion

Distributed Area Coverage Using Robot Flocks

Pulse-Width-Modulation Motor Speed Control with a PIC (modified from lab text by Alciatore)

Swarm Robotics. Communication and Cooperation over the Internet. Will Ferenc, Hannah Kastein, Lauren Lieu, Ryan Wilson Mentor: Jérôme Gilles

Mobile Target Tracking Using Radio Sensor Network

Traffic Control for a Swarm of Robots: Avoiding Group Conflicts

Lab 8: Introduction to the e-puck Robot

Spring 2005 Group 6 Final Report EZ Park

Today s Menu. Near Infrared Sensors

Workshops Elisava Introduction to programming and electronics (Scratch & Arduino)

Marine Debris Cleaner Phase 1 Navigation

Project Name: SpyBot

LDOR: Laser Directed Object Retrieving Robot. Final Report

Emergent Behavior Robot

Real-time Cooperative Behavior for Tactical Mobile Robot Teams. September 10, 1998 Ronald C. Arkin and Thomas R. Collins Georgia Tech

Vision based Object Recognition of E-Puck Mobile Robot for Warehouse Application

Fuzzy Logic Based Intelligent Control of RGB Colour Classification System for Undergraduate Artificial Intelligence Laboratory

WCNN. Wireless Camera Node Network. Midway Design Review December 1, 2014

Experiment P-24 Circuits and Series Resistance

Wheeled Mobile Robot Obstacle Avoidance Using Compass and Ultrasonic

BEYOND TOYS. Wireless sensor extension pack. Tom Frissen s

Welcome to Arduino Day 2016

CURIE Academy, Summer 2014 Lab 2: Computer Engineering Software Perspective Sign-Off Sheet

Column-Parallel Architecture for Line-of-Sight Detection Image Sensor Based on Centroid Calculation

Final Report for AOARD Grant FA Indoor Localization and Positioning through Signal of Opportunities. Date: 14 th June 2013

Experiment 4.B. Position Control. ECEN 2270 Electronics Design Laboratory 1

PRELIMINARY DESIGN REPORT

Imaging serial interface ROM

Development of the FVTX trigger

Real Time Traffic Light Control System Using Image Processing

Design of an electronic platform based on FPGA-DSP for motion control applications

Kilobot: A Robotic Module for Demonstrating Behaviors in a Large Scale (\(2^{10}\) Units) Collective

WifiBotics. An Arduino Based Robotics Workshop

Rochester Institute of Technology Real Time and Embedded Systems: Project 2a

Overview of Message Passing Algorithms for Cooperative Localization in UWB wireless networks. Samuel Van de Velde

Robot Team Formation Control using Communication "Throughput Approach"

Sandia National Laboratories Clinic Team

Lab 2: Blinkie Lab. Objectives. Materials. Theory

ENERGY EFFICIENT SENSOR NODE DESIGN IN WIRELESS SENSOR NETWORKS

Industrial Automation Training Academy. Arduino, LabVIEW & PLC Training Programs Duration: 6 Months (180 ~ 240 Hours)

FTSP Power Characterization

EE 314 Spring 2003 Microprocessor Systems

Chapter 14. using data wires

TRDB_DC2 TRDB_DC2. 1.3Mega Pixel Digital Camera Development Kit

Mapping device with wireless communication

Overview of Challenges in the Development of Autonomous Mobile Robots. August 23, 2011

MN5020HS Smart GPS Antenna Module

UTILIZATION OF ROBOTICS AS CONTEMPORARY TECHNOLOGY AND AN EFFECTIVE TOOL IN TEACHING COMPUTER PROGRAMMING

CHAPTER 4 FUZZY LOGIC CONTROLLER

745 Transformer Protection System Communications Guide

Sensors and Sensing Motors, Encoders and Motor Control

FPGA-BASED HARDWARE EMULATION ARCADE SYSTEM PROJECT PLAN

CSC C85 Embedded Systems Project # 1 Robot Localization

Distributed Intelligence in Autonomous Robotics. Assignment #1 Out: Thursday, January 16, 2003 Due: Tuesday, January 28, 2003

Trade-offs Between Mobility and Density for Coverage in Wireless Sensor Networks. Wei Wang, Vikram Srinivasan, Kee-Chaing Chua

Hello, and welcome to this presentation of the STM32 Infrared Timer. Features of this interface allowing the generation of various IR remote control

Sensors. CS Embedded Systems p. 1/1

Using Z8 Encore! XP MCU for RMS Calculation

Open Source Digital Camera on Field Programmable Gate Arrays

1,024 Kilobot Robots Studying Collective Behaviors & Swarm Intelligence with Little Bitty Robots

Presentation Outline. Advisors: Dr. In Soo Ahn Dr. Thomas L. Stewart. Team Members: Luke Vercimak Karl Weyeneth

High Impedance Fault Detection and Location in a Power Transmission Line Using ZIGBEE

Node Deployment Strategies and Coverage Prediction in 3D Wireless Sensor Network with Scheduling

Project Final Report: Directional Remote Control

KUMU A O CUBESAT: THERMAL SENSORS ON A CUBESAT

PWM LED Color Control

An Analog Phase-Locked Loop

AN HYBRID LOCOMOTION SERVICE ROBOT FOR INDOOR SCENARIOS 1

This study provides models for various components of study: (1) mobile robots with on-board sensors (2) communication, (3) the S-Net (includes computa

Turtlebot Laser Tag. Jason Grant, Joe Thompson {jgrant3, University of Notre Dame Notre Dame, IN 46556

Location Estimation in Ad-Hoc Networks with Directional Antennas

Big Blue Mars Final Report

BULLET SPOT DIMENSION ANALYZER USING IMAGE PROCESSING

Evaluation Kit: MPS 160 ASIC. Magneto Encoder ASIC

Low Power Pulse-Based Communication

A10-Gb/slow-power adaptive continuous-time linear equalizer using asynchronous under-sampling histogram

PROFINET USER S GUIDE ACSI Servo

Comp551: Advanced Robotics Lab Lecture 7: Consensus CSE481C wi09 - Robotics Capstone, Lec3: Consensus

2F. No.25, Industry E. 9 th Rd., Science-Based Industrial Park, Hsinchu, Taiwan Application Note of OGM220, AN001 V1.8

Optimal Clock Synchronization in Networks. Christoph Lenzen Philipp Sommer Roger Wattenhofer

AN ARDUINO CONTROLLED CHAOTIC PENDULUM FOR A REMOTE PHYSICS LABORATORY

GROUP BEHAVIOR IN MOBILE AUTONOMOUS AGENTS. Bruce Turner Intelligent Machine Design Lab Summer 1999

CubeSense. An integrated sun and nadir sensor module. User Manual

Unit 6 - Number Games and Crayon Puzzles Unit 8 - Twos, Fives, and Tens Unit 7 - Color, Shape, and Size. Unit 9 - Blocks and Boxes.

MULTI ROBOT COMMUNICATION AND TARGET TRACKING SYSTEM AND IMPLEMENTATION OF ROBOT USING ARDUINO

Solar-Powered RF Signal Generation for Energy Harvester Applications

Transcription:

Gregory Bock, Brittany Dhall, Ryan Hendrickson, & Jared Lamkin Project Advisors: Dr. Jing Wang & Dr. In Soo Ahn Department of Electrical and Computer Engineering March 1 st, 2016

Outline 2 I. Introduction II. E-puck Progress Brittany & Jared III. Kilobot Progress - Jared IV. Qbot Progress Ryan & Greg V. Summary & Conclusions

I. Introduction 3

Problem Description 4 Design cooperative control algorithms for heterogeneous groups of robots Implement algorithms on different robot platforms

Objectives 5 Design and Experimental Validation of Cooperative Control Algorithms Sensing/communication between robots Implementation of local flocking control algorithms Implementation of local formation control algorithms

Solution 6 Cooperative control algorithm design Linear model Non-linear model Deployment and validation through experimental testing Modular design System integration

Algorithm Test Platforms 7 Kilobot E-Puck Qbot http://www.k-team.com/mobile-robotics-products/kilobot https://en.wikipedia.org/wiki/e-puck_mobile_robot http://www.mathworks.com/products/connections/product_detail/product_101072.html

Division of Labor Overview 8 Kilobots Jared Individual Behavior Qbots Ryan/Greg E-pucks Brittany Kilobot - Kilobot Jared Individual Communication Qbot - Qbot Ryan/Greg E-puck - E-puck Brittany Kilobot - E-puck Jared/Brittany Integrated Communication Kilobot - Qbot Jared/Ryan/Greg E-puck - Qbot Brittany/Ryan/Greg Algorithm Design Linearization Based Model Jared/Brittany/Ryan/Greg Integrated Behavior Formation Control Behavior Jared/Brittany/Ryan/Greg Flocking Behavior Jared/Brittany/Ryan/Greg Testing Software Implementation Jared/Brittany/Ryan/Greg Hardware Implementation Jared/Brittany/Ryan/Greg

II. E-puck Progress - Brittany 9

Recap of Last Semester 10 Used IR proximity sensors for object detection Used IR proximity sensors for object following https://www.cyberbotics.com/item?id=8

Work Accomplished 11 IR proximity sensors used for communication Un-brick E-pucks Received new batteries for better life of the robot https://www.cyberbotics.com/item?id=8

IR Proximity Sensors 12 Proximity sensors can send a pulse wave IR receiver circuit detects signal Method to communicate with Kilobots Sent a message (Kilobots could not see it) https://www.cyberbotics.com/guide/tutorial-4-more-about-controllers-20-minutes.php

Example Code for IR Proximity Sensor 13 int main() { long timer = 0; //configure LEDs pin direction PULSE_IR0_DIR = OUTPUT_PIN; LED0_DIR = OUTPUT_PIN; while (1) { } PULSE_IR0 = 0; LED0 = 0; for(timer = 0; timer < DELAY; timer++); PULSE_IR0 = 1; LED0 = 1; for(timer = 0; timer < DELAY; timer++);

Oscilloscope Captures 14

Unbricked two E-pucks 15 Used the MPLAB ICD 3 http://microchip.wikidot.com/icd3:start

Steps to Un-Brick the E-puck 16 Use MPLAB IDE v8.30 E-puck must be turned off to start Open MPLAB IDE v8.30 Remove the top portion of the E-puck Connect the ICD3 to the computer, then to the E- puck

Steps to Un-Brick the E-puck 17 Import a basic file into MPLAB Go to Programmer -> Select Programmer -> MPLAB ICD3 Go to Programmer -> Settings -> Program Memory Tab

Steps to Un-Brick the E-puck 18 ICD3 Settings Power Tab

Steps to Un-Brick the E-puck 19 Select Programmer -> Erase Flash Device When Finished, power cycle the E-puck Select Programmer -> Program

Problems Encountered 20 Infrared sensor communication (no add-on IR Ring) Communication using the proximity sensors to the Kilobots Fig. 1 E-puck with Add-on IR ring Fig. 2 E-puck without Addon IR ring Fig. 1. http://www.eecs.harvard.edu/ssr/teaching/epucks/e-site_files/page609.htm Fig. 2. http://hades.mech.northwestern.edu/index.php/e-puck_mobile_robot

Future Work 21 E-puck to E-puck communication Using the E-puck s camera Q-bot to E-puck communication

Gantt Chart Future Work 22 Task Name Individual Communication Group Member Responsible for Task Finish by Date/Due Date Dec - 16 Jan-16 Feb-16 Mar-16 Apr-16 1 8 19 26 2 9 16 23 1 8 15 22 29 5 12 19 26 Research/Test E-puck - E-puck Brittany December 14, 2015 Integrated Communication Test Kilobot - E-puck Jared/Brittany December 14, 2015 Test E-puck - Qbot Brittany/Ryan/Greg December 14, 2015 Algorithm Design Design Linear Based Model All December 14, 2015 Integrated Behavior Formation Control Behavior Localization All January 25, 2016 Point Convergence All January 25, 2016 Leader Follower All January 25, 2016 Testing Software Implementation All March 7, 2016 Hardware Implementation All March 7, 2016

E-puck Progress- Jared 23

Color and Object Detection 24 The E-puck CMOS camera is capable of 640X480 resolution, in color or grayscale However, the image is too large to process, so instead we use a 1X120 image Color uses RGB565, where each pixel has 5 bits for red, 6 bits for green, and 5 bits for blue

Color and Object Detection 25 First step to object detection is edge detection The image array is searched for two edges, from both left and right starting positions Individual pixels are compared to the average of the previous ten pixels If the difference is greater than three, that location is set as an edge Based on the number of edges found (0,1,2,3,4), The E-puck calculates where the center of the object is, and how wide it is.

Color and Object Detection 26 After Edge detection is complete, the E-puck moves on to color comparison The E-puck computes the average RGB value of the object The average is compared to the specified value within a certain tolerance If the comparison is acceptable, The E-puck begins maneuvering to it.

III. Kilobot Progress - Jared 27

How Kilobots Communicate 28 Use infrared light Reflects light off the floor Measures light intensity to calculate distance Maximum rated range is 7 cm Messages are sent every 200 milliseconds https://i.ytimg.com/vi/ismwlcfwgk4/maxresdefault.jpg

Preparing Messages to send 29 A message is composed of 23 bits (2 full characters, and an even character) A check sum is generated by taking the sum of the bits and 128 All four bytes are operated on Each byte is then shifted left and incremented by 1

Sending messages 30 Signal goes high briefly (0.75 microseconds) Signal is then set low for a duration (92.25 microseconds) Each bit is sent: high for 1, low for 0 Signal is set low between each bit (13.875 microseconds per bit) 537 microseconds for entire message to be sent

Circuit 31 Used an Atmega128 board from the lab PB0 in series with a 330 ohm resistor and an IR LED

Oscilloscope capture 32

Initial Testing 33 A Kilobot was programmed to turn its LED green if message was received The Kilobot turns it LED red if message is not received after a set amount of time The IR LED light was reflected off the ground next to the Kilobot

Further Testing 34 Kilobot was connected to serial cable and programmed to print message values to hyper terminal Kilobot was placed at measured distances and compared to printed distance

Controllable Node 35 A Kilobot programmed to receive orders from an outside source Transmits orders to follower Kilobots to mimic its behavior Only performs orders if at least one follower is within range

Follower Nodes 36 Perform order received from controllable node At start up they perform gradient algorithm with other followers Only perform orders received from lowest value follower within range They only move if they are within range of the next lowest follower Transmit gradient value and heading

Simulation of Controllable and 37 Follower Nodes

Separation and Attraction 38 Kilobots generate a random ID at startup Kilobots then try to separate into two groups, evens and odds Opposites attempt to repulse each other, by orbiting Like attracts If an agent loses contact with others it stops Current issues are collision avoidance

Separation and Attraction 39 Simulation

Gantt Chart Future Work 40 Task Name Group Member Responsible for Task Finish by Date/Due Date Integrated Communication Test Kilobot - E-puck Jared/Brittany December 14, 2015 Test Kilobot - Qbot Jared/Ryan/Greg November 16, 2015 Test E-puck - Qbot Brittany/Ryan/Greg December 14, 2015 Algorithm Design Design Linear Based Model All December 14, 2015 Integrated Behavior Formation Control Behavior Localization All January 25, 2016 Point Convergence All January 25, 2016 Leader Follower All January 25, 2016 Flocking Behavior Neighbor Repulsion All February 1, 2016 Enpoint Attraction All February 1, 2016 Heading All February 1, 2016 Testing Software Implementation All March 7, 2016 Hardware Implementation All March 7, 2016 Dec-15 Jan-16 Feb-16 Mar-16 Apr-16 1 8 19 26 2 9 16 23 1 8 15 22 29 5 12 19 26

III. QBot 2 Progress Ryan & Greg 41

Recap of Last Semester 42 Localization Point Consensus Formation

Path Following 43 Sinusiodal Motion x = ω x d = ωt y = ω cos x d y d = sin x d v 1 = k x d z 1 + v 2 = k y d z 2 + x y

Path Following 44 Circular Motion v 1 = k x d z 1 + v 2 = k y d z 2 + x d = a + rcos t n y d = b + rsin( t n) x = r sin y = r cos t n /n t n /n x y

Path Following Figure 8 45

QBot Progress - Greg 46

Object Avoidance Using Fuzzy Logic 47 Non-binary, degrees of truth Three inputs left side, middle, right side Two outputs left motor, right motor

Object Avoidance Using Fuzzy Logic 47 Results

Object Avoidance 49

Gantt Chart Future Work 51 Task Name Group Member Responsible for Task Finish by Date/Due Date Integrated Communication Test Kilobot - E-puck Jared/Brittany December 14, 2015 Test Kilobot - Qbot Jared/Ryan/Greg November 16, 2015 Test E-puck - Qbot Brittany/Ryan/Greg December 14, 2015 Algorithm Design Design Linear Based Model All December 14, 2015 Integrated Behavior Formation Control Behavior Localization All January 25, 2016 Point Convergence All January 25, 2016 Leader Follower All January 25, 2016 Flocking Behavior Neighbor Repulsion All February 1, 2016 Enpoint Attraction All February 1, 2016 Heading All February 1, 2016 Testing Software Implementation All March 7, 2016 Hardware Implementation All March 7, 2016 Dec- 15 Jan- 16 Feb-16 Mar-16 Apr-16 1 8 19 26 2 9 16 23 1 8 15 22 29 5 12 19 26

VIII. Summary & Conclusions 51

Summary & Conclusions 52 Design cooperative control algorithms for heterogeneous groups of robots Implement algorithms on different robot platforms Prevent collisions and implement network security Behind Schedule

Future Plan of Action 53 Communication between platforms Algorithm design Integrated behavior

Gregory Bock, Brittany Dhall, Ryan Hendrickson, & Jared Lamkin Project Advisors: Dr. Jing Wang & Dr. In Soo Ahn Department of Electrical and Computer Engineering October 6 th, 2015

Left Side Input

Middle Input

Left Motor Output

Simulation of Rules

Design Constraints 59 Must overcome limited communication among networked robots Must overcome limited sensing capability of robots Must overcome system uncertainties

Objectives 60 Mobile robot network should be applicable to different robot platforms Mobile robot network should be robust Mobile robot network should be autonomous

Solution 61 Cooperative control algorithm design Linear model Non-linear model Deployment and validation through experimental testing Modular design System integration

Robot Model 62 Linear Model x = U x y = U y Non-linear Model x = vcos θ y = vsin θ θ = ω

Solution Testing 63 Software Implementation Simulation Algorithm validation Algorithm implementation on platforms Hardware Implementation Robot calibration Multiple sensor fusion System Integration Software Hardware

Criteria to Determine a Successful 64 Project Algorithm can be deployed on multiple robots Autonomous robots Communication amongst multiple robots

Project Funding 65 Air Force Research Lab Air Force Proposal - "Multiagent task coordination using a distributed optimization approach Grant Agreement Number FA8780-13-1-0109 http://www.af.mil/news/photos/tabid/129/igphoto/2000100887/default.aspx

Expenses 66 Robotic platforms (software included) Auxiliary components

Project Platform Costs 67 Platform Quantity Total Price Qbot2 3 $9,999.00 Kilobot Kit 20 $4,583.00 Epucks 3 $5,093.00

Programming Software Costs 68 Software Quantity Total Price Kilobot Controller IDE 1 $0.00 E-puck Programming Software 1 $0.00 MATLAB Courseware 1 $0.00

Gantt Chart 69 Task Name Group Member Responsible for Task Finish by Date Sep-15 Oct-15 Nov-15 Dec-15 Jan-16 Feb-16 Mar-16 Apr-16 1 8 15 22 29 6 13 20 27 3 10 17 24 1 8 15 22 29 5 12 19 26 2 9 16 23 1 8 15 22 29 5 12 19 26 Individual Behavior Research Kilobot Sensors Jared September 28, 2015 Research Kilobot Communication Protocol Jared October 12, 2015 Research Q-bot Image Processing Ryan/Greg October 5, 2015 Research Q-bot Sensors Ryan/Greg September 28, 2015 Research Q-bot Communication Protocol Ryan/Greg October 19, 2015 Research E-puck Sensors Brittany October 26, 2015 Research E-puck Communication Protocol Brittany Individual Communication Research/Test Kilobot - Kilobot Jared October 19, 2015 Research/Test E-puck - E-puck Brittany December 14, 2015 Research/Test Qbot - Qbot Ryan/Greg November 2, 2015 Integrated Communication Test Kilobot - E-puck Jared/Brittany December 14, 2015 Test Kilobot - Qbot Jared/Ryan/Greg November 16, 2015 Test E-puck - Qbot Brittany/Ryan/Greg December 14, 2015 Algorithm Design Design Linear Based Model All December 14, 2015 Integrated Behavior Formation Control Behavior Localization All January 25, 2016 Point Convergence All January 25, 2016 Leader Follower All January 25, 2016 Flocking Behavior Neighbor Repulsion All February 1, 2016 Endpoint Attraction All February 1, 2016 Heading All February 1, 2016 Testing Software Implementation All March 7, 2016 Hardware Implementation All March 7, 2016

Gantt Chart Deliverables 70 Task Name Finish by Date/Due Date Deliverables Project Proposal - Oral Presentation October 1, 2015 Project Proposal - Document October 15, 2015 Webpage Release October 28, 2015 Fall Progress Presentation November 19, 2015 Fall Performance Evaluation November 19, 2015 Fall Performance Review December 3, 2015 Spring Progress Presentation February 18, 2016 Student Expo Abstract March 18, 2016 Project Demonstration March 24, 2016 Final Presentation April 7, 2016 Student Expo Poster Printing Deadline April 11, 2016 Student Expo Poster Setup April 12, 2016 Student Expo April 14, 2016 Final Report (Draft) April 14, 2016 Final Report April 28, 2016 Final Web Page April 28, 2016 Advisory Board Poster Printing Deadline April 28, 2016 Advisory Board Poster Presentation April 29, 2016 Sep-15 Oct-15 Nov-15 Dec-15 Jan-16 Feb-16 Mar-16 Apr-16 1 8152229 6132027 3101724 1 8152229 5121926 2 91623 1 8152229 5121926

State Diagram: Formation Control 71 Behavior

State Diagram: Flocking Formation 72

Non-linear Model 73 Quanser Inc. QBOT 2 Workbook Markham, Ontario

Linear Model 74 Quanser Inc. QBOT 2 Workbook Markham, Ontario

Solution Testing 75

E-puck Object Following Code 76

Kilobot message operations 77 data_out[i]=(data_to_send[i] & (1<<0))*128 + (data_to_send[i] & (1<<1))*32 + (data_to_send[i] & (1<<2))*8 + (data_to_send[i] & (1<<3))*2+ (data_to_send[i] & (1<<4))/2+ (data_to_send[i] & (1<<5))/8 + (data_to_send[i] & (1<<6))/32 + (data_to_send[i] & (1<<7))/128; data_out[i]=data_out[i]<<1; data_out[i]++;

LEDs and Buttons 78 Found LED and Button addresses for reading and writing LEDs can be used for debugging Buttons can be used for synchronous startup

QBot Point Convergence Code 79

QBot Obtained Angle Equation 80 α = 320 column 57 640 π 180

HIL Write Block 81

Find Object Parameters 82 Specify RGB values Value threshold Number of objects

Overall Simulink Model 83

Motor Control 84

E-puck Tiny Bootloader 85

Color Consensus Flowchart 86 Start up Generate random # Color = Random # Message_out(color) Get_message() Update Color Count Red++ Count++ Green++ Count++ Blue++ Count++ If count >= Buffer size Determine most prevalent color Update color Clear Red, Green, Blue, and Count

Localization Equations C i = x 0 x i 2 + y 0 y i 2 V i = < x 0 x i, y 0 y i > C i C i n i = x i, y i D i V i x 0, y 0 = x 0, y 0 (x 0 n ix, y 0 n iy ) 4