Resources
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.
- Note by Bjorn Poonen
- Note by Kevin Lee
- Note by Annalisa Crannell
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
- For a more complete treatment:
- 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:
- Convex Optimization. Read this book in detail.
- 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
- Linear Systems Course by Stephen Boyd
- Partially taught in ME 645
- Control Theory basics: (youtube)
- ME Robotics Course (website)
- If you are at UK, I also recommend Dr. Biyun Xie’s course ‘EE 599 Introduction to Robotics’ course that focuses on kinematics of robotic mechanisms.
- Machine Learning
- Read the introductions of this book and this book.
- Complete Andrew Ng’s course that introduces concepts
- For coding skills, go through Machine Learning with Python (copy in lab).
- For an online course, this intro to DL.
- This deep learning textbook is in the lab.