Subscribe via Email

Sunday, January 8, 2017

First Week of Work: Setting Up a Working Work Environment

technical: Directed to those in CS/Robotics/etc. General reader may still keep up.
It has been 1 week in the lab now! Err, well, I guess this only refers to 1 week of this work term. I've been in the AALAB since September 2015; but my position is a lot different.

Robots from autonomous agents laboratory University of manitoba
The robot after FIRA 2016 (coming back from China)


My goal in this work term is to hone in on an academic focus, pursue that focus, and yield publishable results. My professor (John Anderson) has given me some time this week to settle in and explore possible topics. 

Kyle Morris Workstation Autonomous Agent's Laboratory University of Manitoba
My workstation for the term.





There is a noticeable difference this term compared to previous ones. While in Taiwan, the environment was new, everything was new, and most of my time was spent absorbing everything. Being at the lab this term allows me to put all of my focus on direct work. Furthermore, over the last few months, I've noticed a lot more of the responsibility is falling on my end in terms of deadline management & planning. Supervisors are giving me the chance to propose ideas, and follow up on those ideas with working solutions. I didn't realize until now just how much things have changed in only a single year... Reading some of my older blog entries reveals this. Progress is fun!

Academic Focus
I've been supplied with the notes from my professors graduate course (Multiagent Systems). There are lots of readings, so I'm focusing on those in the morning when my energy is high. The main textbook is "Multiagent Systems", and there are many papers corresponding to the chapters that I'm encouraged to read. Since reading academic papers is relatively new to me, I've been following Keshav's guide in order to make the process more efficient.

In a later blog post I'll review some material from the book, and outline the topics that have interested me. I obviously can't read all of it, but I'll select some key ideas.

Aside from main readings, I'm also exploring thesis' from graduate students at the University of Manitoba. These are recent, coherent, and insightful publications that offer many possibilities for extension and future work.

Skills/Application
A workterm would be odd if I spent all my time reading and no time doing. Naturally I'll have to develop some hands on skills that can be used to implement and present my ideas. As such, I will be exploring the Player/Stage software.

Player + Stage for Simulation
Player and Stage are two separate components that work together to simulate and operate mobile units.. I'll briefly outline them here.

Player
The Player Project provides software with an interface to easily connect with robot hardware (sensors/etc). This means we (as the developers) don't have to worry about the specific hardware details for each robot. Instead, we send our generic requests to the Player server, which then communicates with hardware for us. Abstraction is a fundamental part of computer science. I didn't truly realize how much so, until I began working on robotics.

There would be no way for new researchers like myself, to pick up decades worth of skills in order to understand every intricate detail of every piece of hardware we use, just so we could make a roomba navigate through a hallway. 

The abstraction is built using Driver's & Interfaces to create Devices.
Here is a great resource for understanding this, and my summary here is based on it.
Driver: This is code that directly communicates with a robot. Ie the low level stuff to actually read/write bytes of data to and from hardware.

Interface: This is a software level idea. Many pieces of hardware provide similar functionality (ex: the ability to read() which returns some byte value). An interface groups various hardware components under some common functionality, and presents it to software developers in an organized fashion. If you've used C++/C, then this is trivial. This is an interface outlining a laser. We don't need to care about what type of exact laser is on the robot, we just know any laser will provide these abilities.

Device: This is a driver (the implementation) together with an interface describing it.

Stage
Stage is a simulation software that can work with Player. It allows for quicker/safe testing on virtual robots before using real ones. Based on the Driver/Interface/Device setup I outlined above, Stage communicates with virtual devices.

Stage 4.1 software. Sky-view of pioneer robot.
Stage software. Sky-view of pioneer robot.
Stage 4.1 software 3D view of pioneer robot.
3D view of robot in Stage
Software Choice
Playerwas used frequently in the early 2000's. Now with ROS (Robot Operating System), much of the community has migrated there, and with good reason. ROS has further capabilities to increase development speed and make common tasks easier. I worked with ROS over the summer, and managed to get Stage running on it this week; however there are some bugs that still need to be sorted out.

I'm moving forward with Player/Stage for the time being, as it provides the functionality I need. Based on future work in this term, I see ROS as the ideal platform to do any major development on.

Future Work
I'm hoping to roll out some real robots next week with a demo I create in Player/Stage, and also have a focus for a research project.

In terms of coming up with a research topic as an undergraduate I believe there are two fundamental requirements:
   1.  a sufficient theoretical basis of understanding
ie you need to know stuff to actually do stuff, otherwise you're just an idea guy.
   2.  external insights and ideas presented from experienced researchers
ie if all you do is focus on what you know, you may miss out on contributing to the brilliant ideas of others.

To gain a stronger theoretical basis in multi-agent systems, I'll be continuing  the academic readings I mentioned above. Expecting to find a relevant topic from reading alone is far too ambitious as I have not the slightest clue of where to start... I have not been involved in the developments thus far so how can I expect to just dive in?

Reading thesis/recent ideas of others is also a good approach, as it will present insights beyond my level of comprehension. In order to take these insights and create action, a theoretical basis is required to gauge the complexity/viability of such ideas.

No comments:

Post a Comment

Please feel free to give feedback/criticism, or other suggestions! (be gentle)

Subscribe to Updates via Email