Sasha Popov November 16, 2018 iRobot Create.

Slides:



Advertisements
Similar presentations
Repetition everywhere – comparing while in a method and as an event Susan Rodger Duke University July 2010 modified July 2011.
Advertisements

ACCURACY IMPROVEMENT FOR PHYSICAL ROBOT Gal Lerman, Dorin Ben-Zaken.
Navigating the BOE-BOT
Photos and Sensor Instructions
Autonomy using Encoders Intro to Robotics. Goal Our new task is to navigate a labyrinth. But this time we will NOT use motor commands in conjunction with.
Engineering H193 - Team Project Gateway Engineering Education Coalition P. 1 Spring Quarter 2008 Robot Programming Tips Week 4 Day 2 By Matt Gates and.
The Turtle Laboratory Sequence Myles McNally LMICSE Workshop November , 2004 University of Mississippi.
1 2. Controlling Robot Car in Ogre References: 1. LEGO.com MINDSTORMS NXT Home, 2. OGRE 3D, 3. MSDN,
Efficient Path Determining Robot RIT Computer Engineering Senior Design Project Jamie Greenberg Jason Torre October 26, 2004 A motorized robot will navigate.
How to turn on the robot How to start Bluetooth How to connect to robot How to initialize the robot How to not break the robot Sec Getting Started.
Loops and Switches. 1. What kind of blocks are these? 2. Name two kinds of controls that can be specified to determine how long a loop repeats. 3. Give.
Web Design. How to set up the robot How to link to robot How not to break my robot Sec Getting Started How to make it move How to control speed.
3-D Scanning Robot Steve Alexander Jeff Bonham John Johansson Adam Mewha Faculty Advisor: Dr. C. Macnab.
iRobot Create Introduction Assembled from various online resources
Program ultrasonic range sensor in autonomous mode
Weston Schreiber & Joshua Gabrielse Robotics Summer Training Programming #1: EasyC Basics.
Available at: Lesson 3.6 – Program Line Follower in Autonomous Mode Program Line Follower in Autonomous Mode.
Teacher/Mentor Institute Using easyC Joel Kirkland July 30-31, 2015.
Autonomous Robot Project Lauren Mitchell Ashley Francis.
CEG 4392 : Maze Solving Robot Presented by: Dominic Bergeron George Daoud Bruno Daoust Erick Duschesneau Bruno Daoust Erick Duschesneau Martin Hurtubise.
EV3 Workshop Oct 3, 2015 Instructor: Chris Cartwright
Autonomy using Encoders Intro to Robotics. Autonomy/Encoders Forward for Distance In this unit, you will learn to use the encoders to control the distance.
How to link the robot and the computer (Bluetooth) How to turn on and off How to connect the adaptor Fluke card connection Sec Getting Started How.
Negative Power or Negative Rotation makes robot go backwards. But if both are negative, the robot will go forward! Move Steering Block.
Find the Mindstorms Icon on the computer.. To start a new program click go.
Joe Cohen Presentation Overview  Project definition and requirements  Solution process and explanation  Methodology.
Team 6 DOODLE DRIVE Presenter: Jun Pan. PROJECT OVERVIEW  Android application as controller  Robot vehicle with microcontroller  Path will be drawn.
PROMGRAMING YOUR ROBOT How Servos Work: How to control your robot.
The George Washington University Electrical & Computer Engineering Department ECE 002 Dr. S. Ahmadi Class3/Lab 2.
EV3 Software EV3 Robot Workshop
1- How to connect the robot to the pc Sec Getting Started 3- How to move the robot Sec Scribbler movements 4- How to make a turn 11- How to.
BEGINNER FLL PROGRAMMING WORKSHOP BY DROIDS ROBOTICS & EV3LESSONS.
Deriving Consistency from LEGOs What we have learned in 6 years of FLL by Austin and Travis Schuh © 2005 Austin and Travis Schuh, all rights reserved.
Vex Robotics program three: using motors and sensors together.

MEH108 - Intro. To Engineering Applications KOU Electronics and Communications Engineering.
Creating Flexible, Script-Controlled Autonomous Software Example Explanation.
Robotics Programming Wall Follow Line tracking for a set amount of time Line tracking for a distance.
Lesson 8 – Communication and Interaction Objectives I n this lesson we will: ● learn how and why to use the Discussion or Talk pages, ● discuss the my.
Tutorial 2: Homework 1 and Project 1
How Do You Make a Program Wait?
NXT Mindstorms Kit Programming
WORKSHOP 1 introduction
BEGINNER EV3 PROGRAMMING Lesson
Deriving Consistency from LEGOs
What you asked me to teach…
ROBOTC for VEX Online Professional Development
Understanding Communication with a Robot? Activity (60 minutes)
BASIC COMPUTERS Merced Adult School
By Sanjay and Arvind Seshan
ROBOTC for VEX Online Professional Development
Robotics Getting Started with
Autonomy using Encoders
Learning Java with Alice 3.0 Game Design Kathy Bierscheid
Introductory Presentation
Getting Started in RobotC
Loops and Switches Pre-Quiz
INTERMEDIATE PROGRAMMING LESSON
I/O Systems I/O Hardware Application I/O Interface
An Introduction to VEX IQ Programming with Modkit
INTERMEDIATE PROGRAMMING LESSON
Beginner Programming Lesson
An Introduction to VEX IQ Programming with Modkit
CBC v2 Using the CBC.
An Introduction to VEX IQ Programming with Modkit
Loops and Switches How Do You Make Loops and Switches? lesson > TeachEngineering.org Center for Computational Neurobiology, University of Missouri.
Getting started with LEGO EV3 Mindstorms software
Chapter 13: I/O Systems.
Chapter 3: Process Management
Chapter 13: I/O Systems “The two main jobs of a computer are I/O and [CPU] processing. In many cases, the main job is I/O, and the [CPU] processing is.
Presentation transcript:

