/open-core

Primary LanguageC++MIT LicenseMIT

ReSim's Open Libraries

codecov

This repository contains the open source subset of ReSim's C++ code intended to accelerate robotics development. For detailed documentation, please visit docs.resim.ai.

Getting Started

The expected developer workflow takes place entirely within our Docker container. See docs.resim.ai for detailed instructions on getting started.

Structure

Currently, the libraries are divided up into:

  • Examples: Example binaries which demonstrate how to use our libraries.
  • Assert: A simple library that we use for runtime assertions.
  • Utils: Common utilities used throughout the repository.
  • Math: Common math libraries.
  • Time: Common time libraries.
  • Transforms: Libraries for 3D transforms.
  • Curves: Libraries for curves through 3D space.
  • Actor: Libraries for rigid body states and trajectories.
  • Visualization: Libraries for visualizing 3D objects with ReSim View.
  • Testing: Common libraries for testing.
  • Auth: Device code client for use with oauth.
  • Dynamics: Libraries for defining and integrating dynamics.
  • Experiences: The definition of our experience description format.
  • Geometry: Libraries for geometric primitives and algorithms.
  • Metrics: Tools for computing metrics during and after simulations.
  • Planning: Tools for high-level planning and optimal control.
  • Simulator: Our core simulator libraries.

Building

We use Bazel as our build and test tool. As an example for those who might be less familiar with bazel, one can build our simulator using the command:

bazel build //resim/simulator:resim_run

This will result in the binary for the simulator being placed at open-core/bazel-bin/resim/simulator/resim_run. The binary can either be run directly or run using bazel run instead of bazel build above.

Our build is mostly hermetic, and consequently most of our dependencies are tracked through bazel and will be automatically downloaded and built when needed for the target being built. However, we do depend on the UUID library from util-linux/util-linux, which is included in our development docker container.

Documentation

If you add a new file to docs/, it needs to be added to the nav: section in the mkdocs.yml of our internal docs repo before it will be easy to find on docs.resim.ai