Contains the CMR production code.
To get started with the CMR codebase, you must first have Linux installed.
We highly recommend Arch Linux, but any version will do since we are using
Docker. You can use a VM, but we highly recommend
installing Linux to a partition on your hard drive.
Once you're up and running with Linux, run the following commands (note, these
commands are only tested on Arch Linux. You may need to modify them slightly if you
have a different package manager).
sudo pacman -S git python mkdir -p ~/cmr/ws/src/ git clone https://github.com/CornellMarsRover/Superproject ~/cmr/ws/src/Superproject eval `~/cmr/ws/src/Superproject/cmr_scripts/cmr eval`
You may have to restart your computer after this in order for Docker to work
Note: if you have an existing version of ROS installed locally, it is highly
recommended that you clear your
~/.bashrc file of the following lines:
This way, you will not accidentally run
roscore outside of Docker (see
'Running code' below)
When connecting to the NUC, you need to have an active Ethernet connection with
the following settings:
- IPv4 address:
It's recommended that you give this network a descriptive name such as "Intel
The scripts in
cmr_scripts rely on various environment variables from the
config in order to function properly. Local changes can be made through the
You can modify code directly within Superproject, and any changes will propagate
to the Docker image. This is possible due to
eval $(cmr eval) to your
.bashrc (then restarting your shell),
you should be able to build code using the command
cmr make. This command
builds the CMR Docker images, then builds your code within a Docker container.
You can run
cmr make from anywhere; it figures out whether Docker is already
running and whether you need to run inside Docker.
You should run code within a Docker container, since this container has the
software configuration that will be used in production. Run the command
cmr shell to get inside the Docker image and start running commands (e.g.
cmr shell automatically spawns a container running
roscore, so you don't need to run
To run the actual rover code, see
For help on how to use
cmr shell, run
cmr shell -h. The
cmr utility also
has lots of other handy subcommands. Run
cmr -h for a complete list.