Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
faa1ea5
Port custom_msgs to ROS2 (ament_cmake + rosidl)
romleiaj Jul 2, 2026
aa781ba
Port roskv and kamcore to ROS2
romleiaj Jul 2, 2026
1457428
Port nexus and view_server (imageview) to ROS2
romleiaj Jul 2, 2026
e5c373b
Port ins_driver to ROS2
romleiaj Jul 2, 2026
e2209a9
Port mcc_daq and ser_daq to ROS2
romleiaj Jul 2, 2026
408d953
Port kw_genicam_driver (IR camera) to ROS2; add shared cam_utils package
romleiaj Jul 2, 2026
398b05f
Port prosilica_camera (RGB/UV) to ROS2
romleiaj Jul 2, 2026
7ee4307
Port sprokit_adapters (VIAME detector adapter) to ROS2
romleiaj Jul 2, 2026
2e9631b
Convert backend metapackage to ament; postproc jobs need no port
romleiaj Jul 2, 2026
64c4917
Switch nayak/taiga runtime plumbing from ROS1 to ROS2
romleiaj Jul 2, 2026
98df939
Target ROS2 Jazzy Jalisco (Ubuntu 24.04)
romleiaj Jul 3, 2026
f83d09d
Base detector image on kitware/viame:gpu-algorithms
romleiaj Jul 3, 2026
4437ff8
Port phase_one (Phase One iXM RGB driver) to ROS2
romleiaj Jul 4, 2026
586414d
Port wxpython_gui (system control panel) to ROS2
romleiaj Jul 4, 2026
942fa7d
Port all remaining ROS1 code to ROS2; repo is now ROS1-free
romleiaj Jul 4, 2026
9f0d525
Sweep last ROS_MASTER_URI / catkin references from dev+setup scripts
romleiaj Jul 4, 2026
52e0562
Refresh gui-deps base image for Jazzy / Ubuntu 24.04
romleiaj Jul 4, 2026
4e6776c
Bump core base image CUDA 12.6.2 -> 13.0.3
cameron-a-johnson Aug 14, 2026
c431349
docker: adapt image builds to the Ubuntu 24.04 base.
cameron-a-johnson Sep 28, 2026
823cafe
Build legacy camera/data acquisiion native code with 24.04 change
cameron-a-johnson Sep 28, 2026
69f756b
wxpython_gui update with wxWidgets3.2 (Ubuntu 24's version) - satisfy…
cameron-a-johnson Sep 28, 2026
5f6021c
wxpython_gui: locate the repo root from REPO_DIR under ament installs
cameron-a-johnson Sep 28, 2026
906d8d4
replace stdlib/numpy APIs removed since py2 - collections.Mapping and…
cameron-a-johnson Sep 28, 2026
45f0bda
taiga: set effort to "default_effort", not "ON", which does not exist
cameron-a-johnson Sep 28, 2026
70ca1ee
make the kamera python package importable outside the containers
cameron-a-johnson Sep 28, 2026
fcae707
Drop py2-only __future__ imports across the tree: print_function, div…
cameron-a-johnson Sep 28, 2026
19cbe25
add the 2025 YOLO11s IR hotspot model package (Successor to the 2021 …
cameron-a-johnson Sep 28, 2026
5b1235c
cq was yq + jq. I retired it for jq only. taiga and nayak yaml config…
cameron-a-johnson Sep 28, 2026
8fc74c1
Read config.json with json.load, not yaml.safe_load
cameron-a-johnson Sep 28, 2026
37b8171
Stop installing yq; nothing consumes it since the JSON config switch
cameron-a-johnson Sep 28, 2026
609da93
nayak related rebase issue - point the default effort at an entry tha…
cameron-a-johnson Sep 28, 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
58 changes: 24 additions & 34 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,12 @@ 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 \
# --ignore-installed: scipy/shapely pull numpy, which pip otherwise tries (and
# fails) to uninstall from the Debian-owned site-packages on Ubuntu 24.04.
# numpy stays <2: the distro python3-opencv/cv_bridge are built against the
# numpy 1 ABI and "import cv2" fails under numpy 2.
RUN pip install --break-system-packages --no-cache-dir --ignore-installed \
"numpy<2" \
pyserial \
osrf-pycommon \
shapely \
Expand All @@ -51,15 +46,14 @@ RUN pip install --no-cache-dir \
## =================== install hid and DAQ drivers ===================

WORKDIR /src
RUN curl -fsSL https://github.com/signal11/hidapi/archive/master.zip -o hidapi.zip
# signal11/hidapi is unmaintained and its autotools setup no longer bootstraps
# under Ubuntu 24.04's autoconf; the Debian package provides the same
# libhidapi-libusb + headers the MCC DAQ drivers link against.
RUN apt-get update && apt-get install -q -y --no-install-recommends \
libhidapi-dev libusb-1.0-0-dev \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://github.com/wjasper/Linux_Drivers/archive/master.zip -o mcc_drivers.zip
RUN unzip -q hidapi.zip &&\
unzip -q mcc_drivers.zip -d mcc
WORKDIR /src/hidapi-master
RUN ./bootstrap &&\
./configure &&\
make -j`nproc` &&\
make install
RUN unzip -q mcc_drivers.zip -d mcc

## =================== other deps ===================

Expand All @@ -71,25 +65,21 @@ RUN :\
&& mkdir -p /src/fmt/build \
&& git checkout 9c418bc468baf434a848010bff74663e1f820e79 \
&& cd /src/fmt/build \
&& cmake -D CMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=TRUE -j .. \
&& cmake -D CMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=TRUE .. \
&& make -j && make install \
&&:

# todo: this is in-between patch releases but is necessary to build correctly. May need to fork and pin
RUN :\
&& curl -sSL https://github.com/sewenew/redis-plus-plus/archive/refs/tags/1.3.7.tar.gz -o 1.3.7.tar.gz \
&& tar -xzvf 1.3.7.tar.gz \
&& sed -i '0,/#include/s//#include <cstdint>\n&/' /src/redis-plus-plus-1.3.7/src/sw/redis++/utils.h \
&& mkdir -p /src/redis-plus-plus-1.3.7/build \
&& cd /src/redis-plus-plus-1.3.7/build \
&& cmake -D CMAKE_BUILD_TYPE=Release -D REDIS_PLUS_PLUS_BUILD_TEST=OFF -j .. \
&& cmake -D CMAKE_BUILD_TYPE=Release -D REDIS_PLUS_PLUS_BUILD_TEST=OFF .. \
&& make -j && make install \
&&:

# Add yq for configu query to work
RUN curl -sL https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64 \
-o /usr/local/bin/yq && \
chmod +x /usr/local/bin/yq

## =================== install ebus sdk ===================
COPY ./artifacts/ebus.deb /ebus.deb
COPY ./artifacts/GigE-V-Framework_x86_2.02.0.0132.tar.gz /gigev.tar.gz
Expand Down
40 changes: 21 additions & 19 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,13 +78,13 @@ 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 \
# typing/pathlib are py2 backports (stdlib since 3.5) and break on 3.12;
# --ignore-installed keeps pip from trying to uninstall Debian-owned packages
# (psutil) that overlap with these deps.
RUN pip install --break-system-packages --no-cache-dir --ignore-installed \
ipython \
ipdb \
pyserial \
typing \
pathlib \
bottle \
requests \
profilehooks \
Expand Down
Loading