Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
4aae091
chore: better directory structure
incebellipipo Jun 10, 2025
51e01b0
chore: housekeeping
incebellipipo Jun 10, 2025
6f8ad06
fix: fix them all transformations, omg, there are so many!
incebellipipo Jul 10, 2025
468d8b5
feat: wowhohohow so much have changed. absolutely no idea how to writ…
incebellipipo Jul 11, 2025
9aa552a
fix: remove redundancy
incebellipipo Jul 14, 2025
dd2cd17
perf: much needed cleanup
incebellipipo Jul 14, 2025
d72bd31
feat: add mission controller
incebellipipo Jul 14, 2025
ae0a285
feat: add guidance
incebellipipo Jul 14, 2025
dd7e915
feat: add marker visualizations
incebellipipo Jul 14, 2025
aea1285
feat: add simple mission planner
incebellipipo Jul 15, 2025
532974d
feat: add random sampling for experiments
incebellipipo Jul 16, 2025
13893f9
fix: mux topics and infinite abort action on mission
incebellipipo Jul 19, 2025
5f3995b
fix: wait times
incebellipipo Jul 19, 2025
f88a101
feat: add documentation
incebellipipo Jul 19, 2025
993c487
feat: add experiment reporting
incebellipipo Jul 21, 2025
5759df5
fix: bugs hanging the service calls
incebellipipo Jul 21, 2025
6066c09
fix: localization issues
incebellipipo Aug 1, 2025
849c8c5
perf: increase position keeping performance
incebellipipo Aug 1, 2025
e7b2123
Merge branch 'master' of https://github.com/incebellipipo/cybership_s…
incebellipipo Aug 7, 2025
9480932
fix: launch path substitution
incebellipipo Aug 7, 2025
364e6c0
ci: change
incebellipipo Aug 7, 2025
555ae8f
feat: add drillship
incebellipipo Aug 19, 2025
a99e0b7
ci: get multi arch build working
incebellipipo Aug 19, 2025
ad3d8c3
ci: fix platforms syntax
incebellipipo Aug 19, 2025
d605ce7
ci: fix missing build dependencies
incebellipipo Aug 19, 2025
426de0e
ci: fix build
incebellipipo Aug 19, 2025
9ccf006
chore: build chain clean up
incebellipipo Aug 20, 2025
4a8fdbe
fix: position controller and localization for drillship
incebellipipo Aug 22, 2025
433c539
Merge branch 'master' of https://github.com/incebellipipo/cybership_s…
incebellipipo Aug 22, 2025
6f550c2
Add new ROS distributions to build matrix
incebellipipo Aug 24, 2025
8419b55
fix: update line of sight
incebellipipo Aug 24, 2025
67a09a7
feat: add kilted, remove others, remove arm64 build
incebellipipo Aug 28, 2025
ae8dfa2
feat: add gui
incebellipipo Aug 28, 2025
515e7e9
fix: line of sight
incebellipipo Aug 28, 2025
303eb01
feat: add multi vehicle sim support
incebellipipo Aug 28, 2025
7def400
fix: add missing tf prefixes
incebellipipo Aug 28, 2025
bb51bc8
feat: add mux web ui
incebellipipo Aug 29, 2025
8fa02e7
feat: add web ui for mux
incebellipipo Aug 29, 2025
aed7408
misc: increase distance between vessels
incebellipipo Sep 3, 2025
2d39f15
perf: positoin and ui
incebellipipo Sep 4, 2025
3566062
feat: add multiple joy support
incebellipipo Sep 4, 2025
8cc538c
perf: improve performance
incebellipipo Sep 4, 2025
682c831
feat: add service call for mux on teleop
incebellipipo Sep 5, 2025
a79f7cc
Merge branch 'master' of https://github.com/incebellipipo/cybership_s…
incebellipipo Sep 5, 2025
1fb8d15
perf: better vessel positions
incebellipipo Sep 5, 2025
79305ec
feat: add all launch
incebellipipo Sep 19, 2025
35fbb66
feat: add safety controller
incebellipipo Sep 19, 2025
452861d
fix: parameter update
incebellipipo Sep 23, 2025
441e7fd
feat: improve multi visualization
incebellipipo Sep 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"image": "incebellipipo/devcontainer:humble",
"customizations": {
"terminalPrompt": "🐳 [container] ${containerName} ${folder}",
"terminalPrompt": "[container] ${containerName} ${folder}",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
Expand Down
51 changes: 0 additions & 51 deletions .github/workflows/build-and-push-arm64.yml

This file was deleted.

13 changes: 3 additions & 10 deletions .github/workflows/build-and-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,10 @@ jobs:
fail-fast: false
matrix:
configurations:
- ros_distro: 'humble'
arch: 'amd64'
- ros_distro: 'kilted'
- ros_distro: 'jazzy'
arch: 'amd64'
- ros_distro: 'humble'
arch: 'arm64'
- ros_distro: 'jazzy'
arch: 'arm64'

# runs-on: ubuntu-latest
runs-on: ubuntu-22.04
runs-on: ubuntu-latest

steps:
- name: Checkout
Expand All @@ -49,5 +42,5 @@ jobs:
build-args: |
ROS_DISTRO=${{ matrix.configurations.ros_distro }}
push: true
platforms: linux/${{ matrix.configurations.arch }}
platforms: linux/amd64,linux/arm64
tags: incebellipipo/cybership:${{ matrix.configurations.ros_distro }}
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# cybership_common

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).
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).

