Carleton's Planetary Robotics Team (CPRT) code for rover side operations.
- Docker: Required to build and run the development container.
- Git: Needed to clone the repository and its submodules.4
- WSL: Needed to run docker desktop (Windows only)*
Ensure you have an SSH key associated with you github account
To clone this repository along with all its submodules, run:
git clone --recurse-submodules git@github.com:CPRT/rover.git- Download the VS Code Remote Extension
- Click the remote explorer button in bottom left corner
- Select re-open in container
- Select config file consistent with your setup (see below)
- Source ros.sh to source the ros2 virtual environment
. ros.sh- base-station: Specifically tuned to our base station setup (Not recommended on other machines)
- jetson: Specifically tuned to our rover setup (Not recommended on other machines)
- linux-gui: Only on x11 linux distros. Allows you to launch GUIs from inside the container. Optionally supports most nvidia GPUs. Recommended 50GB of disk space
- linux-lite-gui: Only on x11 linux distros. Allows you to launch GUIs from inside the container. Very limited GPU support. Recommended 30GB of disk space
- linux-lite-headless: Should work on most linux distros. No GPU support. Recommended 30GB of disk space
- windows: Works on windows 11 and some Macbooks. Requires Docker desktop. No GPU support. No GUI support. Recommended 30GB of disk space
If the current selection of profiles don't meet your needs it is pretty easy to make your own - ask us how!
- Make sure to set
ROS_DISCOVERY_SERVER=<ip of rover> - To make
ros2 topic listwork, setROS_SUPER_CLIENT=TRUE - Restart the Docker daemon
export ROS_DISCOVERY_SERVER=192.168.0.55:11811
export ROS_SUPER_CLIENT=TRUE
ros2 daemon stop
ros2 daemon startdocker run -it \
--privileged \
--network host \
--ipc host \
--rm \
-e ROS_DISCOVERY_SERVER=192.168.0.55:11811 \
--runtime=nvidia \
--volume /dev/serial/by-id:/dev/serial/by-id \
--volume /dev/v4l/by-id:/dev/v4l/by-id \
--volume /usr/local/zed:/usr/local/zed \
cprtsoftware/rover:latest \
<COMMAND>To build the docker images you need to make sure to use the default buildx builder
docker buildx use defaultThis stage checks for pylint, black and clang-format checks to keep consistency across the codebase. Note it is possible that it fails in the MR ci/cd pipelines if new dependancies are added since the base image will not be rebuilt yet. If it still fails during the push pipeline then something is actually wrong. TODO: Fix this so it will catch it in the PR pipeline.
./docker_build --testThis is used to generate the rosdep-keys.txt file
./setup/generate_rosdeps.sh- Move base images to Ubuntu 24.04
- Update all ROS 2 build stages
- Migrate GStreamer builds to binary packages
- Update docker build scripts
- Update DeepStream
- Upgrade the ZED wrapper
- Get full dev image building
- Update dev container configs
- Get code building inside dev container (Update c++ API calls)
- Get the full images building locally
- Get the -lite images building locally
- Create a local docker build option (Build without internet or volume mounting)
- Get pylint passing
- Switch build machine to default docker builder
- Get PR pipeline working
- Replace all references to ROS 2 Humble
- Update Jetson setup scripts
- Clean up git history
- Get build pipeline working
- Reflash Jetson AGX with JP7
- Reflash Jetson NANO with JP7
- Update Readme and other documentation
- Zed Camera node
- Video Streaming
- Aruco detection
- Moveit Servo
- Nav2 stack
- WebUI
- Windows dev container