Update 1/27/2009¶Goals for 2009
- Charge Station
- I2C - Be able to send arbitrary character from master and receive on designated slave bay
- Token Ring - Receive wireless packet and forward over I2C to appropriate bay
- Scheduler/Urinal Algorithm - receive request to charge, determine if serviceable, and send response
- Full Recharge Cycle
- Receive request to charge
- Send response to robot
- BOM/Beacon homing
- Wait for charge to complete
- Reset cycle when robot charge complete
- Charge Board
- Measure Things - report following with reasonably low noise
- 12V detect
- Current Regulation - vary resistance of E-Load, current should stabilize within a second
- Charge Termination - test all normal and emergency charge termination conditions
- Full Cycle
- Forward homing information
- Report 12V contact
- Regulate charge until termination
- Report charging complete to robot
- Measure Things - report following with reasonably low noise
Big brainstorming session for new charging bay design. People broke up into mechanical/electrical/software
groups. See attached picture of whiteboard.
- EAGLE Layout Editor
- AVR-LIBC: Atmel C library reference
- Awesome Microcontroller Tutorial
- EAGLE library with the Atmega164 layout
- Download this and unzip it to your /eagle/lib/ directory
The Autonomous Recharging process consists of 4 main functions: task scheduling, seeking, battery charging regulation, and charging station management. Wireless communication, BOM locating, and I2C communication are integral components to these functions.
The task scheduling, which is managed by the Scheduler Finite State Machine (FSM), encompasses the entire autonomous recharging process. The code in the schedule is designed to be modular enough to incorporate a variety of tasks while still maintaining the wireless network and monitoring the battery level. If the battery level ever falls below a certain threshold, the Scheduler FSM moves from the task to the Charging FSM, which manages the charging process. Currently, the task is the smart-run-around behavior which implements basic obstacle avoidance using the five Sharp IR rangefinders each robot is equipped with.
Within the Charging FSM, there are multiple states which handle all aspects of the charging process, including the different modes of communication with the charging station, the different seeking methods, and the actual charging itself. When the robot requests a bay from the station, for example, the station can accept or deny the robot's request - depending on whether or not another robot is currently seeking the station - and the robot must enter the correct state and wait until the station is available. Similarly, there are also states to ensure successful communication and negotiation between the robot and the station when the robot is in the act of either docking or leaving the station.
Once stable communication with the station has been established, the robot enters into the seeking states, where it uses a combination of the BOM and homing sensor to navigate its way to the charging station. In the BOM-seeking state, the robot converts the reading from the station's BOM-flash into the angular velocity it needs to turn towards the station. Once seeking with the BOM gets the robot within range of the beacons on the station, the Charging FSM moves into seeking with the homing sensor. The sensor, which is connected via the charge board, is an infrared detector that receives IR pulses from the emmitted by two modulated IR LEDs (beacons) on the charging station. In this state, the charge board reads and sends this homing data over I2C to the Dragonfly, allowing the robot to adjust its alignment with the station accordingly. During all seeking, the Dragonfly monitors I2C packets coming in from the charge board so that it can stop once it successfully makes physical contact with the station.
When the robot reaches the station and begins charging, the Charging FSM moves into the charging state, which monitors I2C packets, looking for a contact error or a full battery. If the charge board senses an error, meaning that the robot has lost physical contact with the charging station, the robot begins seeking again in order to reacquire contact with the station. In the case of a full battery, the robot initiates the leaving sequence, where it backs out of the contacts and out of the way of any other robot seeking the station at the time.
Charging Station Management
Physically, the charging station is a set of bays, each one equipped with charging contacts mounted to fit securely to the charging pads on the robots. Each bay also has a seciton of BOM emitters and two homing beacons to be used by seeking robots. The wireless communication between the charging station and the robots operates within the established token ring topology - whenever a robot needs to talk with the charging station, it holds the token while waiting for a response before passing the token on to the next robot in the ring. In this implementation, the charging station itself does not become part of the token ring, and instead only talks over the wireless whenever a robot first initiates contact.
When the station receives a charge request from a robot, it first checks the bays to see if there are any free. If there are no free bays, the robot is denied, and it must wait for a bay to open up. If there is a bay open, however, the station will allocate that bay to the robot using the robot's ID number within the token ring. To avoid potential collisions and confusion, the station ensures that only one robot is ever seeking at one time. Accordingly, if there is already another robot seeking, the requesting robot must wait until the first robot has reached the station before beginning to navigate to its allocated bay. Whenever a robot arrives at or leaves the charging station, the station exchanges acknowledgments wirelessly and maintains information internally, allowing for proper management of its bays.
In order to minimize robot collisions, the station uses a bay allocation algorithm that assigns bays based on the amount of space to either side. That is, when a robot requests a charge, the station analyzes the state of each bay and attempts to assign that robot to the bay furthest away from any other occupied bay.
The Autonomous Recharging process consists of 4 main functions: task scheduling, charging station management, seeking, and battery charging regulation. Wireless communication, BOM locating, and I2C communication are integral components to these functions.
Task scheduling encompasses the entire autonomous recharging process. The scheduler is designed to be modular enough to incorporate a variety of tasks while still maintaining the wireless network and monitoring the battery level. If ever the battery level falls below a certain threshold, the scheduler will remove the remove from its current task and begin the charging process. The scheduler also maintains states within the charging process (waiting for charging station, seeking with BOM, seeking with homing sensor, recharging) and is responsible for communicating via I2C with the battery charging circuit. If the robot ever loses contact with the charging station or the robot finishes recharging, the scheduler manages how the exception is handled and tasks the robot accordingly.
The current task being used that is not related to the Autonomous Recharging process is smart run around. It is essentially a wall avoidance behavior.
Charging Station Management
Wireless communication operates within the established token ring topology currently being used by colony robots. Most of the work here has involved designing and implementing a protocol for communication between robots and the charging station. The current implementation involves a robot holding the token while requesting access to the charging station. The requesting robot sends out a CHARGE_REQUEST error packet which if received, is responded with an ACCEPT or DENY packet from a nearby charging station. Based on the charging station response (or lack thereof) the robot begins the appropriate behavior, usually locating & homing or waiting for the next available charging station docking bay. Regardless of whether or not the response is received, the requesting robot eventually passes the token the next robot to ensure the wireless network continues.
The response packet sent by the charging station depends its current status in terms of how many robots have docked and how many robots have reserved a docking bay at the station. If all of the charging station's bays are full or reserved, the charging station will deny further charge requests, otherwise it will accept.
The current implementation of charging station management assumes only one available docking bay. This is a temporary limitation; each charging station can potentially dock 4 robots simultaneously, but the robots must have the ability to avoid other docked robots before the number of bays can be expanded.
Once a requesting robot receives an ACCEPT response from a charging station, it begins to locate and move towards the corresponding charging station. In its advanced form, locating will include cooperative pathfinding, but as it is currently implemented, locating is limited to BOM line-of-sight between the robot and the charging station. Since BOM locating is integrated with wireless communication, locating the charging station operates much like requesting access to the charging station. A robot seeking a charging station will periodically send a CHARGE_REQUEST which will usually be responded to with ACCEPT. In between wireless communication, the robot and charging station respectively flash their BOM sensors, allowing the robot to locate its orientation relative to the charging station and vice versa. In its advanced form, the robot will be able to use this information to avoid other docked robots and move to the appropriate docking bay. As it is, the robot current heads straight in the direction of the charging station.
Once the robot is close enough to the charging station, the robot switches from using BOM locating to using its homing sensor. The homing sensor is an infrared detector that receives IR pulses emitted two IR LEDs from the charging station. By interpreting the pulse width from the resultant pulse wave, the robot can more accurately determine its orientation to the charging station and make minute adjustments until it makes contact with the charging station. Once contact is made, the robot stops seeking and begins to monitor the battery charging status via I2C.
Battery Charging Regulation
Battery Charging is handled by a daughterboard that regulates the current flowing into the battery by monitoring battery voltage and temperature. The charging circuit allows fast charging with NiMH batteries as well as trickle charge when the batteries are full. In addition, the charging circuit updates the scheduler on the robot with current charging status via I2C. When contact is made, the appropriate I2C message is sent notifying the robot and similarly when the batteries are full.
The charging circuit is currently the roadblock to demonstrating working autonomous recharging. Although I2C communication with the robot works fine, the circuit is not effectively regulating current coming into the battery.Brief
- charging station
- run around
- charging circuit
o current regulation
- bay allocation
- coop pathfinding
Our goal is to create a robot colony which is able to work together to perform a long-term task, on the scale of weeks. Because of the duration of the task, the batteries will run out long before the task is complete. Hence, it is necessary to implement a system for recharging so that the robots may be self-sufficient.
This requires a two pronged effort - design and implementation of the charging system, and the programming of the necessary communication infrastructure and guidance systems between the robots and the charging station.Groups