Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
4632eac
Port custom_msgs to ROS2 (ament_cmake + rosidl)
romleiaj Jul 2, 2026
7e4128a
Port roskv and kamcore to ROS2
romleiaj Jul 2, 2026
f72f9e3
Port nexus and view_server (imageview) to ROS2
romleiaj Jul 2, 2026
87cdf6d
Port ins_driver to ROS2
romleiaj Jul 2, 2026
c085b26
Port mcc_daq and ser_daq to ROS2
romleiaj Jul 2, 2026
c41ce9f
Port kw_genicam_driver (IR camera) to ROS2; add shared cam_utils package
romleiaj Jul 2, 2026
fc96bc1
Port prosilica_camera (RGB/UV) to ROS2
romleiaj Jul 2, 2026
e0056b2
Port sprokit_adapters (VIAME detector adapter) to ROS2
romleiaj Jul 2, 2026
8cb6996
Convert backend metapackage to ament; postproc jobs need no port
romleiaj Jul 2, 2026
82a611c
Switch nayak/taiga runtime plumbing from ROS1 to ROS2
romleiaj Jul 2, 2026
302dbf0
Target ROS2 Jazzy Jalisco (Ubuntu 24.04)
romleiaj Jul 3, 2026
6824729
Base detector image on kitware/viame:gpu-algorithms
romleiaj Jul 3, 2026
0a77732
Port phase_one (Phase One iXM RGB driver) to ROS2
romleiaj Jul 4, 2026
8e5f9f3
Port wxpython_gui (system control panel) to ROS2
romleiaj Jul 4, 2026
eb4446d
Port all remaining ROS1 code to ROS2; repo is now ROS1-free
romleiaj Jul 4, 2026
41a9312
Sweep last ROS_MASTER_URI / catkin references from dev+setup scripts
romleiaj Jul 4, 2026
59ecf91
Refresh gui-deps base image for Jazzy / Ubuntu 24.04
romleiaj Jul 4, 2026
242b763
merged tmux/nayak and tmux/taiga
cameron-a-johnson Aug 14, 2026
bf16386
Make fstab provisioning entries idempotent
cameron-a-johnson Aug 14, 2026
65ae14d
Bump core base image CUDA 12.6.2 -> 13.0.3
cameron-a-johnson Aug 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions compose/cam_ir.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ services:
init: true
tty: true
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DISTRO: "noetic"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
ROS_DISTRO: "jazzy"
REDIS_HOST: "${REDIS_HOST}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
CAM_MODE: "ir"
Expand Down
2 changes: 1 addition & 1 deletion compose/cam_param_monitor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ services:
init: true
tty: true
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
REDIS_HOST: "${REDIS_HOST}"
SYSTEM_NAME: "${SYSTEM_NAME}"
Expand Down
4 changes: 2 additions & 2 deletions compose/cam_rgb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ services:
init: true
tty: true
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DISTRO: "noetic"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
ROS_DISTRO: "jazzy"
REDIS_HOST: "${REDIS_HOST}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
CAM_MODE: "rgb"
Expand Down
4 changes: 2 additions & 2 deletions compose/cam_uv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ services:
init: true
tty: true
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
REDIS_HOST: "${REDIS_HOST}"
ROS_DISTRO: "noetic"
ROS_DISTRO: "jazzy"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
CAM_MODE: "uv"
CAM_FOV: "${CAM_FOV}"
Expand Down
10 changes: 5 additions & 5 deletions compose/roscore.yml → compose/core_init.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
## Bring up the core nodes
## Seed Redis with the static system config (formerly also ran roscore)
services:
## =========================== headless nodes =============================
roscore:
container_name: roscore
core_init:
container_name: core_init
image: ${KAMERA_CORE_IMAGE}
init: true
tty: true
network_mode: host
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
DATA_MOUNT_POINT: "${DATA_MOUNT_POINT}"
SPOOF_RATE: "${SPOOF_RATE}"
REDIS_HOST: "${REDIS_HOST}"
Expand All @@ -21,7 +21,7 @@ services:
volumes:
- "/mnt:/mnt"
- "${PWD}/src:${DOCKER_KAMERA_DIR}/src:ro"
command: ["/entry/master.sh"]
command: ["/entry/core_init.sh"]
restart: no
...