Sasha Popov November 16, 2018 iRobot Create

Original Project Definition Develop communication protocol so that two create robots can partner and cooperate activities.

Initial Design Use GPS to track the robots Use PC as the “brains” behind the robots Communicate via Bluetooth to control the robots

Initial Equipment Limitations/ Project Evolution Failure of the GPS due to lack of accuracy Project Evolves: Create a user interface to control the robot via Bluetooth Use internal Robot’s readings to measure movement distances and directions Develop an algorithm to keep track of the robot Backtrack to the starting location

New Focal Points User Interface Serial Port/Bluetooth Communication Multi-processing Robot PC Multi-threading Modified Stack for movement history

Design Overview PC Via Bluetooth iRobot SERIAL PORT Internal Processor Request Data Return Data Threads/Log/Logic Give example of Data Request Talk about “dumb” roomba and the brains of the PC User Interface

User Interface

Demo Demo

History Stack Distance Driven Angle Turned Bump Sensor Speed Stack Example: Drive Forward 67 mm at speed of 3 1 2 3 67 4 5 6 7 Turn Left 90 Degrees 255 245 90 1(B,F, R, L) 255 2 90 3 Direction Key(back/forward/left/right) Distance Driven Angle Turned Bump Sensor Speed

Extra Features of the Stack Class Moving? Last executed Direction? Last Executed Command Line? Add another command to the stack? Command Line == state (Drove x, Turned x, Change Speed, Sensor Bumped) “Buffer Commands/ Distances”- buffer the current command in progress Size? Number of Commands Each command line is a state of the robot Make states smoother I “buffer” the state in progress, add 90 degrees instead of 1 degree at a time

Multi-Processing 2 Asynchronous Processors PC Threading PC iRobot Serial Port iRobot<-> PC Communication Time Sending Data/ Listening for Feedback User Interface Issuing Commands(Turning Right/Left) Lock Variable(on issuing commands to the robot) Go through very quickly and show chart on next page

User Interface/Main Thread Main Threads User Interface/Main Thread BUMP SENSOR THREAD Check Sensor Wait Loop Right Turn / Left Turn Command Thread Issue Turn Wait To Turn x degrees Submit Data to Log Backtracking Thread Execute Backtrack algorithm Serial Port Send Command Spin and Listen for Result

Threading / Lock Variables / Turning Example iRobot Create Process Command Send Feedback Turn Right 90 Degrees Turn Right Thread Lock Out Other Threads Issue start moving command Loop: Ask for degrees turned so far If 90 Add Deg. To Stack Stop Robot Release Thread Lock Notify Main Thread That Turn Is Completed Main Thread/ User Interface Know When Turn Is Done Allow To Click And Stop Turn Start The Turn Right Thread Kill thread with lock variable locked in another thread Who stops the robot if the thread is killed half way How far did we go? Make sure the thread is finished so next one can start. Reset variables of movement... Etc. Serial Port Thread Send Command Wait For Response Start Turning How far did you it turn since last request?

Limitations Delay between PC <-> iRobot, not accurate angles (accuracy of +- 3,4 degrees/mm) Errors (3,4 degrees) accumulate over number of commands If off by 3 degrees on first turn, 2 turn could be off by as much as 6 and so on… Not Completely Centered Wheels (.5 inches longer in the front). No third source of data to correct for these errors( GPS ) Threading / Lock Variables Side-effects of asynchronous processing Hard to find and accommodate for all possible errors with so many processes happening at the same time “Racing conditions” on the serial port(don’t want to break up logical segments of code to and from the robot)

Demo Demo

Accomplishments Backtracking Checks and stops on bump Turning on the move Multi-threading User Interface

To Do For Next Year 3rd Reference Point for the Robot Different GPS? Use another source to verify robot location/ correct for errors in reading data Be able to coordinate two robots, even something as simple as, one drive away and the second follow

Advice For Next Year Often easier to re-write from the beginning than to understand other’s code Start with my basic functions (Move Forward, Backwards, Left, Right) At first ignore threading/stack to easily understand the basic functionality Use the basic commands (+ threading) as building blocks from which to build your own algorithm logic

Learning and Development Process Finding Answers: Google and examine sample code MSDN Build small programs to test and understand sample code Write my version of sample and add it to a bigger picture CS Courses That Were Most Helpful: Operating Systems Database Modeling Project in C# Assembly Language (Low Level Understanding)