Runs on rails, so it never needs path planning or steering - just speed control along a fixed line. GPS is used for position logging to the command center rather than navigation. The interesting work is perception: a thermal PTZ camera and a top-facing lidar do the actual inspecting.
| Package | Language | Description |
|---|---|---|
railis_sensors |
C++ | Raw hardware I/O: F9P RTK GPS, NTRIP client, thermal PTZ camera. Lidar comes in via the livox_ros_driver2 submodule under extras/. |
railis_description |
URDF | TF tree between base_link and every sensor frame (GPS, lidar, thermal camera). Placeholder shapes/offsets until measured on the physical chassis. |
railis_localization |
C++ | EKF fusing gyro (from the lidar's onboard IMU), GPS, and wheel odometry - drift-corrected position, heading, and speed. |
railis_controller |
C++ | Slew-rate-limited, fuzzy-gain PID speed control. |
railis_perception |
Python | Thermal + lidar inspection nodes - currently skeletons (subscriptions wired up, detection logic TODO). |
railis_bringup |
- | Launch aggregator - brings up everything above with one command. |
This repo ships a complete, ready-to-use ROS2 Humble dev environment
in Docker - Ubuntu 22.04, full GUI over VNC (RViz2, rqt), SSH, and a
tmux session, all wired together. Nothing to configure beyond .env.
VSCode users: .devcontainer/devcontainer.json is already
configured (ROS, C++, Python extensions preinstalled) - just reopen
the folder in a container after ./scripts/init.sh, no extra setup.
Terminal/tmux users: ./scripts/dev.sh covers the whole workflow
(up, ssh, build, test, tmux) - no docker exec incantations
to memorize.
./scripts/init.sh # writes .env
./scripts/dev.sh up # or up-linux on Linux
./scripts/dev.sh ssh # lands in the workspace with ROS2 sourcedFull setup, all commands, and troubleshooting: docker/README.md
Once inside the container (either path above) with the workspace sourced:
git submodule update --init extras/livox_ros_driver2
cd extras/livox_ros_driver2 && cp package_ROS2.xml package.xml && cd -
colcon build --packages-skip livox_ros_driver2 # first pass, see note below
colcon build # once Livox-SDK2 is installed
source install/setup.bash
ros2 launch railis_bringup bringup.launch.pylivox_ros_driver2 needs Livox-SDK2 installed system-wide before it
builds - see its own README under extras/livox_ros_driver2/.
Each package's own README has its setup checklist (credentials,
channel IDs, calibration) - start with
railis_sensors/README.md.