Installation

1. dynamicalnodes

Requires Python 3.12 or later. A virtual environment is recommended to keep dependencies isolated:

python3 -m venv --system-site-packages .venv
source .venv/bin/activate

--system-site-packages makes ROS2 Python packages (rclpy, message types, etc.) visible inside the venv without reinstalling them.

Then install dynamicalnodes:

pip install dynamicalnodes

For development:

git clone https://github.com/nehalsinghmangat/dynamicalnodes
cd dynamicalnodes
python3 -m venv --system-site-packages .venv
source .venv/bin/activate
pip install -e ".[dev]"

To reactivate the venv in a new terminal:

source /path/to/dynamicalnodes/.venv/bin/activate

2. ROS2 Jazzy

Follow the official ROS2 Jazzy installation instructions for your platform, then source the setup file in every new terminal (or add it to ~/.bashrc):

source /opt/ros/jazzy/setup.bash

Verify the correct version is active:

printenv ROS_DISTRO   # should print: jazzy
ros2 --version

If ROS_DISTRO is empty, ROS2 is not sourced in the current shell. If it prints a different distro (e.g. humble), another ROS2 version is sourced instead. Only one distro can be active per shell — source the one you want explicitly:

source /opt/ros/jazzy/setup.bash   # overrides whatever was sourced before

To make Jazzy the default in every new terminal, add this line to ~/.bashrc (replacing any existing source /opt/ros/.../setup.bash line):

echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc

3. PlotJuggler

sudo apt-get install -y ros-jazzy-plotjuggler-ros

Launch it:

ros2 run plotjuggler plotjuggler