New member to-do list

Things to do when you join the HIRO group


Contents

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 Fall 2019, we will be holding group meetings in ECST 322 on Thursdays at 3.30pm. Feel free to stop by if you want to have a chat!!

1 Preliminaries

  1. Create an account on our Slack, and share your username with your supervisor and/or point of contact. Ideally, install slack on your machine as well as on your phone in oder to be always up to date with what happens in the lab.
  2. Join the #hiro-group and #hiro-github channels on Slack. Most of our internal communication happens there.
  3. Create an account on GitHub if you haven’t already, and share your username with your supervisor and/or point of contact.
  4. Request to be added to our GitHub organization by sending an email containing your GitHub username to Joewie Koh with Prof. Alessandro Roncone in Cc, AND make your membership to the GitHub organization public. Joewie will also add you to our Google Calendar, so specify in your email if you would like to use a different email address for the calendar.
  5. Read carefully the lab agreements, print them and be prepared to sign them at the next one-on-one meeting with Prof. Roncone. There are currently three documents available:
    1. Lab etiquette, shared among all students and people working in the lab, with the rules of working in the lab;
    2. Faculty-Graduate student agreement, slightly biased toward PhD students but to be used for all graduate students;
    3. Faculty-Undergraduate student agreement, for undergrads
  6. Write an email to Chantel Lehl with Prof. Alessandro Roncone and Joewie Koh in Cc in order to get lab access with your Buff card number. Ask her to be added to ECST 322, ECES 116 and ECES 111. Please send her the following information: Name, Student ID, Buff Card Number, CU Login name, Email.
  7. 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 preferably not bigger than 400x400 px. If you’re not familiar with the PR workflow, you can refer to this guide.
  8. Subscribe to our mailing list! Remember to click on the verification link sent to your email to complete your subscription.

1.1 Optional steps

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. If you are an undergraduate student joining for the summer, please subscribe to this list.

2 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.

2.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.

2.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:

2.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.

2.4 Other tools

2.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

3 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.