I chose the task of making a GUI tool for controller tuning in systems, I want to focus on having the basic functionality of adding poles to the compensator and making dragging of these poles possible from the rlocus plot itself, as well as moving the closed loop poles along the root locus line, and have the gain of the controller updated automatically in a way similar to rltool in Matlab.

I chose the task of making a GUI tool for controller tuning in systems, I want to focus on having the basic functionality of adding poles to the compensator and making dragging of these poles possible from the rlocus plot itself, as well as moving the closed loop poles along the root locus line, and have the gain of the controller updated automatically in a way similar to rltool in Matlab.

+

+

Rough timeline:

+

+

*Defining and implementing the interface to drag poles and update the plots for rlocus, step response and bode plots. (deciding how every window will appear, menu items or buttons, and making the plots update automatically when a change in the position of poles happens).

+

*Adding new poles to the rlocus plot by clicking on the figure with the mouse and making the related plots update automatically.

+

*Making possible to set numerically the values for the controller and display the related transfer function.

Revision as of 17:12, 20 March 2014

Contents

A: An introduction

I'm studying electrical engineering in Mexico, I like to create things and I give a lot of importance to understanding really well the underlying concepts of things I do.

I have completed 2 courses on control theory and currently I am working in a practical lab project, I also have completed several programming courses in Python and C, and used Matlab for control systems and digital signal processing. I speak Spanish and English, and have taken several college courses in english too.

I want to participate in Google Summer of Code because I like the open development process of free software and I want to contribute to it, I am also interested in learning how to work on a really complex collaborative work environment. So far i have not participated in any Google Summer of Code but I have read about past years experiences and I feel now I can make part of it.

I think Octave could be a really good alternative to Matlab, I would like to use it in my own projects but it still needs some work in controller design interfaces which are the ones I use the most in Matlab, now I think I can help improve this aspect of the software for others to use.

C: Contact

My IRC username is santileortiz, my timezone is UTC/GMT -6, DST adjustment will happen on April 6 before the beginning of GSoC. I usually work from 10 o 11 up until late night, but if this is a problem I might schedule other time.

E: Coding experience

I have used m-scripts in digital signal processing and control courses, I know the basics of function declaration, loops and array manipulations, I know how to read the documentation so I think I could find my way around learning new functions to be used in my code. I have used C++ for a project that uses ROS operating system, and know how object oriented programming works, but I am still fairly new to the syntax of the language. I have not used OpenGL or Qt but I am really looking forward on learning both of them.

I took 2 courses on programming in Java, and have used C extensively for programming several microcontrollers, I also have taken several courses in which I have studied Python including the online MIT introductory programming course found on EdX.

So far most of the collaborative projects I've worked on have been for university courses. Besides this I belong to the rescue robot team of the university where we use ROS and try to keep a well documented repository of our source code by using Git and be as open as possible about the repository. As far as open source goes I have not participated on any team, but this is some of the things I am mostly looking forward about participating in GSoC, I'd really like to learn new collaborative work schemes and bring them to my own projects like the rescue robot team.

I think the biggest project I have worked for might be the rescue robot team, from it I learned the importance of well documented code in projects where other people needs to understand and review your code. I also learned the importance of communication among the team and constant group meetings to update others about everyone's work. Most of the work we have done has been to improve the odometry algorithm to finally accomplish SLAM on it, the project involves programming in C++ and also C for embedded systems, right now we are migrating to a new microcontroller for faster data acquisition and I am in charge of the communication to the computer inside the robot. In the past most of my work has been to design the electronic system that serves the robot.

F: Feeling fine

I have used IRC before, most of the times on the freenode webchat, I have used mercurial only to download source code of other programs but I have used git with github before from the command line. I do not know much about Mediawiki besides reading and editing some page. I often install software by compiling it by using make but I have not used autotools for a completely new project. I know the basics of gdb, but most of the time I have used graphical IDE software like Eclipse or MPLAB, but I am comfortable using command line interfaces too, as an editor I have used vim and Emacs before I use the first one as my main python developing tool.

I really want to get involved in the open source community, I have already used a lot of tools from it and i now want to give back some of it, I think GSoC can be a really good motivation to contribute to it but I will still use open source software and try to help make it better.

O: Only out of interest

Yes I've seen it being constantly used as a free alternative to Matlab in online courses found in Coursera. I had read about it before while looking myself for an alternative to Matlab.

I know most of the people were really lost at first because of the lack of GUI I hope this changes with the most recent releases of the software.

P: Prerequisites

I own a personal computer where I use Ubuntu 12.04 and windows XP (both of them run natively), I have full access to both of them, and I also have Administrator privileges on both. I have an internet connection at home but it can be slow at times, I can keep my work on this computer and get internet access on it too.

S: Self-assessment

I think criticism is really important to make good work, one person cannot think about every possibility most of the times I like to tell my ideas to other people before implementing them to get opinions from another point of view and maybe find potential failures before they happen. When implementing solutions I can find answers in documentation by myself.

I prefer to have a precise idea of what I will do before starting to develop it, but I think a lot of problems of the design are not known beforehand so I think not everything can be planned I am willing to change fundamental things in my code if the situation needs it but I usually don't like to start coding without having idea of what I want to accomplish. Starting programs with small proofs can help but I think having an idea of the program as a whole is very important.

Y: Task

I chose the task of making a GUI tool for controller tuning in systems, I want to focus on having the basic functionality of adding poles to the compensator and making dragging of these poles possible from the rlocus plot itself, as well as moving the closed loop poles along the root locus line, and have the gain of the controller updated automatically in a way similar to rltool in Matlab.

Rough timeline:

Defining and implementing the interface to drag poles and update the plots for rlocus, step response and bode plots. (deciding how every window will appear, menu items or buttons, and making the plots update automatically when a change in the position of poles happens).

Adding new poles to the rlocus plot by clicking on the figure with the mouse and making the related plots update automatically.

Making possible to set numerically the values for the controller and display the related transfer function.