New member to-do list

Things to do when you join the HIRO group


Want do to robotics? The following is a list of things to do if you are new to the Human Interaction and RObotics [HIRO] Group. Please consider this as a non-exhaustive cheat sheet that is modified over time. As such, feel free to edit it if there is anything you would like to add.

For Summer 2020, we will be holding group meetings via Zoom on Thursdays at 2:30 pm — please contact us for the meeting ID. Feel free to stop by if you want to have a chat!!

1 Preliminaries

Prospective new members of the lab (e.g. undergraduate students or master students looking to work on an Independent Study) should take the following steps before moving to the next section:

  1. Find a project. There are multiple ways to find a project to work on, including the following (in chronological order):
    • Read about our main research threads here. The page is still under development, but it could be a good start to quickly gain high-level knowledge.
    • Take a look at our previous published work available here, identify some papers that you are interested in, read them and try to come up with ways to potentially improve them.
    • Reach out to our PhD students and ask them what they are up to–see here. Feel free to do so via email or by joining our lab meetings. This is also a great way to find a mentor!
  2. Find a supervisor. Every junior student primarily works under the supervision of a senior student; this allows the lab to gracefully scale in size, but most importantly it allows you to gain necessary exposure to research with close supervision from somebody who is already experienced with it. It is a fundamental step on the path to research independence!!
  3. Communicate with Prof. Alessandro Roncone regarding your project.
  4. Lastly, you should consider attending one of the robotics classes that we regularly offer in the academic year. This will dramatically accelerate the process of picking up the necessary robotics/AI skills needed to perform research in the HIRO Group!

Once you are done with these preliminary steps, follow the instructions in the next section to finalize your membership. You are expected to complete these tasks within 2 days of joining the group–as in, the following section should not take you more than half an hour of work!

2 New members

2.1 Slack

  1. Create an account on our Slack.
  2. Share your username with your supervisor and/or point of contact.
  3. Ideally, install Slack on your machine as well as on your phone in order to be always up to date with what happens in the group.
  4. Join the #hiro-group and #hiro-github channels on Slack. Most of our internal communication happens there.

2.2 GitHub & Google Calendar

  1. If you don’t already have a GitHub account, create one.
  2. Share your username with your supervisor and/or point of contact.
  3. Send an email to Joewie Koh with Prof. Alessandro Roncone in Cc. Include your:
    • GitHub username
    • Preferred email address for Google Calendar
  4. Joewie will add you to our GitHub organization and Google Calendar.
  5. Make your membership to the GitHub organization public.

2.3 Lab agreements

  1. Read carefully the lab agreements. There are currently three documents available:
  2. Print them and be prepared to sign them at your next one-on-one meeting with Prof. Roncone. (This does not need to be done within 2 days.)

2.4 Lab access

  1. Write an email to Chantel Lehl with Prof. Alessandro Roncone and Joewie Koh in Cc.
  2. Ask to be granted access to ECST 322, ECES 116 and ECES 111. Please include the following information:
    • Name
    • Student ID
    • Buff OneCard number
    • CU login name
    • Email

2.5 Group website

  1. Do a Pull Request [PR] on this repository to add your data to this file and a picture of you to this folder. The picture needs to be square, and not bigger than 400x400 px.
  2. If you’re not familiar with the PR workflow, you can refer to this guide.

2.6 Mailing list

  1. Subscribe to our mailing list!
  2. Click on the verification link sent to your email to complete your subscription.

3 Optional steps

  1. Ask for an invitation to our Trello team and Mendeley group from @joewie on Slack or in the #hiro-group channel. Provide your preferred email. We share and keep track of relevant papers on Mendeley, while Trello is where we coordinate work on projects.
  2. To access research papers off-campus, set up the CU Boulder VPN client on your machine. Alternatively, drag the following link to your bookmarks toolbar: CU Proxy. Whenever you come across a paywall, simply click on the bookmark to access the resource through the University Libraries proxy.
  3. If you plan to perform research with human subjects, please be aware of the policies for doing so and do the CITI training for Social Behavioral Research Investigators and Key Personnel. If your project requires IRB review, please be prepared to do so on a timely manner as submitting an IRB Protocol [and having it reviewed] takes time.
  4. If you need storage for data, request an account with CU Boulder Research Computing on this page. After receiving your RC account, await further instructions from RC to set up Duo two-factor authentication.
  5. If you are an undergraduate student joining for the summer, please subscribe to this list.