2 changes: 1 addition & 1 deletion compose/daq.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ services:
- "${MCC_DAQ}:${MCC_DAQ}"
environment:
REDIS_HOST: "${REDIS_HOST}"
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
MCC_DAQ: "${MCC_DAQ}"
SYSTEM_NAME: "${SYSTEM_NAME}"
Expand Down
2 changes: 1 addition & 1 deletion compose/detector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ services:
tty: true
environment:
REDIS_HOST: "${REDIS_HOST}"
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME:-}"
PRODUCER_HOST: "${PRODUCER_HOST:-}"
DATA_MOUNT_POINT: "${DATA_MOUNT_POINT}"
Expand Down
2 changes: 1 addition & 1 deletion compose/fps_monitor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ services:
init: true
tty: true
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
REDIS_HOST: "${REDIS_HOST}"
SYSTEM_NAME: "${SYSTEM_NAME}"
Expand Down
4 changes: 1 addition & 3 deletions compose/gui.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ services:
tty: true
environment:
REDIS_HOST: "${REDIS_HOST}"
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_IP: "${ROS_IP:-}"
ROS_HOSTNAME: "${ROS_HOSTNAME:-}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
DATA_MOUNT_POINT: "${DATA_MOUNT_POINT}"
GUI_CFG_DIR: "${GUI_CFG_DIR}"
DISPLAY: "${DISPLAY}"
Expand Down
2 changes: 1 addition & 1 deletion compose/image_manager.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ services:
tty: true
environment:
REDIS_HOST: "${REDIS_HOST}"
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
SYSTEM_NAME: "${SYSTEM_NAME}"
dns:
Expand Down
2 changes: 1 addition & 1 deletion compose/imageview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ services:
tty: true
environment:
REDIS_HOST: "${REDIS_HOST}"
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
CAM_FOV: "${CAM_FOV}"
DATA_MOUNT_POINT: "${DATA_MOUNT_POINT}"
Expand Down
2 changes: 1 addition & 1 deletion compose/ins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ services:
- "${PULSE_TTY}:${PULSE_TTY}"
environment:
REDIS_HOST: "${REDIS_HOST}"
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
ALLOW_SERIAL_INS_SPOOF: "${ALLOW_SERIAL_INS_SPOOF}"
SPOOF_INS: "${SPOOF_INS}"
Expand Down
2 changes: 1 addition & 1 deletion compose/nodelist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ services:
tty: true
network_mode: host
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
DATA_MOUNT_POINT: "${DATA_MOUNT_POINT}"
volumes:
- "${PWD}/src:${DOCKER_KAMERA_DIR}/src:ro"
Expand Down
2 changes: 1 addition & 1 deletion compose/shapefile_monitor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ services:
tty: true
environment:
REDIS_HOST: "${REDIS_HOST}"
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
DOCKER_KAMERA_DIR: "${DOCKER_KAMERA_DIR}"
SYSTEM_NAME: "${SYSTEM_NAME}"
Expand Down
2 changes: 1 addition & 1 deletion compose/spoof_events.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ services:
devices:
- "${PULSE_TTY}:${PULSE_TTY}"
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME}"
DATA_MOUNT_POINT: "${DATA_MOUNT_POINT}"
SYSTEM_NAME: "${SYSTEM_NAME}"
Expand Down
2 changes: 1 addition & 1 deletion compose/sync_msg_publisher.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ services:
init: true
tty: true
environment:
ROS_MASTER_URI: "${ROS_MASTER_URI}"
ROS_DOMAIN_ID: "${ROS_DOMAIN_ID:-0}"
NODE_HOSTNAME: "${NODE_HOSTNAME:-}"
ROS_IP: "${ROS_IP:-}"
SATA_MOUNT_POINT: "${DATA_MOUNT_POINT}"
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ services:

## ========================== GUI chain ========================================

