ROS 2 Setup And Smoke Test
This guide describes the supported local smoke path for the ZeptoDB ROS 2 connector. It is intended for development hosts, CI workers, and robot-lab edge nodes where the full ROS 2 apt distribution is not already installed.
The tested path on Amazon Linux 2023 is RoboStack Jazzy through micromamba. On
Ubuntu hosts, a sourced system ROS 2 Jazzy install can also work as long as
rclcpp, std_msgs, rosbag2_cpp, rosbag2_storage, ros2topic, and the
tracetools runtime dependencies are available to CMake and the dynamic
linker.
Quick Smoke
Section titled “Quick Smoke”tools/run-ros2-smoke.shThe script performs four checks:
- Creates or reuses
ROS2_PREFIX(default:$HOME/ros2_jazzy) and installs any missing required RoboStack packages. - Verifies
rclcpp,std_msgs,rosbag2_cpp,rosbag2_storage,rosbag2_storage_default_plugins,ros2topic, anddemo_nodes_cpp. - Publishes
std_msgs/msg/Float64 {data: 42.5}on/zepto_smokeand confirmsros2 topic echo --oncereceives it. - Configures a focused ZeptoDB build with
-DZEPTO_USE_ROS2=ON,-DZEPTO_BUILD_PYTHON=OFF, and-DZEPTO_ENABLE_DUCKDB=OFF, then runsRos2ConsumerTest.*, including generated sqlite3 rosbag2 import tests and the liverclcpppublish to ZeptoDB table ingest test.
Useful overrides:
MICROMAMBA=$HOME/.local/bin/micromamba \ROS2_PREFIX=$HOME/ros2_jazzy \BUILD_DIR=/tmp/zeptodb_ros2_smoke_build \ROS_DOMAIN_ID=79 \JOBS=8 \tools/run-ros2-smoke.shManual Install
Section titled “Manual Install”MAMBA_ROOT_PREFIX="$HOME/.mamba" ~/.local/bin/micromamba create -y \ -p "$HOME/ros2_jazzy" \ -c conda-forge -c robostack-jazzy \ lttng-ust \ ros-jazzy-ros-base \ ros-jazzy-rclcpp \ ros-jazzy-std-msgs \ ros-jazzy-rosbag2-cpp \ ros-jazzy-rosbag2-storage-default-plugins \ ros-jazzy-ros2topic \ ros-jazzy-demo-nodes-cpplttng-ust is included explicitly because RoboStack tracetools may export
raw -llttng-ust linker flags. ZeptoDB’s zepto_ros2 CMake target propagates
the ROS prefix lib directory so downstream executables can resolve those
libraries during link.
Manual Build
Section titled “Manual Build”MAMBA_ROOT_PREFIX="$HOME/.mamba" ~/.local/bin/micromamba run \ -p "$HOME/ros2_jazzy" \ /usr/bin/cmake -S . -B /tmp/zeptodb_ros2_smoke_build -G Ninja \ -DZEPTO_USE_ROS2=ON \ -DZEPTO_BUILD_PYTHON=OFF \ -DZEPTO_ENABLE_DUCKDB=OFF
MAMBA_ROOT_PREFIX="$HOME/.mamba" ~/.local/bin/micromamba run \ -p "$HOME/ros2_jazzy" \ ninja -C /tmp/zeptodb_ros2_smoke_build -j"$(nproc)" zepto_ros2 zepto_tests
MAMBA_ROOT_PREFIX="$HOME/.mamba" ~/.local/bin/micromamba run \ -p "$HOME/ros2_jazzy" \ /tmp/zeptodb_ros2_smoke_build/tests/zepto_tests \ --gtest_filter='Ros2ConsumerTest.*'The smoke build disables embedded DuckDB because the ROS connector path does not depend on it, and avoiding that dependency keeps CI and edge validation small.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Fix |
|---|---|
micromamba not found | Install micromamba or set MICROMAMBA=/path/to/micromamba. |
rclcpp/std_msgs: not found | Run CMake inside the ROS environment or source a system ROS 2 setup before configuring. |
rosbag2_cpp/storage: not found | Install ros-jazzy-rosbag2-cpp and ros-jazzy-rosbag2-storage-default-plugins, then reconfigure. |
cannot find -llttng-ust | Install lttng-ust into the ROS environment and reconfigure. |
| ROS pub/sub timeout | Use an isolated ROS_DOMAIN_ID, check local firewall rules, and ensure no stale daemon is using incompatible middleware settings. |
| CMake RPATH warning for conda/system libraries | Expected for focused RoboStack smoke builds. Use one consistent toolchain/runtime path for release packaging. |
Production Notes
Section titled “Production Notes”- The current bridge is read-only. It subscribes to scalar
std_msgstopics and imports/replays scalar rosbag2 topics without publishing back into the ROS graph. - Use explicit topic allowlists in production configs. Avoid wildcard discovery outside lab tooling.
- Keep robot control loops in their own ROS 2 executor. ZeptoDB should sit beside the graph as telemetry storage, replay, and analytics infrastructure.
- Run the smoke script whenever changing ROS 2 packages, middleware, compiler, or container base images.