General Development Environment Setup Guide

This page is focused on a general style of help for users. Since there is an essentially infinite set of tool combinations to use, we will supply a guide for each tool, written by an IHMC developer who uses that tool. Some pages may be a work in progress.

Contents

Getting Started

Remember to read the linked Confluence documentation for each tool. We have specific ways of using these tools and installation and configuration are important.

In general:

  1. Pick an operating system
    Ubuntu - Free, most compatible with robots
    Windows - Requires setting up long paths, installing redistributables, and setting Git's autocrlf to 'input'.
    macOS - our software isn't currently fully compatible with macOS
  2. Install all of the following: (follow installation guides in linked pages)
    1. Graphics driver. For Nvidia GPUs and SCS 1, the proprietary Nvidia driver is currently required.
      Otherwise you will get the error "Could not find GLX 1.3 config from peer info"
    2. Java
    3. Git - Setup your credentials. On Windows, make sure to set autocrlf to 'input'.
      It is recommended to install a GUI Client, like SmartGit.
      There is also a command line tool vcstool that can perform batch Git operations on groups of repositories.
    4. Gradle - Follow the "Installation" and "Configuration" sections.
      (This can be skipped if using the repository-group script later to install Gradle.)
  3. Choose and install an IDE:
    Follow the "Installation" and "Configuration" sections in one of the following.
    Make sure to setup the IHMC code formatter.
    1. IntelliJ
      + More code navigation, refactoring, etc. tools
      + Gradle script editor
      + AI Assistant available in paid version
    2. Eclipse
      + Faster compilation, quicker to launch simulations
      + Fantastic multi-monitor support
      - Gradle files only editable via plain text
  4. Use Git to create a repository-group w/ IHMC Open Robotics Software

    In your system home folder (or C:/ drive in Windows), create a repository-group.

    Option 1:

    Use repository-collections to clone a predefined set of repositories. If you are working on humanoids, use humanoids.repos .

    Option 2:

    Use Git to manually clone the repository group:

    1. Clone repository-group.
      You may name that repository-group folder something else, like "primary" or "secondary" which helps when you have more than one.
    2. Inside the repository-group folder, clone the repositories you need. See
      For just ihmc-open-robotics-software
      It should look like:
    repository-group
    ├── ihmc-open-robotics-software
    │   └── build.gradle
    │   └── gradle.properties
    │   └── settings.gradle
    ├── <other IHMC repositories as needed>
    ├── build.gradle
    ├── gradle.properties
    └── settings.gradle
    You may wish to clone more projects depending what you are working on. Atlas and Valkyrie simulations are included in Open Robotics Software but not their user interfaces.  Take a look at what repositories are available here: repository-collections

  5. Use your IDE to import the code you cloned
    When you import a Gradle project, the IDE is analyzing the Java build structure that Gradle comes up with and copying that configuration into the IDE's data structures as if you had painstakingly configured a new Java project manually using the IDE's UI.
    Perform the Import directly on the repository-group folder or the repository-group/build.gradle.kts file.
    Follow the "Importing Gradle Projects" section of your IDE's page.
    1. IntelliJ IDEA#ImportingGradleProjects
    2. Eclipse IDE#ImportingGradleProjects
  6. Setup network configuration

    1. Reserve an IP address if necessary.
    2. Reserve a DDS domain ID.
    3. Run NetworkParametersCreator.java and save it.
    4. Don't forget to set the RTPSSubnet. (i.e. RTPSSubnet=10.100.1.34/24)

  7. To see if everything is working, run some sample simulations. For example AtlasFlatGroundWalkingTrackSCS2.

It's recommended to skim over the guides and try to understand a bit about how things are working:

Software Development

Okay, now you're ready to write code.

Check out the /wiki/spaces/IEH/overview.

General Troubleshooting

System and application crashes - GC Overhead Exceptions

Sometimes applications or your entire system crashes. This can be due to being on a less capable machine or just running resource expensive or buggy applications.

  1. Reboot your machine
  2. Close out as many background applications as possible after booting
  3. Launch a system monitor where you can see CPU and RAM usage. Preferably a graph over time so you don't miss something.
  4. Launch IntelliJ and keep an eye on CPU and RAM
  5. Proceed slowly and wait for CPU to go to <5% stably before clicking the next thing