This repository is the home of the CyberShip Software Suite - a collection of ROS 2 packages that together provide the tools to simulate, visualize, and control autonomous maritime vessels. The suite covers everything from the digital twin (URDF models and visualization) to real-time sensor integration (IMU, motion capture, etc.) and advanced control (dynamic positioning and thrust allocation).
Follow these steps to set up your ROS 2 workspace with the CyberShip Software Suite:
[!IMPORTANT] Make sure that you have sourced the ROS 2 installation
source /opt/ros/<distro>/setup.bashReplace
<distro>with your ROS 2 distribution (e.g.,humble,jazzy, etc.).
[!NOTE] Guides assumes you have
$ROS_WORKSPACEenvironment variable set to the root of your ROS 2 workspace. ROS workspace is usually is at~/ros_wsor similar. You can set this variableexport ROS_WORKSPACE=~/ros_wsor add it to your shell configuration file (e.g.,
~/.bashrc) for persistence.
[!NOTE] The following instructions assume you have already set up a ROS 2 workspace. If you haven’t done so, you can create one using the following commands:
mkdir -p $ROS_WORKSPACE/src cd $ROS_WORKSPACE colcon build source install/setup.bash
You can use the provided installation script to automate the setup process:
curl -fsSL https://raw.githubusercontent.com/NTNU-MCS/cybership_software_suite/refs/heads/master/lazy_install.sh | bash
Clone the Repository and Submodules
```bash cd $ROS_WORKSPACE/src git clone https://github.com/NTNU-MCS/cybership_software_suite cd cybership_software_suite git submodule update –init –recursive
Set Up a Python Virtual Environment
cd $ROS_WORKSPACE
python3 -m venv venv --system-site-packages --symlinks
source venv/bin/activate
touch venv/COLCON_IGNORE
Install Python Dependencies
cd $ROS_WORKSPACE
source venv/bin/activate
find src/cybership_software_suite -name "requirements*txt" -exec pip install -r {} \;
Install ROS Dependencies and Build
cd $ROS_WORKSPACE
rosdep install --from-paths src -i
colcon build --symlink-install
[!WARNING] Make sure that you have initialized rosdep and sourced the ROS 2 environment before running the above command. You can do this by running:
source /opt/ros/<distro>/setup.bash sudo rosdep init rosdep updateReplace
<distro>with your ROS 2 distribution (e.g.,humble,jazzy, etc.). If you encounter any issues with dependencies, please refer to the documentation of the specific package for additional instructions.
Source the Environment
source $ROS_WORKSPACE/venv/bin/activate
source $ROS_WORKSPACE/install/setup.bash
There are two main modes to bring up a vessel: physical and simulation.
For a Physical Deployment: Use the cybership_bringup package. For example, to bring up the Voyager vessel, run:
ros2 launch cybership_bringup voyager.launch.py vessel_name:=voyager vessel_model:=voyager
You can similarly launch other vessel types like Enterprise or Drillship by choosing the corresponding launch file in cybership_bringup.
For Simulation: Use the cybership_simulator package. This runs simplified physics scripts:
Visualize your vessel using the RViz visualization tools provided in the suite. The cybership_viz package sets up RViz with a preconfigured scene showing your vessel’s URDF model and sensor data overlays. To launch visualization:
Additionally, the cybership_description package can publish the URDF model via:
Dynamic Positioning: The cybership_dp package provides controllers for dynamic positioning. Launch the complete DP system or individual controllers as needed.
The suite integrates various sensors such as the BNO055 IMU and motion capture systems. Please refer to corresponding packages (e.g., cybership_external/bno055 and cybership_mocap) for detailed instructions.
Use the utility functions in cybership_utilities for standardized launch arguments and helper functions across your launch files. Common interfaces are provided in cybership_interfaces.
docker compose --profile voyager up
The documentations is mostly done through readme files of the subpackages and inline comments. Operational manual is available here.