RoboLoc-G: Multisensor Localization Dataset from a Robotic Gantry System
收藏资源简介:
Overview This dataset contains synchronized measurements from multiple localization sensors collected on July 2nd, 2025. The dataset is designed to facilitate research in multi-sensor fusion, localization, and tracking algorithms. It features data from: Radio-Based Sensors: WiFi Fine Time Measurement (FTM), Ultra-Wideband (UWB), and Millimeter-Wave (mmWave) Radar. Visual Sensors: An OptiTrack motion capture system and synchronized video cameras. Ground Truth Reference: A high-precision 3-axis gantry robot system. Data Collection Setup The measurements were collected using a large high-precision 3-axis gantry robot system located at CITIC (Centro de Investigación en Tecnologías de la Información y las Comunicaciones) in A Coruña, Spain. This controlled environment enables precise and repeatable sensor measurements for localization research. Gantry Robot System The data collection platform features: 3-Axis Control: X, Y, Z linear axes for precise sensor positioning Real-time Coordination: LinuxCNC-based control system with Mesa Electronics interface cards and igus® dryve D1 motor controllers Industrial Motors: 3 NEMA 34 brushless motors (X and Y axes) and a NEMA 24 stepper motor (Z axis) Closed Loop Control: High-precision encoder feedback for accurate positioning Large Work Envelope: 5.3m (X) × 5.2m (Y) × 1m (Z) working volume Sub-centimeter Precision: Custom calibration solution using OptiTrack motion capture system to measure and compensate for positioning errors Safety Systems: Emergency stop and inductive limit sensors Heavy Duty Construction: Built with igus® self-lubricating linear units for lifelong operation without external lubrication Calibration System The gantry robot achieves sub-centimeter precision across the entire work envelope through: Integration with existing OptiTrack motion capture system Custom calibration software for analyzing positioning errors LinuxCNC kinematics module for real-time error compensation Continuous calibration validation during data collection For detailed information about the gantry robot system, visit: https://github.com/GTEC-UDC/linuxcnc_gantry_robot Sensors Used mmWave Radar Sensors IWR6843ISK (ISK0 & ISK1)The IWR6843ISK is a 60 GHz mmWave radar sensor evaluation module developed by Texas Instruments. It integrates a Frequency-Modulated Continuous Wave (FMCW) transceiver, a DSP, and an MCU, enabling real-time 3D object detection and tracking. This module is particularly suited for applications like people counting and motion detection. IWR6843AOP (AOP0)The IWR6843AOP is a variant of the IWR6843 series featuring an Antenna-on-Package (AoP) design, which simplifies hardware integration by embedding the antenna within the package. It offers the same capabilities as the IWR6843ISK but with a more compact form factor, making it ideal for space-constrained applications. Wi-Fi FTM Devices ESP32-S2 (Tags and Anchors)The ESP32-S2 is a Wi-Fi-enabled microcontroller from Espressif Systems that supports IEEE 802.11mc Fine Time Measurement (FTM). This feature allows for precise distance measurements between devices, facilitating accurate indoor positioning without the need for additional hardware. Ultra-Wideband (UWB) and Inertial Measurement Unit (IMU) Pozyx UWB Tags and AnchorsPozyx provides UWB-based positioning systems capable of delivering centimeter-level accuracy. The tags and anchors are equipped with UWB transceivers and 9-axis IMUs, combining high-precision distance measurements with orientation and motion sensing. These devices are designed for robust real-time tracking in industrial environments. Visual Sensors OptiTrack Motion Capture CamerasThe OptiTrack system consists of 10 high-resolution cameras (8 Prime infrared cameras and 2 color cameras) providing positioning data. The Prime cameras operate at 120 FPS with infrared illumination for marker tracking, while color cameras capture visual reference at 30 FPS. All cameras are precisely calibrated and synchronized for accurate 3D motion capture. Video RecordingSynchronized video recordings were captured from two additional cameras at 12.5 FPS during each measurement session, providing visual documentation of the experimental setup and sensor movements. These recordings enable the evaluation of computer vision-based localization and tracking algorithms. Scenario Coordinate Systems The dataset uses two primary coordinate systems: Gantry Coordinates: The native coordinate system of the gantry robot. The origin is at a top corner of the workspace, with the Z-axis pointing vertically upwards. Consequently, X and Y values are positive, while Z values are negative. Most data, including ground truth, is provided in this system. OptiTrack Coordinates: The coordinate system defined by the OptiTrack calibration procedure. Its origin is at the center of the scenario on the floor, with the Z-axis pointing up. To convert between these coordinate systems, we estimated the following alignment parameters that convert OptiTrack coordinates to gantry coordinates: Translation: (-2647.33, 2226.40, -2462.04) mm Rotation: (0.6730°, 0.2091°, -94.6088°) in X, Y, Z axes Alignment accuracy: 3.27 mm RMS error over 19,209 samples Operations are performed in order: first translation, then X, Y and Z axis rotations. This way, the OptiTrack coordinate system origin corresponds to the position (2459.873, 2448.686, -2445.363) mm. Laboratory Infrastructure Layout The CITIC laboratory features a comprehensive sensor infrastructure with precise positioning for multi-modal localization research. Radio-based Sensor Infrastructure The sensor infrastructure positions are provided in centimeters in gantry coordinates. Also, the vertical position from the floor is provided. Sensor ID Type X (cm) Y (cm) Z (cm) Height (cm) Notes AOP MMWAVE 284.16 215.99 43.9 288.4 IWR6843AOP with Antenna-on-Package ISK_0 MMWAVE -37.74 253.14 -15.0 229.5 IWR6843ISK, 5° downward pitch ISK_1 MMWAVE 553.83 329.07 -14.5 230.0 IWR6843ISK, 5° downward pitch FTM_87C6 FTM 196.10 -32.52 -12.0 232.5 ESP32-S2 WiFi anchor FTM_B9DC FTM -39.22 234.32 -12.0 232.5 ESP32-S2 WiFi anchor FTM_DBF0 FTM 336.96 562.66 -12.0 232.5 ESP32-S2 WiFi anchor FTM_74E8 FTM 555.14 351.84 -12.0 232.5 ESP32-S2 WiFi anchor UWB_685A UWB 120.92 -72.95 -84.8 159.7 Pozyx UWB anchor UWB_6867 UWB 308.24 -71.36 -213.3 31.2 Pozyx UWB anchor UWB_685B UWB -38.97 330.65 -12.5 232.0 Pozyx UWB anchor UWB_687C UWB 40.95 563.00 -12.5 232.0 Pozyx UWB anchor UWB_686F UWB 555.20 203.36 -12.5 232.0 Pozyx UWB anchor OptiTrack Motion Capture System The OptiTrack system provides positioning data using a network of infrared cameras. Positions are given in meters relative to the OptiTrack coordinate system. Camera ID X (m) Y (m) Z (m) Type Resolution CAM_11782 0.485 -2.870 2.115 Color 1920×1080 CAM_11785 -3.315 -0.300 2.137 Color 1920×1080 CAM_85650 -2.977 3.163 2.082 Prime 1664×1088 CAM_85653 2.903 0.288 2.030 Prime 1664×1088 CAM_85654 2.756 -2.795 2.076 Prime 1664×1088 CAM_85655 -0.578 3.280 2.103 Prime 1664×1088 CAM_85656 2.236 3.566 2.027 Prime 1664×1088 CAM_85749 -2.309 -3.092 2.045 Prime 1664×1088 CAM_85750 -0.358 -3.035 2.159 Prime 1664×1088 CAM_85751 -3.415 -0.046 2.113 Prime 1664×1088 Notes: Prime cameras (85xxx series) operate at 120 FPS with infrared illumination Color cameras (11xxx series) operate at 30 FPS for visual reference Tag Positions Relative to Gantry The mobile sensors are mounted on the gantry robot at fixed relative positions. Coordinates are given in millimeters relative to the gantry’s reference point, in gantry coordinates. Tag Type X offset (mm) Y offset (mm) Z offset (mm) Standard Deviation Notes UWB Tag -240.19 117.68 -68.12 ±0.02 mm Pozyx UWB tag with IMU FTM Tag -248.02 -104.31 -75.11 ±0.02 mm ESP32-S2 WiFi tag Mannequin Feet -250.24 12.68 -1575.36 ±0.09 mm The position measurements were obtained by placing OptiTrack reflective markers around the UWB and FTM tags. Also, the central position of mannequin feet was measured with OptiTrack markers. The relative positions obtained are based on 1,347 valid samples from a static OptiTrack measurement, obtaining sub-millimeter precision. Measurement Sessions The dataset contains 8 different trajectory patterns executed by the gantry robot system: Take Description Duration circle Circular trajectory 49.56s zigzag1 Zigzag pattern #1 109.41s zigzag2 Zigzag pattern #2 103.59s random1 Random movements #1 95.78s zigzag3 Zigzag pattern #3 131.75s zigzag4 Zigzag pattern #4 129.98s random2 Random movements #2 170.18s still Static measurement 11.24s Each trajectory was executed with synchronized data collection from all sensors (UWB, FTM, IMU, mmWave radar) and video recording from the OptiTrack cameras. The gantry robot followed precise, pre-programmed paths to ensure repeatable and controlled measurements for localization research. Dataset Structure The dataset is distributed as a collection of ZIP archives, organized by data type for efficient download and use. The total compressed size is approximately 2.10 GB. Sensor Measurements SENSORS_MEASUREMENTS_ROS2BAGS.zip: Sensor data (mmWave, UWB, FTM, IMU) in ROS2 bag format. SENSORS_MEASUREMENTS_CSV.zip: Sensor data exported to CSV format. Ground Truth & Trajectories GANTRY_LINUX_CNC.zip: G-code files defining the robot’s movement for each take. GANTRY_MEASUREMENTS.zip: Raw, high-precision position data logged by the gantry system. OPTITRACK_MEASUREMENTS_TAK.zip: Native .tak files from OptiTrack Motive. OPTITRACK_MEASUREMENTS_CSV.zip: Multi-object tracking data from OptiTrack, exported to CSV. GROUND_TRUTH.zip: The final, processed ground truth positions for all objects, synchronized and provided in both Gantry and OptiTrack coordinate systems. Calibration OPTITRACK_CALIBRATION.zip: Intrinsic and extrinsic parameters for the 10-camera OptiTrack system. VIDEO_CAPTURES_CALIBRATION.zip: Calibration parameters for the two additional video recording cameras. Video Recordings VIDEO_CAPTURES_*.zip: Synchronized videos (12.5 fps) from two external cameras for each take. OPTITRACK_REF_VIDEOS_*.zip: Reference videos (30 fps) recorded by the two OptiTrack color cameras for each take. Extracted Directory Structure After unzipping the archives, the data files will be organized as follows: SENSORS_MEASUREMENTS_CSV/ ├── AOP/ # mmWave radar sensor data │ └── {take}/ │ └── radar_scan.csv # Raw radar scan data ├── ISK0/ # mmWave radar sensor data │ └── {take}/ │ ├── radar_scan.csv # Raw radar scan data │ └── cloud.csv # Processed point cloud data ├── ISK1/ # mmWave radar sensor data │ └── {take}/ │ ├── radar_scan.csv # Raw radar scan data │ └── cloud.csv # Processed point cloud data └── UWB_FTM_IMU/ # Combined UWB, FTM, and IMU data └── {take}/ ├── gtec-ftm.csv # WiFi Fine Time Measurement data ├── gtec-uwb-ranging-pozyx.csv # UWB ranging measurements └── gtec-uwb-imu-pozyx_0.csv # IMU sensor data SENSORS_MEASUREMENTS_ROS2BAGS/ ├── AOP0/ # mmWave radar sensor data │ └── {take}/ │ ├── metadata.yaml # ROS2 bag metadata │ └── rosbag2_*.mcap # ROS2 bag data file ├── ISK0/ # mmWave radar sensor data │ └── {take}/ │ ├── metadata.yaml # ROS2 bag metadata │ └── rosbag2_*.mcap # ROS2 bag data file ├── ISK1/ # mmWave radar sensor data │ └── {take}/ │ ├── metadata.yaml # ROS2 bag metadata │ └── rosbag2_*.mcap # ROS2 bag data file └── UWB_FTM_IMU/ # Combined UWB, FTM, and IMU data └── {take}/ ├── metadata.yaml # ROS2 bag metadata └── rosbag2_*.mcap # ROS2 bag data file GANTRY_MEASUREMENTS/ └── {take}_gantry.csv # Measured gantry position data GANTRY_LINUX_CNC/ ├── {take}_gantry.ngc # G-code trajectory commands └── still_gantry.txt # Static position configuration GROUND_TRUTH/ ├── {take}_ground_truth_gantry.csv # Ground truth in gantry coordinates └── {take}_ground_truth_optitrack.csv # Ground truth in OptiTrack coordinates OPTITRACK_MEASUREMENTS_CSV/ └── {take}_optitrack.csv # Multi-object tracking data OPTITRACK_MEASUREMENTS_TAK/ └── {take}_optitrack.tak # Native Motive take files OPTITRACK_CALIBRATION/ ├── extracted_calibration_params.json # Complete calibration parameters ├── optitrack_internal_calibration.cal # Binary calibration file └── Node{camera_id}.json # Individual camera parameters VIDEO_CAPTURES_CALIBRATION/ ├── Nodecam1.json # Camera 1 calibration parameters └── Nodecam2.json # Camera 2 calibration parameters VIDEO_CAPTURES/ ├── {take}_cam1.mp4 # Camera 1 recordings (12.5 fps) └── {take}_cam2.mp4 # Camera 2 recordings (12.5 fps) OPTITRACK_REF_VIDEOS/ ├── {take}_optitrack_C11782.mp4 # OptiTrack color camera 1 (30 fps) └── {take}_optitrack_C11785.mp4 # OptiTrack color camera 2 (30 fps) Note: {take} refers to: circle, random1, random2, still, zigzag1, zigzag2, zigzag3, zigzag4. Camera Calibration and Configuration Files OptiTrack System Calibration The OptiTrack system calibration data is contained in the OPTITRACK_CALIBRATION.zip file: optitrack_internal_calibration.cal Binary calibration file in OptiTrack’s native format containing: Complete calibration solution for all cameras Wand calibration data Ground plane definition extracted_calibration_params.json Complete calibration parameters extracted from the optitrack_internal_calibration.cal. Contains the calibration parameters for all 10 OptiTrack cameras using an internal OptiTrack coordinate system, different from the OptiTrack coordinate system used in the CSVs: Intrinsic Parameters: Focal length, lens center, distortion coefficients Extrinsic Parameters: 3D position and orientation matrix for each camera Camera Settings: Exposure, threshold, intensity, frame rate (120 Hz for Prime cameras, 30 Hz for color cameras) Individual Camera Files (Node*.json) Individual calibration files for each OptiTrack camera in OptiTrack coordinate system (used in CSVs) in meters: Node11782.json and Node11785.json: Color cameras (1920×1080) Node85650.json through Node85751.json: Prime infrared cameras (1664×1088) Each file contains: Camera name or serial number 3D position Resolution Intrinsic calibration matrix (intr_mtx) with camera focal length and principal point Distortion coefficients (radial and tangential) in OpenCV format: [k1, k2, p1, p2, k3] Extrinsic Parameters: Rotation vector (rvec) and translation vector (tvec). The combined rotation and translation matrix is also included (R_t_mat) Video Camera Calibration The video camera calibration data is contained in the VIDEO_CAPTURES_CALIBRATION.zip file. This zip contains two json files (Nodecam1.json and Nodecam2.json) with the calibration parameters for the cameras. This calibration uses the gantry coordinate system in meters and has the same structure as the Node*.json files from previous section. Ground Truth Data Structure The ground truth data combines high-precision gantry measurements with object relative positions and coordinate system alignment parameters. The final ground truth data was generated based on: Base positions: Using precise gantry measurements as reference Object positions: Adding relative offsets to gantry plate position Ground truth in both coordinate systems: The ground truth data is provided both in the gantry coordinate system and in the OptiTrack coordinate system using the alignment parameters. Time synchronization: Time synchronization for all recording devices and computers was managed by a local Chrony NTP server hosted on the gantry measurement computer. While most systems were synchronized accurately, the OptiTrack system exhibited a consistent offset. Consequently, all OptiTrack measurements require a time shift of +0.016 seconds to align with the ground-truth timestamps. Ground Truth Files (GROUND_TRUTH.zip) {take}_ground_truth_gantry.csv: Ground truth positions in gantry coordinate system {take}_ground_truth_optitrack.csv: Ground truth positions in OptiTrack coordinate system CSV Structure: time,Grua.X,Grua.Y,Grua.Z,UWB_tag.X,UWB_tag.Y,UWB_tag.Z,FTM_tag.X,FTM_tag.Y,FTM_tag.Z,Feet.X,Feet.Y,Feet.Z Tracked Objects: Grua: Gantry robot platform (main reference) UWB_tag: UWB positioning tag FTM_tag: WiFi FTM tag Feet: Feet of the tracked mannequin G-code Trajectory Files The LinuxCNC G-code files define the precise robot trajectories. The G-code commands for each trajectory are stored in each {take}_gantry.ngc files. ROS2 Bag Contents ROS2 Bags Format: MCAP files with corresponding metadata.yaml Location: Each sensor directory contains timestamped subdirectories with ROS2 bag files Usage: Can be replayed using ros2 bag play command MMWAVE Radar Bags (AOP0, ISK0, ISK1) The radar sensor bags contain the following topics: Topic ID Message Type Description /all_targets sensor_msgs/msg/PointCloud2 Point cloud containing all detected radar targets /target/target_0 geometry_msgs/msg/PointStamped Individual target 0 position and timestamp /target/target_1 geometry_msgs/msg/PointStamped Individual target 1 position and timestamp /target/target_2 geometry_msgs/msg/PointStamped Individual target 2 position and timestamp /target/target_3 geometry_msgs/msg/PointStamped Individual target 3 position and timestamp /target/target_4 geometry_msgs/msg/PointStamped Individual target 4 position and timestamp /target/target_5 geometry_msgs/msg/PointStamped Individual target 5 position and timestamp /target/target_6 geometry_msgs/msg/PointStamped Individual target 6 position and timestamp /target/target_7 geometry_msgs/msg/PointStamped Individual target 7 position and timestamp /radar_scan radar_msgs/msg/RadarScan Raw radar scan data with range, azimuth, elevation, and doppler information /cloud sensor_msgs/msg/PointCloud2 Processed point cloud data from radar detections UWB, FTM, and IMU Bags The UWB, FTM, and IMU sensor bags contain the following topics: Topic ID Message Type Description /gtec/ftm gtec_msgs/msg/ESP32S2FTMRanging WiFi Fine Time Measurement ranging data from ESP32-S2 devices /gtec/toa/anchors visualization_msgs/msg/MarkerArray Visualization markers for anchor positions in the environment /gtec/uwb/imu/pozyx_0 sensor_msgs/msg/Imu IMU data from Pozyx device including acceleration, angular velocity, and orientation /gtec/uwb/ranging/pozyx gtec_msgs/msg/Ranging UWB ranging measurements from Pozyx system Sensor Data Description (CSV files) The CSV files include data from the most important topics stored in the ROS2 bags. These files enable direct and efficient analysis of the information captured during measurement sessions, facilitating access to critical data for evaluation and application development. WiFi Fine Time Measurement (FTM) File: gtec-ftm.csv WiFi FTM provides distance measurements based on Round-Trip Time (RTT) calculations between devices. Fields: timestamp: Measurement timestamp anchor_id: Identifier of the module that acted as beacon in the measurement array_index: Array index for the measurement dist_est: Distance estimation in meters (calculated from rtt_est) rtt_est: RTT estimation created by the ESP32-S2 firmware (nanoseconds) rtt_raw: RTT value averaged among different frames (nanoseconds) num_frames: Number of frames successfully sent during RTT communication Frame-level data: frames.rssi: Received signal strength (dBm) frames.rtt: RTT value for individual frame (nanoseconds) frames.t1: Outgoing timestamp of first packet from sender (picoseconds) frames.t2: Reception timestamp of ranging request at receiver (picoseconds) frames.t3: Response message timestamp at receiver (picoseconds) frames.t4: Reception timestamp of response message at sender (picoseconds) Ultra-Wideband (UWB) File: gtec-uwb-ranging-pozyx.csv UWB provides high-precision distance measurements using time-of-flight principles. Fields: timestamp: Measurement timestamp anchor_id: Identifier of the UWB anchor range: Distance measurement (meters) rss: Received Signal Strength seq: Sequence number tag_id: Identifier of the UWB tag Inertial Measurement Unit (IMU) File: gtec-uwb-imu-pozyx_0.csv IMU provides 6-DOF motion data including linear acceleration and angular velocity. Fields: timestamp: Measurement timestamp angular_velocity.x/y/z: Angular velocity components (rad/s) angular_velocity_covariance[0-8]: Covariance matrix for angular velocity linear_acceleration.x/y/z: Linear acceleration components (m/s²) linear_acceleration_covariance[0-8]: Covariance matrix for linear acceleration orientation.w/x/y/z: Quaternion orientation orientation_covariance[0-8]: Covariance matrix for orientation header.frame_id: Reference frame identifier header.stamp.sec/nanosec: ROS timestamp components MMWAVE Radar File: radar_scan.csv Millimeter-wave radar provides detection data with range, angular position, and velocity information. All measurements are relative to the radar’s frame of reference. Fields: timestamp: Measurement timestamp array_index: Array index for the measurement header.frame_id: Reference frame identifier header.stamp.nanosec: ROS timestamp nanoseconds component header.stamp.sec: ROS timestamp seconds component returns.range: Distance (meters) from the sensor to the detected return returns.azimuth: Angle (radians) in the azimuth plane between the sensor and the detected return Positive angles are anticlockwise from the sensor Negative angles are clockwise from the sensor (per REP-0103) returns.elevation: Angle (radians) in the elevation plane between the sensor and the detected return Negative angles are below the sensor For 2D radar, this will be 0 returns.doppler_velocity: The doppler speeds (m/s) of the return returns.amplitude: The amplitude of the return (dB) Usage Examples Extracting and Loading Data # Extract the main data files unzip SENSORS_MEASUREMENTS_CSV.zip unzip SENSORS_MEASUREMENTS_ROS2BAGS.zip unzip GANTRY_MEASUREMENTS.zip unzip GROUND_TRUTH.zip # Extract OptiTrack data unzip OPTITRACK_MEASUREMENTS_CSV.zip unzip OPTITRACK_MEASUREMENTS_TAK.zip unzip OPTITRACK_CALIBRATION.zip # Extract calibration files unzip VIDEO_CAPTURES_CALIBRATION.zip # Extract video data for specific trajectories unzip VIDEO_CAPTURES_CIRCLE.zip # or any other trajectory unzip OPTITRACK_REF_VIDEOS_CIRCLE.zip # corresponding OptiTrack reference videos Loading CSV Data (Python) import pandas as pd # After extracting SENSORS_MEASUREMENTS_CSV.zip # Load FTM data ftm_data = pd.read_csv('SENSORS_MEASUREMENTS_CSV/UWB_FTM_IMU/circle/gtec-ftm.csv') # Load UWB data uwb_data = pd.read_csv('SENSORS_MEASUREMENTS_CSV/UWB_FTM_IMU/circle/gtec-uwb-ranging-pozyx.csv') # Load IMU data imu_data = pd.read_csv('SENSORS_MEASUREMENTS_CSV/UWB_FTM_IMU/circle/gtec-uwb-imu-pozyx_0.csv') # Load radar data radar_data = pd.read_csv('SENSORS_MEASUREMENTS_CSV/AOP/circle/radar_scan.csv') # After extracting GANTRY_MEASUREMENTS.zip # Load gantry ground truth data gantry_data = pd.read_csv('GANTRY_MEASUREMENTS/circle_gantry.csv') # After extracting GROUND_TRUTH.zip # Load ground truth data in gantry coordinates ground_truth_gantry = pd.read_csv('GROUND_TRUTH/circle_ground_truth_gantry.csv') # Load ground truth data in OptiTrack coordinates ground_truth_optitrack = pd.read_csv('GROUND_TRUTH/circle_ground_truth_optitrack.csv') # After extracting OPTITRACK_MEASUREMENTS_CSV.zip # Load OptiTrack measurements data. First lines of CSV contain metadata. optitrack_data = pd.read_csv('OPTITRACK_MEASUREMENTS_CSV/circle_optitrack.csv', header=[1, 2, 4, 5])) Playing ROS2 Bags # After extracting SENSORS_MEASUREMENTS_ROS2BAGS.zip # Play UWB, FTM, and IMU data ros2 bag play SENSORS_MEASUREMENTS_ROS2BAGS/UWB_FTM_IMU/circle/ # Play radar data ros2 bag play SENSORS_MEASUREMENTS_ROS2BAGS/AOP0/circle/ Acknowledgments Grant TED2021-130240B-I00 funded by MCIN/AEI/ 10.13039/501100011033 and by the European Union NextGenerationEU/PRTR.Grant PID2022-137099NB-C42.