## Whats Included
## What's Included

- **cybership_bringup**: Launch files to initialize all the necessary nodes for bringing up a vessel in a ROS 2 environment. This includes hardware drivers, localization, and sensor integration.
- **cybership_simulator**: Simple Python scripts for vessel simulation using basic physics. Use these scripts to test vessel behavior in simulation.
Expand Down Expand Up @@ -84,7 +84,7 @@ For Simulation:
Use the cybership_simulator package. This runs simplified physics scripts:

### 3. Visualization
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 vessels URDF model and sensor data overlays. To launch visualization:
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:

Expand Down
106 changes: 106 additions & 0 deletions cybership_bringup/launch/all.launch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import launch
import launch.actions
import launch.conditions
import launch.launch_description_sources
import launch.substitutions
import launch_ros.substitutions


def generate_launch_description():

ld = launch.LaunchDescription()

vessel_model = launch.substitutions.LaunchConfiguration("vessel_model")
vessel_name = vessel_model

ld.add_action(
launch.actions.DeclareLaunchArgument(
"vessel_model",
description="Vessel model to bring up (drillship|enterprise|voyager)",
)
)

include_drillship = launch.actions.IncludeLaunchDescription(
launch.launch_description_sources.PythonLaunchDescriptionSource(
launch.substitutions.PathJoinSubstitution(
[
launch_ros.substitutions.FindPackageShare("cybership_bringup"),
"launch",
"drillship.launch.py",
]
)
),
condition=launch.conditions.IfCondition(
launch.substitutions.PythonExpression(["'", vessel_model, "' == 'drillship'"])
),
)

include_enterprise = launch.actions.IncludeLaunchDescription(
launch.launch_description_sources.PythonLaunchDescriptionSource(
launch.substitutions.PathJoinSubstitution(
[
launch_ros.substitutions.FindPackageShare("cybership_bringup"),
"launch",
"enterprise.launch.py",
]
)
),
condition=launch.conditions.IfCondition(
launch.substitutions.PythonExpression(["'", vessel_model, "' == 'enterprise'"])
),
)

include_voyager = launch.actions.IncludeLaunchDescription(
launch.launch_description_sources.PythonLaunchDescriptionSource(
launch.substitutions.PathJoinSubstitution(
[
launch_ros.substitutions.FindPackageShare("cybership_bringup"),
"launch",
"voyager.launch.py",
]
)
),
condition=launch.conditions.IfCondition(
launch.substitutions.PythonExpression(["'", vessel_model, "' == 'voyager'"])
),
)

