Title: StateSpace Control and Python Bindings for the Amphibious AQUA robot
1State-Space Control and Python Bindings for the
Amphibious AQUA robot
- by
- Gabriel Charette
- supervised by Gregory Dudek
2Outline
- Problem description, goal, motivation
- Control system infrastructure
- State-space control, a new concept
- Experiments
- Future work
- Conclusion
3Problem Description
- Complex Application Programming Interface(API)
needed to control the robot - Hard to add new features to the API without prior
knowledge - API depends on a lot of external libraries
4Goal
- Wrap the current API
- Provide access to all of the robot's control
functions (roll, pitch, yaw, ...) - Provide access to all of the robot's outputs
(inertial measurement units (IMUs), cameras, ...)
5Motivation
- Provide ability to write scripts controlling the
robot at a high abstraction level - Provide ability to add to the current system
without modifying it - Provide a user-friendly system to control the
robot and receive feedback from it.
6Related Work
- SWIG, C to Python Wrapper, www.swig.org
- Mobile Robotics Lab
- A Vision-based Control and Interaction Framework
for a Legged Underwater Robot - Junaed Sattar and Gregory Dudek
- Proceedings of the Sixth Canadian Conference on
Robot Vision (CRV), May 2009, Kelowna, BC,
Canada, pages 329-336 - Aqua An Amphibious Autonomous Robot
- Gregory Dudek, Philippe Giguere, Chris Prahacs,
Shane Saunderson, Junaed Sattar, and Luz-Abril
Torres-Mendez, McGill University, Michael Jenkin,
Andrew German, Andrew Hogue, Arlene Ripsman, and
Jim Zacher, York University, Evangelos Milios,
Hui Liu , and Pifu Zhang, Dalhousie University,
Martin Buehler, Boston Dynamics, Christina
Georgiades, MathWorks. - A Visual Language for Robot Control and
Programming A Human-Interface Study - Gregory Dudek, Junaed Sattar, Anqie Xu
7Choosing a language why Python?
- Very modern high-level programming language
- No need for compilation (easy to quick fix small
bugs in the field) - Highly-portable
- Different operating systems
- Two operating systems on board
8Control System Infrastructure
System Independent Interface
Any Offboard Script Python
Any Script Python
PathGenerator Python
robocontrol module Python module
PathGenerator GUI Python
RoboControl Server Python
robomodule visionmodule C wrapper Python
module
robochat_module Human-Robot Control Interface C
wrapper Python module
VisionSandBox C
RoboDevel C
Robot Machine
Offboard
Onboard
9Path Generator
10State-Space Programming
- A new programming paradigm!
- Code executed based on state and position in
space rather than following the regular flow - Global vs local script
11State-Space Control
- Allows for important tests to be made before
continuing with path - Allows to load a new path on a given state-space
event - Allows for manipulation of control components
such as speed depending on situation faced at a
particular node
12Python Robot Control Live
- Successfully controlled AQUA using python ONLY!
- Robot controlled from python prompt using
robomodule directly - Robot controlled from internet using TCP
communication with robocontrol_server through the
robocontrol python module
13State-Space Control - Experiment
- On end of path, take left or right depending on
power status - Proof of concept
- Tested live in water
14Live Test - Video
15Future Work
- Add more functionality to the different modules
used by the robocontrol server - Immediately benefits the top layer
- Provide GPS to the robot
- Add precision to the path generator
- Allow for state-space control anywhere
- Implement this control system in other robots
- Easy as top layer is only python dependent!
16Conclusion
- Built a new user-friendly API to control AQUA
- Highly flexible and portable system
- New programming paradigm state-space control
- All validated both in laboratory and on field!
17Some code comparison!
In VisionSandbox or RoboDevel??
State-Space Control Path Code
- It would take at least 100 lines of code to do
this in VisionSandbox - It would be incredibly painful to do this in
RoboDevel
- global i
- takePicture("Pictures/picd.jpg" (i))
- ii1
- -!!-
- -2.82,3.28,0
- -!!-
- 2.72,3.06,0
- -!!-
- -2.76,-2.66,0
- -!!-
- 2.94,-3.12,0
- -!!-
- 0.04,-0.04,0
- -!!-
- Note This is generated by GUI too!!