# GUI deps layered on the Noetic core-deps image.
# GUI deps layered on the Jazzy core-deps image.
gui-deps:
build:
context: .
Expand Down
28 changes: 9 additions & 19 deletions docker/base/core-deps.dockerfile
Original file line number Diff line number Diff line change
@@ -1,24 +1,14 @@
FROM kamera/base/core-ros:latest

RUN apt-get update && apt-get install --no-install-recommends -y \
ros-noetic-compressed-image-transport \
ros-noetic-camera-info-manager \
ros-noetic-image-view \
ros-noetic-cv-bridge \
ros-noetic-nodelet \
ros-noetic-nodelet-topic-tools \
ros-noetic-vision-opencv \
ros-noetic-diagnostic-updater \
ros-noetic-self-test \
ros-noetic-polled-camera \
ros-noetic-message-generation \
ros-noetic-message-runtime \
libgtkmm-2.4-1v5 \
libglademm-2.4-1v5 \
libgtkglextmm-x11-1.2-dev \
libgtkglextmm-x11-1.2-0v5 \
libglade2-dev \
libglademm-2.4-dev \
ros-jazzy-compressed-image-transport \
ros-jazzy-image-transport \
ros-jazzy-camera-info-manager \
ros-jazzy-camera-calibration-parsers \
ros-jazzy-cv-bridge \
ros-jazzy-vision-opencv \
ros-jazzy-diagnostic-updater \
ros-jazzy-rosidl-default-generators \
&& rm -rf /var/lib/apt/lists/*

## build deps
Expand All @@ -40,7 +30,7 @@ RUN apt-get update -q && apt-get install --no-install-recommends -y \
usbutils \
&& rm -rf /var/lib/apt/lists/*

RUN pip install --no-cache-dir \
RUN pip install --break-system-packages --no-cache-dir \
pyserial \
osrf-pycommon \
shapely \
Expand Down
35 changes: 18 additions & 17 deletions docker/base/core-ros.dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
# This image contains the base of the ROS/CUDA for the system, plus
# a bunch of utility packages
FROM nvidia/cuda:12.6.2-devel-ubuntu20.04 AS base_cuda_ubuntu
# CUDA 13.0 = newest major with native support on the fleet's r580 drivers
# (13.1+ would rely on minor-version compatibility on r580 hosts; every node
# needs driver >= 580 before this image deploys).
FROM nvidia/cuda:13.0.3-devel-ubuntu24.04 AS base_cuda_ubuntu

WORKDIR /root
# setup environment
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV ROS_DISTRO noetic
ENV ROS_DISTRO jazzy
ENV DEBIAN_FRONTEND noninteractive

# setup timezone
Expand All @@ -20,22 +23,24 @@ RUN echo 'Etc/UTC' > /etc/timezone && \
RUN apt-get update && apt-get install -q -y --no-install-recommends \
dirmngr \
gnupg2 \
curl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*

# setup sources.list
RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list

# setup keys
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# setup ROS2 apt source (Jazzy runs on Ubuntu 24.04 / noble)
RUN curl -fsSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg \
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu noble main" \
> /etc/apt/sources.list.d/ros2-latest.list

# install ros packages
RUN apt-get update && apt-get install -y --no-install-recommends \
ros-noetic-ros-core=1.5.0-1* \
ros-noetic-ros-base=1.5.0-1* \
ros-noetic-perception=1.5.0-1* \
python3-catkin-tools \
ros-jazzy-ros-core \
ros-jazzy-ros-base \
ros-jazzy-perception \
python3-colcon-common-extensions \
python3-pip \
ros-noetic-rqt-image-view \
ros-jazzy-rqt-image-view \
&& rm -rf /var/lib/apt/lists/*

# ROS BUILD FINISHED
Expand All @@ -56,9 +61,6 @@ RUN apt-get update -q && apt-get install --no-install-recommends -y \
sqlite3 \
python3-pip \
python3-rosdep \
python3-rosinstall \
python3-vcstools \
python3-catkin-tools \
unzip \
&& apt-get update -q && apt-get install --no-install-recommends -y \
autoconf \
Expand All @@ -76,8 +78,7 @@ RUN apt-get update -q && apt-get install --no-install-recommends -y \


## ipython isn't strictly required (like most things in is kitchen sink image) but it's extremely useful for debugging
RUN pip install --upgrade --no-cache-dir pip \
&& pip install --no-cache-dir \
RUN pip install --break-system-packages --no-cache-dir \
ipython \
ipdb \
pyserial \
Expand Down
27 changes: 14 additions & 13 deletions docker/base/detector-viame-deps.dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# Build off the public VIAME docker build (with ITK support)
FROM kitware/viame:gpu-algorithms-seal AS vb
# Build off the public VIAME docker build (with ITK support).
# The current gpu-algorithms tag is built on Ubuntu 24.04 (noble), which is
# what Jazzy requires.
FROM kitware/viame:gpu-algorithms AS vb

WORKDIR /root
# setup environment
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV ROS_DISTRO noetic
ENV ROS_DISTRO jazzy
ENV DEBIAN_FRONTEND noninteractive

# install packages
Expand All @@ -20,19 +22,18 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
iputils-ping \
&& rm -rf /var/lib/apt/lists/*

# setup sources.list
RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list

# setup keys
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# setup ROS2 apt source (Jazzy runs on Ubuntu 24.04 / noble)
RUN curl -fsSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg \
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu noble main" \
> /etc/apt/sources.list.d/ros2-latest.list

# install ros packages
RUN apt-get update && apt-get install -y --no-install-recommends \
ros-noetic-ros-core=1.5.0-1* \
ros-noetic-ros-base=1.5.0-1* \
ros-noetic-perception=1.5.0-1* \
python3-catkin-tools \
ros-noetic-rqt-image-view \
ros-jazzy-ros-core \
ros-jazzy-ros-base \
ros-jazzy-perception \
python3-colcon-common-extensions \
&& rm -rf /var/lib/apt/lists/*

# Build tools necessary for catkin and roskv
Expand Down
26 changes: 13 additions & 13 deletions docker/base/gui-deps.dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
## GUI deps layered on the Noetic core-deps chain.
## GUI deps layered on the Jazzy core-deps chain.
FROM kamera/base/core-deps:latest

# libgl1-mesa-glx was dropped in Ubuntu 24.04; libgl1 + libglx-mesa0 replace it
RUN apt-get update && apt-get install -y --no-install-recommends \
gdal-bin \
python3-gdal \
python3-tk \
python3-wxgtk4.0 \
libgl1-mesa-glx \
libgl1 \
libglx-mesa0 \
libqt5x11extras5 \
locales \
&& rm -rf /var/lib/apt/lists/*
Expand All @@ -18,19 +20,17 @@ ENV LANG=en_US.UTF-8 \
LANGUAGE=en_US:en \
LC_ALL=en_US.UTF-8

RUN pip install --upgrade \
pip \
Pillow

# numpy/scipy/shapely/pyshp come from core-deps; only GUI-unique deps here.
# TODO: validate the unpinned pygeodesy already installed by core-deps and drop
# this <19.12 downgrade (legacy Py2-era pin, untested on Py3).
RUN pip install --no-cache-dir \
'PyGeodesy<19.12' \
# numpy/scipy/shapely/pyshp/pygeodesy come from core-deps; only GUI-unique deps
# here. The legacy 'PyGeodesy<19.12' pin is gone: the GUI uses
# pygeodesy.geoids.GeoidPGM, which the unpinned core-deps install provides
# (shapefile_monitor already runs against it).
RUN pip install --break-system-packages --no-cache-dir \
Pillow \
exifread \
ipython \
psutil \
simplekml

COPY src/core/roskv /src/roskv
RUN pip install --no-cache-dir '/src/roskv[redis]'
# roskv is no longer pip-installable (its setup.py was removed in the ROS2
# port); it is built into the colcon workspace by gui.dockerfile via
# --packages-up-to wxpython_gui, which pulls in roskv as a dependency.
Loading
Loading