Skip to content
This repository has been archived by the owner on Dec 30, 2023. It is now read-only.

Latest commit

 

History

History
114 lines (107 loc) · 3.09 KB

building.md

File metadata and controls

114 lines (107 loc) · 3.09 KB

Guida alla compilazione

Prerequisiti

  • 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

Download

git clone [email protected]:ElDavoo/zeromq-experiment.git

Compilazione

E' stato creato un CMakeLists.txt unico per tutti i test zeromq. Quindi:

Compilazione test ZeroMQ

cmake -B build/
cd build/
make

Compilazione test ROS2

cd ros2
colcon build

Esecuzione dei test

Preparazione

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.

Impostazione di PlotJuggler

  • ZeroMQ:

Plotjuggler con ZeroMQ

  • ROS2:

Plotjuggler con ROS2

Al fine di leggere in tempo reale i dati del topic telemetria di ROS2, Plotjuggler richiede che sulla macchina sia esso installato.

Esecuzione test ZeroMQ

Core singolo

  • 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

Core separati

  • 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

Esecuzione test ROS2

cd ros2
source install/local_setup.bash

Core singolo

  • 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

Core separati

  • 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