Contents:

Introduction

My goal is to foster an environment of consistent research excellence and personal development that supports all lab members in achieving their goals and potential. This webpage contains information that will help you and other lab members, including me, achieve that goal together. Any suggestions and improvements are welcome.

Lab Organization and Policies

Diversity and Inclusion

Lab membership is open to people of all backgrounds, and discrimination or prejudicial behavior will not be tolerated. If members make comments or actions that are derogatory, please bring it to my attention. You always have the right to object to such behavior.

Work Hours

Lab members are not required to work on a fixed schedule. This flexibility is a prominent feature in academia. Instead, I expect that you will put in the work required to achieve research goals. Part of your training during graduate school is learn to do so within a reasonable amount of time and effort.

I highly recommend developing a framework for time management that allows you to take full advantage of opportunities both inside and outside of your role as a lab member. If you are finding it difficult to adapt to the flexibility, seek help from me or any other appropriate campus resource sooner rather than later.

Forms

  • Purchasing:
    • To facilitate purchasing, we need to provide ME department with either a link (or links) to a readily available object, or a quote.
    • For each vendor, we should also fill this purchase order form.
      • Fill the form as best as you can.
      • For the vendor, focus on name and website.
      • Fill in the description and justification of purchase.
    • This order form needs to be attached to an email sent to me that contains the links.
      • One order form per vendor (eg. Amazon, McMaster-Carr,Digi-Key).
      • The email must contain links to the items to be purchased, or to a shopping cart if obtaining multiple items from a single place.

Preparing Manuscripts

A significant portion of your output during graduate school will consist of research articles published in conference proceedings and journals. Preparing manuscripts for submission can be straightforward or tedious, depending on the amount of planning involved from the start of the research project.

General Planning

Devi Parikh has a good framework for planning to finish a high-quality research paper before a targeted deadline.

Typesetting Software

We exclusively use TeX for preparing manuscripts. Your progress will require gaining competency in creating documents using TeX, and doing so efficiently.

Mathematical Equations

Some good pointers on writing math well can be found in the links below.

Creating Software

Writing software requires a careful consideration of the objectives for that software, and an awareness of the cost-benefit tradeoff. It makes sense to invest in your code being reliable. If you anticipate using the code for a few days, you may not want to worry about extensions or modularity. If this code is going to be used repeatedly in different contexts, then it is worth thinking about how to make code chunks modular, consistent, reusable, and extensible.

The Agile method

Taken from this paper :

One specific agile methodology referred to in this work is derived from ’eXtreme programming’ comprising test-driven development and pair programming. Test-driven development involves writing a failing test for a desired functionality, prior to implementing any source code. Functionality is then added to the source code until the test passes. This ensures a good degree of test coverage for the code. In this work we distinguish between unit tests and functional tests. Unit tests cover small units of the code, for example individual classes and methods, while functional tests are more involved scripts that use the code as a black box to verify correctness of a certain functionality. The latter can also be useful to identify sudden regressions in overall accuracy. Pair programming [5, 40] is a form of code review in which two developers simultaneously work on the same code, and work-station. One developer writes code and the other reviews it. This helps to capture errors efficiently and also helps less experienced developers learn the code and development practices.

Use Version control

I use git to track versions of papers and software over time. There are several tutorials online. A quick introduction can be found here, and a longer video-based lecture here. Often, one does not need a remote repository. However, if a reliable server is available, why not?

Comment and Document

Spend some time documenting working code: how to run it, what inputs it expects, failure cases etc.

Code in a research lab is often re-run long after it is created. For example, when it's time to run a slightly different version of a simulation to address reviewer's comments on a journal paper. At this point, every comment about what the next line few lines does will save you a huge amount of time. When you write those lines, it may have seemed obvious and not worth commenting upon. Therefore, comment liberally yet effectively as you create code. For example, if 20+ lines of code are trying to solve a nonlinear equation and choose one out of n expected solutions, mention the equation and the criteria for selection in a comment before these lines.

Study Resources

Math

Robotics requires comfort with multiple areas, in addition to a core competency. Below are links to some resources for learning basics in these areas:

  • See these notes that quickly introduces all three topics below.
  • You must master Linear Algebra. Definitely complete Gilbert Strang’s course.
  • Elementary real and complex analysis (barely covered in undergraduate calculus). Any interaction with theory in robotics requires comfort with these topics. Most academic libraries will have a good resource.
    • For a more complete treatment:
      • Basic: ‘Introduction to Analysis’, by William R. Wade. Topics:
      • Advanced: ‘Introductory Real Analysis’ by A. N. Komlmogorov
  • Optimization.
    • There are many optimization problems and methods to solve them. Like many other roboticists, we focus on a subset for which there are reliable algorithms:

Engineering