Difference between revisions of "Candi"

From RoboJackets Wiki
Jump to navigation Jump to search
(Software Issues & Improvements)
m (Versions)
 
(37 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{| class="wikitable" align="right"
+
{{Infobox IGVC
|-
+
| robot_name        = Candi
! scope="row" colspan="2" style="background-color:#FFFF99" | Candiii
+
| image_path        = Candi.png
|-
+
| image_alt_text    = Candi alt text
! scope="row" colspan="2" align="center" |[[]]
+
| year_start        = 2006
|-
+
| year_end          = 2007
! scope="row" style="text-align:left" | Year Of Creation
+
| current_version  = Candiii
| {{{year|2006-2007}}}
+
| update_year_start = 2007
|-
+
| update_year_end  = 2009
! scope="row" colspan="2" style="background-color:#FFFF99" | Versions
+
| farthest_distance = 235 feet
|-
+
| fastest_time      = NA
! scope="row" style="text-align:left" | Current Version
+
| highest_finish_autonav = 6th
| {{{currver|deprecated}}}
+
| highest_finish_design  = 9th
|-
+
| last_robot            = Trixxie
! scope="row" style="text-align:left" | Update Year
+
| next_robot            = Misti (IGVC)
| {{{updyr|2007-2008, 2008-2009}}}
+
}}
|-
 
! scope="row" colspan="2" style="background-color:#FFFF99" | Information and Statistics
 
|-
 
! scope="row" style="text-align:left" | Farthest Distance
 
| {{{mat|}}}
 
|-
 
! scope="row" style="text-align:left" | Fastest Time
 
| {{{mat|}}}
 
|-
 
! scope="row" style="text-align:left" | Highest Placement AutoNav
 
| {{{hfin|}}}
 
|-
 
! scope="row" style="text-align:left" | Highest Placement Design
 
| {{{hfin|}}}
 
|}
 
  
 
= Competitions =
 
= Competitions =
Line 36: Line 21:
 
*Bot Version: Candi
 
*Bot Version: Candi
 
*Results
 
*Results
** Distance:  
+
** Distance: 123 feet
** Design Competition Placement:
+
** Design Competition Placement: 9th (743 / 1100 points)
** AutoNav Competition Placement:
+
** AutoNav Competition Placement: 7th
 
 
  
 
=== IGVC 2008 ===
 
=== IGVC 2008 ===
 
*Bot Version: Candii
 
*Bot Version: Candii
 
*Results:
 
*Results:
** Time:  
+
** Distance: 185 feet
** Design Competition Placement:  
+
** Design Competition Placement: 18th (778.33 / 1100 points)
** AutoNav Competition Placement:
+
** AutoNav Competition Placement: 9th
 
 
  
 
=== IGVC 2009 ===
 
=== IGVC 2009 ===
 
*Bot Version: Candiii
 
*Bot Version: Candiii
 
*Results:
 
*Results:
** Time:  
+
** Distance: 235 feet
** Design Competition Placement:
+
** Design Competition Placement: 21st (476.67 / 1100 points)
** AutoNav Competition Placement:
+
** AutoNav Competition Placement: 6th
  
 
= Versions =
 
= Versions =
Line 60: Line 43:
 
== Candi (V1.0) ==
 
== Candi (V1.0) ==
  
==== At Competition ====
+
=== At Competition ===
 +
 
 +
 
 +
 
 +
=== Mechanical Design & Issues ===
 +
 
 +
[[Image:Candi.jpg| 400px | Current design of Candi]]
 +
[[Image:Candiframe.JPG| 200 px | Frame]]
 +
 
 +
 
 +
Old BattleBots motors.
 +
A new frame is currently being fabricated from 1" square tubing. 
 +
New body will have front suspension and a giant ball caster in the rear.
 +
 
 +
 
 +
=== Electrical Design & Issues ===
 +
 
 +
[[Image:CandiElectronicsMap.png| 400px | A map of Candi's systems.]]
 +
[[Image:OptoInterface.png|thumb| Optoisolator interface.]]
 +
[[Image:ESTOP.png|thumb| E-Stop schematic.]]
 +
*Router: Motorola WR850GP
 +
** Hardware
 +
***[http://www.broadcom.com/products/Wireless-LAN/802.11-Wireless-LAN-Solutions/BCM4712 Broadcom 4712] @ 200MHz
 +
***Storage: 4MB Flash
 +
***Ram: 16MB
 +
***Wireless: Integrated Broadcom
 +
***Switch: ADM6996L (4 Port)
 +
***Serial: Two headers
 +
***Power: +12VDC, 0.5A
 +
** Software
 +
***OpenWrt (White Russian 0.9)
 +
****2.4.30 Kernel
 +
****Available Software
 +
*****[http://downloads.openwrt.org/whiterussian/packages/ Official Packages]
 +
*****[http://wiki.openwrt.org/OpenWrtDocs/Packages#head-8acb9bfe9c2fea25b98492919a153847e6a985e3 3rd Party Packages]
 +
*Monitor
 +
*Positioning system: [http://www.sparkfun.com/commerce/product_info.php?products_id=741 IMU 5 Degrees of Freedom]
 +
*Computer
 +
**Processor: Intel Pentium 4 CPU 2.40GHz
 +
**Physical Memory: 512 MB RAM
 +
**IDE Master
 +
***30GB ATA-5 4200RPM HD
 +
***File system partition = dev/hda2 18GB
 +
*Power System
 +
*Motor System (see Optoisolator interface diagram)
 +
 
 +
 
 +
=== Software Design & Issues ===
 +
 
 +
[[PlayerStage]]
  
==== Mechanical Issues & Improvements ====
+
[[Image:CandiProcess.png| 400px | Candi's process diagram.]]
  
==== Electrical Issues & Improvements ====
+
[[Code from Graduate Students]] - Restricted access (must be logged in to access)
  
==== Software Issues & Improvements ====
+
'''Path Planning Algorithms:'''
 +
[[USER:LoganS | Logan]] proposes that Robojackets consider the use of Support Vector Machine Path Planning as a method of creating an optical set of (x,y) waypoints that Candi may follow in order to dodge obstacles and follow lines. First, check out the wikipedia article on Support Vector Machines to help understand the theory.
  
 +
*[http://en.wikipedia.org/wiki/Support_vector_machine Support Vector Machine at Wikipedia]
 +
 +
Now, I have posted a paper that explains how this regression method is used in a larger algorithm to find best paths between two data sets. Have a look at it, but skip the first section where they explain the theory (it's the same information as Wikipedia, only a lot less understandable).
 +
 +
[[Image:SVMPP.pdf]]
 +
 +
As for implementation, we should look at/borrow from/use the SVMlight program - an implementation of SVM in C. Apparently it is quite optimized too (the people who wrote the nice paper used it for experiments). There is a link to it on the Wikipedia page.
 +
 +
'''Robot Vision:'''
 +
 +
There are two perspective transforms that need to be implemented, the rectilinearizing transform and the planar perspective transform.
 +
 +
*Rectilinearizing Transform
 +
*Simple in theory. Very hard to make work fast though. I have posted preliminary MATLAB code and am hoping to use vertex shaders to speed processing and autofill data gaps, but I don't know what hardware is available at the moment or how to write Cg.
 +
*Scratch that, I have an OpenGL [[:Image:Fixbarrelva0.zip|version]] working in C so the MATLAB one is unnecessary. Right now the OGL app is stand alone and only works on pictures named "pic.bmp" that are a 720x480 image in the bottom left corner of a 24bit 1024x1024 bmp image.  Included is the Cygwin makefile(should work on any system with glut in $INCLUDE but give a warning), the pic.bmp test image, and source. Press any key to quit the program. The source code is massive, so a good text editor will be needed to edit.
 +
 +
*Planar Perspective Transform: [[:Image:transform.v1.zip|Version 1.0]]
 +
*:Very simple and fast if data given in a convenient format. In development, I will post when I have a semistable implementation.
 +
 +
*'''''HOLY SH*T!!!'''''
 +
*:I went to the railroad today, took a picture with the camera, and dvgrabbed it back home.
 +
*:I was going to do some math and such, but then I thought, "What the hell, lets see what happens if I just stick it into the transform..." and''''' LOOK WHAT I SAW!''''':
 +
[[Image:Rail_In.jpg|200px]]--->[[Image:Rail_Out.jpg|350px]]
 +
*:'''''OGMWTFBBQ&HOW!'''''
 +
*:I knew it was good, but that is amazing!--[[User:Paul|Paul]] 11:32, 20 May 2007 (EDT)
  
 
== Candii (V2.0) ==
 
== Candii (V2.0) ==
  
==== At Competition ====
+
=== At Competition ===
 +
 
 +
 
 +
=== Mechanical Design & Issues ===
 +
The Power and Motor Drives System group seeks to provide adequate, stable power and motor drive systems for IGVC. These systems include: manual robot controls, electronics power supplies, PWM generators, power amplifiers, and power system parameter measuring devices (voltage and current).
  
==== Mechanical Issues & Improvements ====
+
Responsibilities:
 +
*new characterization of system power requirements
 +
*creation of a new, stable power supply
 +
*electrical system parameter feedback for intelligent power control (power cycling)
 +
** current/voltage measurement
 +
** system for automatically power cycling systems that need it
 +
*wireless/wired manual control systems
 +
** Joystick (possibly wireless)
 +
*motor-response-linearizing PWM generation
 +
*verification or redesign of emergency stop systems (button AND wireless)
 +
*motor driver software
  
==== Electrical Issues & Improvements ====
+
We are using [http://www.robotmarketplace.com/marketplace_gearmotors.html NPC-T74] motors.
  
==== Software Issues & Improvements ====
+
[[Image:Device Driver and Power Board Interactions.png|center]]
  
 +
 +
=== Electrical Design & Issues ===
 +
 +
[[Image:Candii_Component_Diagram.png | thumb | Diagram showing the flow of data between the various robot controller components]]
 +
 +
Needs correction:
 +
* GPS communicates over COM2(/dev/ttyS1)
 +
* Time server (NTP) runs on the TS board reading the Data Carrier Detect (DCD) line of COM2
 +
* Add: TS Board is running an NTP server to define robot time
 +
* Software modules should be included
 +
* Rename "Arduino" -> "Motor Arduino"
 +
* Add "Power Arduino"
 +
* Fix: Wheel Encoders will be communicating over SPI
 +
 +
 +
=== Software Design & Issues ===
 +
 +
Our code for this year is stored in Subversion and is accessible at [https://svn.robojackets.org/igvc/2008 https://svn.robojackets.org/igvc/2008]. The laptop codebase will be written in C++.
 +
 +
[[Image:igvcpp.png|thumb|right|480px|Path Planning Systems Architecture]]
 +
 +
'''Player/Stage:'''
 +
 +
We are using the [[PlayerStage|Player/Stage]] robot server as the communication layer between our device drivers and our processing/controlling software modules.
 +
 +
As we've used the Player server, occasionally we've needed to patch it to better suit our needs. Below are our custom patches:
 +
 +
* [[Player Patch - WaitForNewImage]]
 +
 +
We used various [[Data Filtering Systems]] to process data in our codebase.
 +
 +
'''Articles we used:'''
 +
* IEEE Xplore
 +
**http://www.library.gatech.edu:2048/login?url=http://ieeexplore.ieee.org
 +
* Lengyel, Reichert, Donald, and Greenberg. "Real-Time Robot Motion Planning Using Rasterizing Computer Graphics Hardware." Comp. Graph., Vol. 243, No. 4, pp. 327-335, 1990.
 +
**http://www.cs.dartmouth.edu/~brd/papers/siggraph/animation.pdf
 +
* Kimmel and Sethian. "Optimal Algorithm for Shape from Shading and Path Planning." J. of Math. Imaging and Vis., Vol 14, pp. 237-244, 2001.
 +
**http://www.cs.technion.ac.il/~ron/PAPERS/optimal_shading2001.ps.gz
 +
* Wiener and Mallot. 'Fine-to-Coarse' Route Planning and Navigation in Regionalized Environments. Max-Planck-Institute Biological Cybernetics. Technical Report TR-115, 2003.
 +
**http://wiki.robojackets.org/wiki/images/f/f2/WienerMallot.pdf
 +
* Kuffner. Efficient Optimal Search of Uniform-Cost Grids and Lattices. Proceedings IEEE/RSJ International Conference on Intelligent Robots and Systems, 2004. 1946-1950.
 +
**http://wiki.robojackets.com/wiki/images/e/eb/KuffnerOptimalSearch.pdf
 +
* Hassouna, Abdel-Hakim, Farag. "Robust Robotic Path Planning Using Level Sets." Proc. IEEE ICIP, pp 473-476, 2005.
 +
**http://www.cs.dartmouth.edu/~brd/papers/siggraph/animation.pdf
  
 
== Candiii (V3.0) ==
 
== Candiii (V3.0) ==
Line 84: Line 200:
 
=== At Competition ===
 
=== At Competition ===
  
=== Mechanical Issues & Improvements ===
+
 
 +
 
 +
=== Mechanical Design & Issues ===
 
Candiii's body has remained essentially the same for the last 2 years.
 
Candiii's body has remained essentially the same for the last 2 years.
  
=== Electrical Issues & Improvements ===
+
 
 +
=== Electrical Design & Issues ===
 
Candiii has two isolated power systems: one for the motors and one for the other electronics.
 
Candiii has two isolated power systems: one for the motors and one for the other electronics.
  
Line 99: Line 218:
 
*Motor currents
 
*Motor currents
  
=== Software Issues & Improvements ===
+
 
 +
=== Software Design & Issues ===
  
 
'''Localization and Mapping:'''
 
'''Localization and Mapping:'''
Line 108: Line 228:
 
**[[Media:Square Root SAM.pdf]]
 
**[[Media:Square Root SAM.pdf]]
  
'''Control:'''
+
'''Controls:'''
PI-Lead control(?)
+
*PI-Lead control(?)
joystick
+
*Joystick
  
 
= Additional Information =
 
= Additional Information =

Latest revision as of 17:53, 30 June 2019

Candi
Year Of Creation 2006-2007
Versions
Latest Revision Candiii
Revision Years 2007-2009
Information and Statistics
Farthest Distance 235 feet
Fastest Time NA
Highest Finish AutoNav 6th
Highest Finish Design 9th
Trixxie


Competitions

IGVC 2007

  • Bot Version: Candi
  • Results
    • Distance: 123 feet
    • Design Competition Placement: 9th (743 / 1100 points)
    • AutoNav Competition Placement: 7th

IGVC 2008

  • Bot Version: Candii
  • Results:
    • Distance: 185 feet
    • Design Competition Placement: 18th (778.33 / 1100 points)
    • AutoNav Competition Placement: 9th

IGVC 2009

  • Bot Version: Candiii
  • Results:
    • Distance: 235 feet
    • Design Competition Placement: 21st (476.67 / 1100 points)
    • AutoNav Competition Placement: 6th

Versions

Candi (V1.0)

At Competition

Mechanical Design & Issues

Current design of Candi Frame


Old BattleBots motors. A new frame is currently being fabricated from 1" square tubing. New body will have front suspension and a giant ball caster in the rear.


Electrical Design & Issues

A map of Candi's systems.

Optoisolator interface.
E-Stop schematic.
  • Router: Motorola WR850GP
    • Hardware
      • Broadcom 4712 @ 200MHz
      • Storage: 4MB Flash
      • Ram: 16MB
      • Wireless: Integrated Broadcom
      • Switch: ADM6996L (4 Port)
      • Serial: Two headers
      • Power: +12VDC, 0.5A
    • Software
  • Monitor
  • Positioning system: IMU 5 Degrees of Freedom
  • Computer
    • Processor: Intel Pentium 4 CPU 2.40GHz
    • Physical Memory: 512 MB RAM
    • IDE Master
      • 30GB ATA-5 4200RPM HD
      • File system partition = dev/hda2 18GB
  • Power System
  • Motor System (see Optoisolator interface diagram)


Software Design & Issues

PlayerStage

Candi's process diagram.

Code from Graduate Students - Restricted access (must be logged in to access)

Path Planning Algorithms: Logan proposes that Robojackets consider the use of Support Vector Machine Path Planning as a method of creating an optical set of (x,y) waypoints that Candi may follow in order to dodge obstacles and follow lines. First, check out the wikipedia article on Support Vector Machines to help understand the theory.

Now, I have posted a paper that explains how this regression method is used in a larger algorithm to find best paths between two data sets. Have a look at it, but skip the first section where they explain the theory (it's the same information as Wikipedia, only a lot less understandable).

File:SVMPP.pdf

As for implementation, we should look at/borrow from/use the SVMlight program - an implementation of SVM in C. Apparently it is quite optimized too (the people who wrote the nice paper used it for experiments). There is a link to it on the Wikipedia page.

Robot Vision:

There are two perspective transforms that need to be implemented, the rectilinearizing transform and the planar perspective transform.

  • Rectilinearizing Transform
  • Simple in theory. Very hard to make work fast though. I have posted preliminary MATLAB code and am hoping to use vertex shaders to speed processing and autofill data gaps, but I don't know what hardware is available at the moment or how to write Cg.
  • Scratch that, I have an OpenGL version working in C so the MATLAB one is unnecessary. Right now the OGL app is stand alone and only works on pictures named "pic.bmp" that are a 720x480 image in the bottom left corner of a 24bit 1024x1024 bmp image. Included is the Cygwin makefile(should work on any system with glut in $INCLUDE but give a warning), the pic.bmp test image, and source. Press any key to quit the program. The source code is massive, so a good text editor will be needed to edit.
  • Planar Perspective Transform: Version 1.0
    Very simple and fast if data given in a convenient format. In development, I will post when I have a semistable implementation.
  • HOLY SH*T!!!
    I went to the railroad today, took a picture with the camera, and dvgrabbed it back home.
    I was going to do some math and such, but then I thought, "What the hell, lets see what happens if I just stick it into the transform..." and LOOK WHAT I SAW!:

Rail In.jpg--->Rail Out.jpg

  • OGMWTFBBQ&HOW!
    I knew it was good, but that is amazing!--Paul 11:32, 20 May 2007 (EDT)

Candii (V2.0)

At Competition

Mechanical Design & Issues

The Power and Motor Drives System group seeks to provide adequate, stable power and motor drive systems for IGVC. These systems include: manual robot controls, electronics power supplies, PWM generators, power amplifiers, and power system parameter measuring devices (voltage and current).

Responsibilities:

  • new characterization of system power requirements
  • creation of a new, stable power supply
  • electrical system parameter feedback for intelligent power control (power cycling)
    • current/voltage measurement
    • system for automatically power cycling systems that need it
  • wireless/wired manual control systems
    • Joystick (possibly wireless)
  • motor-response-linearizing PWM generation
  • verification or redesign of emergency stop systems (button AND wireless)
  • motor driver software

We are using NPC-T74 motors.

Device Driver and Power Board Interactions.png


Electrical Design & Issues

Diagram showing the flow of data between the various robot controller components

Needs correction:

  • GPS communicates over COM2(/dev/ttyS1)
  • Time server (NTP) runs on the TS board reading the Data Carrier Detect (DCD) line of COM2
  • Add: TS Board is running an NTP server to define robot time
  • Software modules should be included
  • Rename "Arduino" -> "Motor Arduino"
  • Add "Power Arduino"
  • Fix: Wheel Encoders will be communicating over SPI


Software Design & Issues

Our code for this year is stored in Subversion and is accessible at https://svn.robojackets.org/igvc/2008. The laptop codebase will be written in C++.

Path Planning Systems Architecture

Player/Stage:

We are using the Player/Stage robot server as the communication layer between our device drivers and our processing/controlling software modules.

As we've used the Player server, occasionally we've needed to patch it to better suit our needs. Below are our custom patches:

We used various Data Filtering Systems to process data in our codebase.

Articles we used:

Candiii (V3.0)

At Competition

Mechanical Design & Issues

Candiii's body has remained essentially the same for the last 2 years.


Electrical Design & Issues

Candiii has two isolated power systems: one for the motors and one for the other electronics.

Other Electronics:

  • Camera
  • LIDAR
  • IMU
  • GPS
  • Compass
  • Motor encoders
  • Motor currents


Software Design & Issues

Localization and Mapping:

Controls:

  • PI-Lead control(?)
  • Joystick

Additional Information

Team Members

Gallery