Roadmap & Contributing

If you’re curious about the planned features and overall development roadmap, see the open issues on GitHub:

Feel free to open a new issue if you don’t see what you’d like implemented. It also helps if you let us know what features you care about the most by leaving comments or reacting to issues.

If you’d like to contribute or get otherwise involved, get in touch via GitHub or , pull requets are also highly appreciated.

Here are some quality-of-life tips for debugging and working with the Phantom Bridge node source code:

Log Files

To write Bridge node logs to files, you can configure the ROS_LOG_DIR environment variable in the compose.yaml file, as seen below. For log persistence across container lifecycles, specify an output directory that’s external to the container.

compose.yaml
 services:
   phntm_bridge:
     container_name: phntm-bridge
     environment:
      - ROS_LOG_DIR=/ros2_ws/phntm_bridge_logs
     volumes:
       ~/phntm_bridge_logs:/ros2_ws/phntm_bridge_logs

Dev Mode

To streamline development with frequently changing code, you can mount a live repository into the Docker container, overwriting the /ros2_ws/src/phntm_bridge directory. This approach eliminates the need for constant image rebuilds, as illustrated in the example below. (This is currently the recommended way of running Phantom Bridge, as it makes upgrading as easy as pulling updates from the GitHub repo and restarting the Docker container.)

You may also prefer to not launch the Bridge node automatically on the container start, but rather start it manually from the container’s interactive shell.

compose.yaml
 services:
   phntm_bridge:
     container_name: phntm-bridge
     volumes:
       - ~/phntm_bridge:/ros2_ws/src/phntm_bridge # override with live repo
     command:
       /bin/sh -c "while sleep 1000; do :; done" # don't launch on container start

Then you can launch the process manually like so:

docker compose up phntm_bridge -d # launch the modified container (detached)
docker exec -it phntm-bridge bash # get interactive shell inside the container
ros2 launch phntm_bridge bridge_agent_launch.py # launches Bridge & Agent nodes, Ctrl-C kills both

Note that when launched manually like this, on the first run inside the container the Bridge node performs first run checks and then exists. This is normal behavior but since the container doesn’t restart afterwards, you’ll need to launch the node again by hand. Before you do so, make sure to source the environment to get access to any custom packages that may have just been installed with source /ros2_ws/install/setup.bash (in normal mode, the whole container restarts and fresh environment is sourced automatically).