User:PWeclewski: Difference between revisions

From Octave
Jump to navigation Jump to search
Line 72: Line 72:
== Y: Your task ==
== Y: Your task ==
* Did you select a task from our list of proposals and ideas?
* Did you select a task from our list of proposals and ideas?
** What task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information.<br/>[[GSoC_Project_Ideas#RSB_Octave_interface|GSoC_Project_Ideas --> RSB_Octave_interface]]<br/>In this project I would like to provide ROS interface for Octave, what allows to work octave projects with hardware. ROS provides a huge set of drivers and methods for controlling robotics hardware and acquire data from it. On the other hand Octave is a powerful and efficient tool for complex mathematics computation. Many times I observed that many of researchers implement theirs algorithms in matlab and when everything works properly they re-implement this methods to e.g. C++ for integration with rest of the system and hardware. Of course it wastes their time. Taking into account fact that ROS is a distributed system with standardized data exchange method, providing of considered communication interface looks like natural way to enhance Octave functionality for facilitate and accelerate work of researchers.  
** What task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information.<br/>[[GSoC_Project_Ideas#RSB_Octave_interface|GSoC_Project_Ideas --> RSB_Octave_interface]] (I can handle also [[http://wiki.octave.org/GSoC_Project_Ideas#Low-Level_I.2FO|GSoC_Project_Ideas --> Lo-level I/O]])<br/>In this project I would like to provide ROS interface for Octave, what allows to work octave projects with hardware. ROS provides a huge set of drivers and methods for controlling robotics hardware and acquire data from it. On the other hand Octave is a powerful and efficient tool for complex mathematics computation. Many times I observed that many of researchers implement theirs algorithms in matlab and when everything works properly they re-implement this methods to e.g. C++ for integration with rest of the system and hardware. Of course it wastes their time. Taking into account fact that ROS is a distributed system with standardized data exchange method, providing of considered communication interface looks like natural way to enhance Octave functionality for facilitate and accelerate work of researchers.  
* Please provide a rough estimated timeline for your work on the task.<br/>  
* Please provide a rough estimated timeline for your work on the task.<br/>  
{| class="wikitable"
{| class="wikitable"

Revision as of 23:38, 27 July 2012

My application

A: An introduction

  • Please describe yourself in three sentences, one of them regarding your current studies.
    I am final year, master-degree student at Warsaw University of Technology, Poland. Since 2nd year of my studies (at faculty of mechatronics majoring in robotics and automation) I became interested in mobile and space robotics. I am active student, engineer and researcher in field of my interests.
  • Which languages do you speak?
    • Polish (native)
    • English
  • What's your overall background?
    • robotics (mainly mobile robotics)
    • AI techniques
    • space engineering
  • Why do you want to participate in the ESA Summer of Code in Space? What do you hope to gain by doing so?
    I am applying to this program first time. I would like to improve my skills in field of software engineering. I know that I need to gain some experience working in non-university environment. Also I hope that my work could enhance and facilitate the development of robotics projects. Additionally, this program is managed by ESA what will be a good point in my references and for my future plans.
  • Why are you choosing Octave?
    • Why octave software?
      First time, I used Octave software for the Machine Learning course form coursera.org. I discover that Octave is a good, free and open-source alternative for Matlab with which I was working during my undergraduate studies.
    • Why Octave project?
      I was surprised that in ESA Summer of Code in Space proposals I find only this one project related to robotics and only 2 more related with hardware. This project meets my interests and is related to software useful for the robotics research.

C: Contact

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
    PWeclewski
  • Which time zone do you live in? Will that change over SoCiS duration?
    UTC+1 (first half of September and from October UTC+2)
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
    I usually code from 9:00 (sometimes from 7:00) to 17:00 and sometimes at night ;)

E: Coding experience

This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)

  • Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
    • C++
      my main programming language, very good knowledge of language and object oriented programming, experience in working with undocumented code and writing documentation (doxygen etc.), using external libraries, code developing for low-level (hardware communication etc.) and hi-level (system programming, ROS packages) projects
    • Matlab
      a lot of scripts/projects for practical courses during studies in the fields of signal processing, theory of automatic control, numerical methods, mechanics modeling etc.
    • Octave
      mainly as a handy tool for hardest problems (exceeding functionality of simple calc/excel formulas or system calculator - vector/matrix operations simple scripts), several simple scripts for Machine Learning course (coursera.org)
    • OpenGL
      no good knowledge, once an application for visualizing 3d point clouds
    • Qt
      basic knowledge, simple GUIs
  • Please describe your experience with other programming languages.
    • C
      good knowledge, in use for older libraries and micro-controllers etc.
    • Python, Java, PHP, HTML, JavaScript, assembler
      basic knowledge, simple programs/projects
    • C#, MS VS 2010
      application for automotive company for sniffing and visualizing data exchanged through CAN network, several other simple applications
    • work with hardware - micro-controllers (C), communication via RS232/485, CAN, parallel port
  • Please describe your experience with being in a development team.
    My experience is based on cooperating with other programmers but only in universities and scientific environments. Sometimes work in project for client outside university. I work with both: fresh students and people with experience in software companies. I also have some experience with remote work.
  • Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.
    • Software for all-terrain mobile base - year-long project for Institute of Fundamental Technological Research at Polish Academy of Sciences.
      The project consisted three main parts:
      • provide of generic driver for mobile robot - write an universal driver for communicating, controlling, diagnosing etc. for wheeled robot,
      • connect driver to ROS system and do tests - write set of ROS packages to exchange data and control platform under ROS system,
      • prepare navigation framework based on ROS packages for future research work - configure, prepare, test and write documentation for autonomous navigation under ROS

I was responsible for whole project and I worked on it alone. This was my first big programming project and I learned how I should not program, how I should not write a code, how I should not work with code etc. but finally everything worked fine.

    • re-implementation of existing navigation system - Surrey Space Center
      project was aimed to re-implement of messy software using to research and connect it to ROS system. During this project I had to recreate structure basing on undocumented parts of code, provide generic structures for data exchange, do tests and write documentation for whole software structure. I improve my coding style, I learned better how to work with undocumented code and how to implement generic, efficient data exchange. There I worked with people responsible for old code who were discussing with me concepts of new implementation.
  • Please state the commits and patches you already contributed to Octave.
    none

F: Feeling fine

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists
      IRC - I do not use but I think, it is not a problem to start using; mailing lists - everyday communication
    • Mercurial or other source code management systems
      In my everyday work I use git. In the past I used svn. No experience with mercurial and administration (advanced operations) with any of these systems.
    • Mediawiki or other wiki software
      User and editor experience mainly with DokuWiki. No experience in administration.
    • make, gcc, gdb or other development tools
      Basic use of make, gcc, gdb for everyday programming (sometimes googling for more complex solutions :)). In the past some work with make tools, ./configure scripts to using Player/Stage/Gazebo project. Work with NetBeans, Eclipse, MS VS 2010, Qt creator IDEs, doxygen and some specific tools for systems like ROS.
  • What will make you actively stay in our community after this SoCiS is over?
    Maybe future plans for development tools and libraries for robotics :)

O: Only out of interest

  • Did you ever hear about Octave before?
    • If so, when and where? How far have you been involved already?
      First time I use Octave in Machine Learning course from coursera.org. There was a few scripts to write with using of basic functionality. Now only as a tool for matrix computation etc.
    • If not, where would you expect or advise us to do advertising?
      Octave should be better known in early academic teaching. Universities buy Matlab and never use its advanced functionality for teaching. People also do not take Octave under consideration in research work because of lack of knowledge about alternatives to Matlab.
  • What was the first question concerning Octave you could not find an answer to rather quickly?
    do not know

P: Prerequisites

  • Please state the operating system you work with.
    Currently I work on Ubuntu 12.04. Sometimes I use Windows7 or Ubuntu 10.04 on VirtualBox.
  • Please estimate an average time per day you will be able to access an internet connection, a computer, a computer with your progressing work on
    10-16h a day
  • Please describe the degree up to which you can install new software on computers you have access to.
    no problem

S: Self-assessment

  • Please describe how useful criticism looks from your point of view as committing student.
    Useful criticism is very important but people who give it should know how to do this. Its directness and strength should be considered and adapted to situation and relations between people.
  • How autonomous are you when developing?
    • Do you like to discuss changes intensively and not start coding until you know what you want to do?
      I really like to know how code should work, what the inputs and outputs are. Until I start coding I try to draw some kind of data flow chart to understand how data should flow and what is a role of code parts. When I discuss this step I think what methods I should use, how pass data, which elements should be separated. Each of these steps needs approval and cast aside doubts. If I have a possibility to discuss this with somebody with grader experience, it is great.
    • Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?
      Sometimes this kind of thoughts comes but then I try to revise diagrams and find week points of "new idea". When I am sure that it could be useful I like to discuss this with somebody.

Y: Your task

  • Did you select a task from our list of proposals and ideas?
    • What task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information.
      GSoC_Project_Ideas --> RSB_Octave_interface (I can handle also [--> Lo-level I/O])
      In this project I would like to provide ROS interface for Octave, what allows to work octave projects with hardware. ROS provides a huge set of drivers and methods for controlling robotics hardware and acquire data from it. On the other hand Octave is a powerful and efficient tool for complex mathematics computation. Many times I observed that many of researchers implement theirs algorithms in matlab and when everything works properly they re-implement this methods to e.g. C++ for integration with rest of the system and hardware. Of course it wastes their time. Taking into account fact that ROS is a distributed system with standardized data exchange method, providing of considered communication interface looks like natural way to enhance Octave functionality for facilitate and accelerate work of researchers.
  • Please provide a rough estimated timeline for your work on the task.
01/08 Coding period starts - discussion about project details and work schedule
02/08 Going through the codes of SRB and example of Octave "plug-in", identifying of work parts,
module structure, data flow, methods and gaps in knowledge.
familiarizing with tools, installing SW.
13/08 End of initial discussions, work on project (maybe earlier)
01/09 First revision - first functionality
10/09 - 14/09 Exams - non-coding time
14/09 Mid-term
28/09 Second revision: Planned functionality, tests...
07/10 Finish Tests, Writing documentation, examples etc.
mid/10 If there won't be delays/bugs - time to improvements, otherwise time for fixes
28/10 Coding period ends