Installation and Build
Build the project as a ROS 2 workspace. A complete workspace normally contains:
uvms-simulator: exported ROS packageros2_control_blue_reach_5.uvms-simlab: exported ROS packagesimlab.simlab_msgs: custom planner action definitions.Dependency repositories from
uvms-simulator/dependency_repos.repos.
System Requirements
Ubuntu with ROS 2 Jazzy.
colcon,rosdep, andvcs.CasADi built from source and available at runtime.
Git LFS for large model/resource files.
Install core apt dependencies:
sudo apt update
sudo apt install git-lfs \
ros-$ROS_DISTRO-hardware-interface \
ros-$ROS_DISTRO-xacro \
ros-$ROS_DISTRO-gpio-controllers \
ros-$ROS_DISTRO-controller-manager \
ros-$ROS_DISTRO-joint-state-broadcaster \
ros-$ROS_DISTRO-joint-state-publisher-gui \
ros-$ROS_DISTRO-forward-command-controller \
ros-$ROS_DISTRO-force-torque-sensor-broadcaster \
ros-$ROS_DISTRO-ros2-control \
ros-$ROS_DISTRO-mavros \
ros-$ROS_DISTRO-mavros-msgs \
ros-$ROS_DISTRO-nav2-msgs \
ros-$ROS_DISTRO-rviz-imu-plugin \
ros-$ROS_DISTRO-rviz-2d-overlay-plugins \
ros-$ROS_DISTRO-rviz-2d-overlay-msgs \
ros-$ROS_DISTRO-rosbag2 \
ros-$ROS_DISTRO-plotjuggler-ros \
ros-$ROS_DISTRO-interactive-markers \
ros-$ROS_DISTRO-cv-bridge \
gstreamer1.0-plugins-base \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev
If CasADi is outside the system linker path:
export LD_LIBRARY_PATH=/path/to/casadi/build/lib:$LD_LIBRARY_PATH
Workspace Setup
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
git clone https://github.com/edxmorgan/uvms-simulator.git
git clone https://github.com/edxmorgan/uvms-simlab.git
vcs import < uvms-simulator/dependency_repos.repos
cd ~/ros_ws
rosdep install --from-paths src --ignore-src -r -y
Python Dependencies
Install Python packages used by SimLab for joystick control, planning, FCL, Ruckig, and optional perception:
python3 -m pip install pyPS4Controller pynput scipy casadi ruckig \
python-fcl trimesh pycollada
Optional RGB-to-pointcloud support:
python3 -m pip install torch torchvision timm opencv-python
OMPL Python Bindings
The planner server uses OMPL through Python bindings. One working installation route is the Kavraki Lab installer:
wget https://ompl.kavrakilab.org/install-ompl-ubuntu.sh
chmod u+x install-ompl-ubuntu.sh
./install-ompl-ubuntu.sh --python
Build
Build and source the whole workspace:
cd ~/ros_ws
colcon build
source install/setup.bash
For focused development:
colcon build --packages-select ros2_control_blue_reach_5 simlab simlab_msgs
source install/setup.bash
Documentation Build
Install Python docs dependencies:
python3 -m pip install -r src/uvms-simulator/doc/requirements-docs.txt
Build the Sphinx site:
cd ~/ros_ws/src/uvms-simulator/doc
make html
Open:
doc/_build/html/index.html
GitHub Pages Deployment
The repository includes a GitHub Actions workflow for publishing the Sphinx site to GitHub Pages:
.github/workflows/docs-pages.yml
On pushes to main, the workflow builds doc/_build/html
and deploys it as the Pages artifact. Pull requests build the docs but do not
deploy them.
First Launch Check
After the build succeeds, launch one simulated interactive UVMS:
ros2 launch ros2_control_blue_reach_5 robot_system_multi_interface.launch.py \
use_manipulator_hardware:=false \
use_vehicle_hardware:=false \
sim_robot_count:=1 \
task:=interactive
For hardware launch flows, see Hardware-in-the-Loop Setup. For first-use runtime steps, see Tutorial.