- Una macchina con Ubuntu 20.04 LTS. Preferibilmente, una NVIDIA Jetson Nano Developer Kit.
- CMake 3.16.3 o superiore.
- GCC 9.4.0
- ROS2 Foxy Fitzroy
- ZeroMQ 4.3.2
- Taskset, per impostare l'affinità dei processi.
- PlotJuggler 3.7.1
git clone [email protected]:ElDavoo/zeromq-experiment.git
E' stato creato un CMakeLists.txt unico per tutti i test zeromq. Quindi:
cmake -B build/
cd build/
make
cd ros2
colcon build
L'esecuzione richiede un terminale per ogni nodo (quindi da 2 a 3). Siccome abbiamo precedentemente impostato il parametro "isolcpus=1-3", abbiamo a nostra disposizione i core 1, 2 e 3. Si è anche scelto di eseguire i nodi su un singolo core al fine di comparare i risultati con l'esecuzione su più core.
- ZeroMQ:
- ROS2:
Al fine di leggere in tempo reale i dati del topic telemetria di ROS2, Plotjuggler richiede che sulla macchina sia esso installato.
- Majordomo
taskset --cpu-list 1 build/zeromq/majordomo/alfredPennyworth/broker
taskset --cpu-list 1 build/zeromq/majordomo/alfredPennyworth/cliente
taskset --cpu-list 1 build/zeromq/majordomo/alfredPennyworth/worker
- PubSub IPC
taskset --cpu-list 1 build/zeromq/pub_sub/ipc/subscriber
taskset --cpu-list 1 build/zeromq/pub_sub/ipc/publisher
- PubSub TCP
taskset --cpu-list 1 build/zeromq/pub_sub/tcp/subscriber
taskset --cpu-list 1 build/zeromq/pub_sub/tcp/publisher
- Majordomo
taskset --cpu-list 1 build/zeromq/majordomo/alfredPennyworth/broker
taskset --cpu-list 2 build/zeromq/majordomo/alfredPennyworth/cliente
taskset --cpu-list 3 build/zeromq/majordomo/alfredPennyworth/worker
- PubSub IPC
taskset --cpu-list 1 build/zeromq/pub_sub/ipc/subscriber
taskset --cpu-list 2 build/zeromq/pub_sub/ipc/publisher
- PubSub TCP
taskset --cpu-list 1 build/zeromq/pub_sub/tcp/subscriber
taskset --cpu-list 2 build/zeromq/pub_sub/tcp/publisher
cd ros2
source install/local_setup.bash
- Majordomo
taskset --cpu-list 1 build/zeromq/majordomo/alfredPennyworth/broker
taskset --cpu-list 1 build/zeromq/majordomo/alfredPennyworth/cliente
taskset --cpu-list 1 build/zeromq/majordomo/alfredPennyworth/worker
- PubSub IPC
taskset --cpu-list 1 build/zeromq/pub_sub/ipc/subscriber
taskset --cpu-list 1 build/zeromq/pub_sub/ipc/publisher
- PubSub TCP
taskset --cpu-list 1 build/zeromq/pub_sub/tcp/subscriber
taskset --cpu-list 1 build/zeromq/pub_sub/tcp/publisher
- PubSub
taskset --cpu-list 1 ros2 run pub_sub subscriber
taskset --cpu-list 2 ros2 run pub_sub publisher
- Majordomo
taskset --cpu-list 1 ros2 run alfredpennyworth broker
taskset --cpu-list 2 ros2 run alfredpennyworth cliente
taskset --cpu-list 3 ros2 run alfredpennyworth worker