include_localization = launch.actions.IncludeLaunchDescription(
launch.launch_description_sources.PythonLaunchDescriptionSource(
launch.substitutions.PathJoinSubstitution(
[
launch_ros.substitutions.FindPackageShare("cybership_bringup"),
"launch",
"localization.launch.py",
]
)
),
launch_arguments={
"vessel_model": vessel_model,
"vessel_name": vessel_name,
}.items(),
)

include_dp = launch.actions.IncludeLaunchDescription(
launch.launch_description_sources.PythonLaunchDescriptionSource(
launch.substitutions.PathJoinSubstitution(
[
launch_ros.substitutions.FindPackageShare("cybership_dp"),
"launch",
"dp.launch.py",
]
)
),
launch_arguments={
"vessel_model": vessel_model,
"vessel_name": vessel_name,
}.items(),
)

ld.add_action(include_drillship)
ld.add_action(include_enterprise)
ld.add_action(include_voyager)
ld.add_action(include_localization)
ld.add_action(include_dp)

return ld
52 changes: 3 additions & 49 deletions cybership_bringup/launch/drillship.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,10 @@
import launch.launch_description_sources


def include_launch_action_with_config(
vessel_model,
vessel_name,
launch_file,
param_file=""):

bringup_pkg_dir = launch_ros.substitutions.FindPackageShare(
'cybership_bringup')
config_pkg_dir = launch_ros.substitutions.FindPackageShare(
'cybership_config')

launch_arguments = [
('vessel_name', vessel_name),
('vessel_model', vessel_model)
]

if len(param_file) != 0:
launch_arguments.append(
(
'param_file',
launch.substitutions.PathJoinSubstitution(
launch.substitutions.PathJoinSubstitution(
[config_pkg_dir, 'config', vessel_model, param_file]
)
)
)
)

return launch.actions.IncludeLaunchDescription(
launch.launch_description_sources.PythonLaunchDescriptionSource(
launch.substitutions.PathJoinSubstitution(
[bringup_pkg_dir, 'launch', 'include', launch_file]
)
),
launch_arguments=launch_arguments
)

from cybership_utilities.launch import include_launch_action_with_config



def generate_launch_description():
Expand Down Expand Up @@ -72,13 +40,6 @@ def generate_launch_description():
)
)

# ld.add_action(
# include_launch_action_with_config(
# vessel_model, vessel_name,
# 'robot_localization.launch.py', 'robot_localization.yaml'
# )
# )

ld.add_action(
include_launch_action_with_config(
vessel_model, vessel_name,
Expand All @@ -100,11 +61,4 @@ def generate_launch_description():
)
)

# ld.add_action(
# include_launch_action_with_config(
# vessel_model, vessel_name,
# 'urdf_description.launch.py', 'empty.yaml'
# )
# )

return ld
43 changes: 1 addition & 42 deletions cybership_bringup/launch/enterprise.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,8 @@
import launch.launch_description_sources


def include_launch_action_with_config(
vessel_model,
vessel_name,
launch_file,
config_file=""):
from cybership_utilities.launch import include_launch_action_with_config

bringup_pkg_dir = launch_ros.substitutions.FindPackageShare(
'cybership_bringup')
config_pkg_dir = launch_ros.substitutions.FindPackageShare(
'cybership_config')

launch_arguments = [
('vessel_name', vessel_name),
('vessel_model', vessel_model)
]

if len(config_file) != 0:
launch_arguments.append(
(
'param_file',
launch.substitutions.PathJoinSubstitution(
launch.substitutions.PathJoinSubstitution(
[config_pkg_dir, 'config', vessel_model, config_file]
)
)
)
)

return launch.actions.IncludeLaunchDescription(
launch.launch_description_sources.PythonLaunchDescriptionSource(
launch.substitutions.PathJoinSubstitution(
[bringup_pkg_dir, 'launch', 'include', launch_file]
)
),
launch_arguments=launch_arguments
)


def generate_launch_description():
Expand All @@ -65,13 +31,6 @@ def generate_launch_description():
)
)

# ld.add_action(
# include_launch_action_with_config(
# vessel_model, vessel_name,
# 'robot_localization.launch.py', 'robot_localization.yaml'
# )
# )

ld.add_action(
include_launch_action_with_config(
vessel_model, vessel_name,
Expand Down
Loading