RoboCup Software 2009

From GT RoboJackets

Jump to: navigation, search

Contents

Overview

RoboCup Software encompasses all parts of the system that run on a host machine (not the robots). The entire software system is composed of both the components we play soccer and compete with as well as a sort of SDK that allows new components to be written quickly for idea and system testing.

Systems

This describes the various software components. This is not necessarily a development organization, only a logical one.

Standalone

These are standalone systems that can be run without being integrated into a parent framework or environment.

Soccer 
Soccer Engine. Instantiates modules and gameplay.
Simulator 
Soccer Simulator. Simulates a game environment as well as the vision and radio components
Vision  
Global Vision used to identify and locate robots.
Referee 
SSL Referee
Radio 
Radio communication with on-field robots
Log Player 
GUI frontend for the logging module. Playback of logged data
Motion Test App 
App for testing low-level motion control and hardware drive capabilities

Modules

Modules are components that cannot be run immediately on their own and require a framework to support their needs.

World Modeling 
Develops models of the world based on available information from multiple systems
Soccer 
Plays and Behaviors. Play selection and behavior definitions.
Motion 
Low level robot planning and motion control
Logger 
data logging module

Frameworks

Frameworks are the glue for modules. They define how modules can share data with other modules as well as how a typical module can operate. Frameworks also provide common code which various modules can use.

Common, Utils, and Config

Amongst all parts of system there are some common pieces of code that are used

Config File 
Contains system data that doesn't vary between matches but rather between hardware and environment
Module Development 
Information about writing a module for the system

Architecture

Development

To get started with development, take a look at the RoboCup Bazaar Guide

Identification

There are three forms of identification

Shell 
A unique number is assigned to each shell [0...15]
Assembly/Board 
An entire robot is composed of the electronics and the mechanical base. This assembly takes the ID of the board under which it is controlled
Player 
Software only number for the player [0...4]
  • Vision maps from Image -> Shell
  • World Model maps from Shell -> Player
  • Radio maps from Player -> Assembly/Board

Calibration

  • Calibration is identified by the Assembly/Board that was calibrated.
  • Invalidated when any part of the Assembly/Board are changed or disassembled.
    • This includes swapping electronics, as kicking/chipping calibration may be wrong after that

Plans

  • Parameter extraction and estimation
  • Ability to switch which side of field
  • Burn-in tests/stress
  • World model/Data filtering/prediction
    • Probabilistic sensing
  • Integration/communication
  • Timing/Profiling of how our system works
  • Motion control
    • Analysis of Current Position Controller
  • Calibration
  • SW test for hardware performance
  • Use tech challenges as a springboard

Tasks

List of small project based tasks to be completed

  • Write new Referee program
  • Develop a control loop debugging app and possible auto-tune procedure

Fixes

  • (Stop and Halt) should cause new play selection
  • Rework STP architecture, skills = tactics

Notes

  • fast loop and slow loop (need to add in framework) (separate threads)
  • slow is triggered by something, gets copy of data, runs for indeterminate amount of time, needs to give data to planning so that it gets used on the next frame (double buffer like)
  • whatever uses the output of gameplay is holding a mutex the whole time it does processes, thus gameplay cannot change motion commands while motion control is running...this prevents gameplay from running while motion control is running. This makes data copied when it gets copied
  • mutex is held only to copy data
Personal tools