4 Software

For what concerns the software, your mileage may vary. This is what you need to do if you are developing software in the HIRO group.

4.1 Install Ubuntu [16.04]

Linux (and Ubuntu) is our operating system of choice. It is not important to be a Linux expert, but you need at least to have it installed in order to be able to develop on an environment as similar as possible to the one you will use when using the Sawyer Robot (or similar ROS-based robots).

You have the following options:

  1. You already use Ubuntu → great! You are a true nerd. Move on to the next section :sunglasses:
  2. You use MacOS / Windows:
    1. You can install Ubuntu side by side with your main OS partition [recommended option as it is the most flexible overall and it pays off over time]
    2. You can use a virtual machine with Ubuntu on it
    3. You can use Docker containers to virtualize an Ubuntu machine on your main operating system. Our Docker containers come with ROS and our code already preinstalled! Please be aware that this is definitely the option that requires you to be an advanced terminal user. Docker containers are still under development, however.
    4. If you use another Linux distribution or MacOS, there is also the option to install ROS on it directly, although it is (highly) unsupported and usually there are problems. But many students were able to do so!

NOTE: the Sawyer Robot is stuck to uses Ubuntu 16.04, so it is highly recommended to use that.

4.2 Install ROS [kinetic]

ROS is the so-called Robot Operating System. It is the core software we use to interface with the robot.

Also here, you have some specific requirements. Sawyer is stuck to uses ROS kinetic. Here are some installation instructions:

4.3 Learn about ROS

To have some degree of understanding of ROS, please read the following documents:

If you still need some practice, you might have a look at ROS tutorials.

4.4 Other tools

4.4.1 CMake

CMake is core to ROS development and any advanced, multi-platform, C++ based development. It is relatively easy to learn, but very difficult to master. Here are some resources that might be useful:

  • CGold: The Hitchhiker’s Guide to the CMake is a very long, but complete and thorough set of tools
  • The LLVM primer on CMake is useful for the language level (i.e. variables, control loops, commands), but it does not provide interesting information like explanation of target_include_directories target_link_libraries
  • This one is another long tutorial
  • This one is a useful collection of tips and tricks
  • This instead is a series of tutorials oriented towards students that I saw recently and may be useful
  • This is a nice article about what mess CMake is—and also a good way to start learning it

5 Guidelines / options / editor preferences

Here are some good things to set up before contributing to our code:

  • If you are on the hunt for a versatile code/text editor, consider using Sublime text 3. Sublime is your friend!!!
  • Rebase by default when doing git pull → git config --global branch.autosetuprebase always
  • Use ALWAYS tab as spaces → on Sublime text, you should add this in your preferences "translate_tabs_to_spaces": true
  • Ensure newline at the end of files → on Sublime text, you should add this in your preferences "ensure_newline_at_eof_on_save": true
  • Trim trailing white space on save → on Sublime text, you should add this in your preferences "trim_trailing_white_space_on_save": true
  • DO NOT commit backup files (those that end with ~)
  • Set up 4 spaces as tab width.
  • Be considerate in using git. git is a great tool, but it needs to be used carefully in order to maximize its effectiveness. To this end, please:
    • commit frequently, push frequently
    • do not create huge commits with all the files you worked on during your day because it is harder for us to review them
    • use branching and pull requests to implement features/bug fixes
  • Keep your code ALWAYS in a compile-able state. We don’t want our work on the Sawyer to be slowed down by some partial feature that is broken (which is fine) but then breaks all the compilations on the machine

Please be aware that, although the suggestions above are only guidelines, they will are strictly enforced in our code, as they set the minimum bar to have fruitful and effective collaborations.