Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple nodes with the same name created if mavros::uas::UAS is loaded into a component container #1919

Open
ugol-1 opened this issue Nov 2, 2023 · 2 comments
Labels

Comments

@ugol-1
Copy link

ugol-1 commented Nov 2, 2023

Issue details

When the mavros::uas::UAS component is loaded into a component container, it creates multiple nodes with the same name as the component manager name. It seems that each plugin node gets the name of the component manager.

Launch file:

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode

def generate_launch_description():
    fcu_url_launch_arg = DeclareLaunchArgument(
        "fcu_url",
        default_value = "/dev/ttyACM0:115200"
    )

    mavros_uas_node = ComposableNodeContainer(
        name = 'MavrosComponentManager',
        namespace = 'mavros',
        package = 'rclcpp_components',
        executable = 'component_container_mt',
        composable_node_descriptions = [
            ComposableNode(
                name = "uas",
                namespace = 'mavros',
                package = 'mavros',
                plugin = 'mavros::uas::UAS',
                parameters = [{
                    "fcu_url": LaunchConfiguration("fcu_url"),
                    "gcs_url": "",
                    "tgt_system": 1,
                    "tgt_component": 1,
                    "fcu_protocol": "v2.0",
                    "plugin_allowlist": [
                        "sys_status",
                    ]
                }],
                extra_arguments = [{
                    "use_intra_process_comms": True
                }]
            )
        ],
    )

    return LaunchDescription([
        fcu_url_launch_arg,
        mavros_uas_node,
    ])

MAVROS version and platform

Mavros: 2.6.0-1jammy.20230912.120519
ROS: Iron
Ubuntu: 22.04

Autopilot type and version

[x] ArduPilot
[ ] PX4

Version: 4.3.7

Node logs

[INFO] [launch]: All log files can be found below /home/pi/.ros/log/2023-11-02-19-48-02-226047-malina-2-14196
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container_mt-1]: process started with pid [14211]
[component_container_mt-1] [INFO] [1698947283.164913486] [mavros.MavrosComponentManager]: Load Library: /opt/ros/iron/lib/libmavros.so
[component_container_mt-1] [INFO] [1698947283.191213946] [mavros.MavrosComponentManager]: Found class: rclcpp_components::NodeFactoryTemplate<mavros::router::Router>
[component_container_mt-1] [INFO] [1698947283.191353499] [mavros.MavrosComponentManager]: Found class: rclcpp_components::NodeFactoryTemplate<mavros::uas::UAS>
[component_container_mt-1] [INFO] [1698947283.191392017] [mavros.MavrosComponentManager]: Instantiate class: rclcpp_components::NodeFactoryTemplate<mavros::uas::UAS>
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/mavros/uas' in container '/mavros/MavrosComponentManager'
[component_container_mt-1] [INFO] [1698947283.349010485] [mavros.uas]: UAS Executor started, threads: 4
[component_container_mt-1] [INFO] [1698947283.349032817] [mavros.uas]: Plugin actuator_control ignored
[component_container_mt-1] [INFO] [1698947283.349877488] [mavros.uas]: Plugin altitude ignored
[component_container_mt-1] [INFO] [1698947283.349957801] [mavros.uas]: Plugin command ignored
[component_container_mt-1] [INFO] [1698947283.350022707] [mavros.uas]: Plugin ftp ignored
[component_container_mt-1] [INFO] [1698947283.350084484] [mavros.uas]: Plugin geofence ignored
[component_container_mt-1] [INFO] [1698947283.350144242] [mavros.uas]: Plugin global_position ignored
[component_container_mt-1] [INFO] [1698947283.350199130] [mavros.uas]: Plugin home_position ignored
[component_container_mt-1] [INFO] [1698947283.350256500] [mavros.uas]: Plugin imu ignored
[component_container_mt-1] [INFO] [1698947283.350309147] [mavros.uas]: Plugin local_position ignored
[component_container_mt-1] [INFO] [1698947283.350362720] [mavros.uas]: Plugin manual_control ignored
[component_container_mt-1] [INFO] [1698947283.350414571] [mavros.uas]: Plugin nav_controller_output ignored
[component_container_mt-1] [INFO] [1698947283.350469348] [mavros.uas]: Plugin param ignored
[component_container_mt-1] [INFO] [1698947283.350523865] [mavros.uas]: Plugin rallypoint ignored
[component_container_mt-1] [INFO] [1698947283.350580586] [mavros.uas]: Plugin rc_io ignored
[component_container_mt-1] [INFO] [1698947283.350636863] [mavros.uas]: Plugin setpoint_accel ignored
[component_container_mt-1] [INFO] [1698947283.350691196] [mavros.uas]: Plugin setpoint_attitude ignored
[component_container_mt-1] [INFO] [1698947283.350746472] [mavros.uas]: Plugin setpoint_position ignored
[component_container_mt-1] [INFO] [1698947283.350800508] [mavros.uas]: Plugin setpoint_raw ignored
[component_container_mt-1] [INFO] [1698947283.350855119] [mavros.uas]: Plugin setpoint_trajectory ignored
[component_container_mt-1] [INFO] [1698947283.350911247] [mavros.uas]: Plugin setpoint_velocity ignored
[component_container_mt-1] [WARN] [1698947283.391710062] [rcl.logging_rosout]: Publisher already registered for provided node name. If this is due to multiple nodes with the same name then all logs for that logger name will go out over the existing publisher. As soon as any node with that name is destructed it will unregister the publisher, preventing any further logs for that name from being published on the rosout topic.
[component_container_mt-1] [INFO] [1698947283.449474224] [mavros.uas]: Plugin sys_status created
[component_container_mt-1] [INFO] [1698947283.449711794] [mavros.uas]: Plugin sys_status initialized
[component_container_mt-1] [INFO] [1698947283.449773533] [mavros.uas]: Plugin sys_time ignored
[component_container_mt-1] [INFO] [1698947283.449820310] [mavros.uas]: Plugin waypoint ignored
[component_container_mt-1] [INFO] [1698947283.449861236] [mavros.uas]: Plugin wind_estimation ignored
[component_container_mt-1] [INFO] [1698947283.455670059] [mavros.uas]: Built-in SIMD instructions: ARM NEON
[component_container_mt-1] [INFO] [1698947283.455786945] [mavros.uas]: Built-in MAVLink package version: 2023.9.9
[component_container_mt-1] [INFO] [1698947283.455830130] [mavros.uas]: Known MAVLink dialects: common ardupilotmega ASLUAV AVSSUAS all csAirLink cubepilot development icarous matrixpilot paparazzi standard storm32 uAvionix ualberta
[component_container_mt-1] [INFO] [1698947283.455866370] [mavros.uas]: MAVROS UAS via /uas1 started. MY ID 1.191, TARGET ID 1.1

Diagnostics

header:
  stamp:
    sec: 1698947386
    nanosec: 433098033
  frame_id: ''
status:
- level: "\x02"
  name: 'uas: MAVROS UAS'
  message: disconnected
  hardware_id: uas:///uas1
  values: []
- level: "\0"
  name: 'uas: System'
  message: Normal
  hardware_id: uas:///uas1
  values:
  - key: Sensor present
    value: '0x00000000'
  - key: Sensor enabled
    value: '0x00000000'
  - key: Sensor health
    value: '0x00000000'
  - key: CPU Load (%)
    value: '0.0'
  - key: Drop rate (%)
    value: '0.0'
  - key: Errors comm
    value: '0'
  - key: 'Errors count #1'
    value: '0'
  - key: 'Errors count #2'
    value: '0'
  - key: 'Errors count #3'
    value: '0'
  - key: 'Errors count #4'
    value: '0'
- level: "\x02"
  name: 'uas: Battery'
  message: No data
  hardware_id: uas:///uas1
  values:
  - key: Voltage
    value: '-1.00'
  - key: Current
    value: '0.0'
  - key: Remaining
    value: '0.0'
- level: "\x02"
  name: 'uas: Heartbeat'
  message: No events recorded.
  hardware_id: uas:///uas1
  values:
  - key: Heartbeats since startup
    value: '0'
  - key: Frequency (Hz)
    value: '0.000000'
  - key: Vehicle type
    value: Generic micro air vehicle
  - key: Autopilot type
    value: Generic autopilot
  - key: Mode
    value: ''
  - key: System status
    value: UNINIT
---

Node list

$ ros2 node list
WARNING: Be aware that there are nodes in the graph that share an exact name, which can have unintended side effects.
/launch_ros_14237
/mavros/MavrosComponentManager
/mavros/MavrosComponentManager
/mavros/transform_listener_impl_aaab08278b40
/mavros/uas
@vooon
Copy link
Member

vooon commented Nov 3, 2023

But where is the multiple nodes? BTW UAS know nothing about fcu_url nor gcs_url.

@vooon vooon added the ros2 label Nov 3, 2023
@ugol-1
Copy link
Author

ugol-1 commented Nov 3, 2023

But where is the multiple nodes? BTW UAS know nothing about fcu_url nor gcs_url.

[component_container_mt-1] [WARN] [1698947283.391710062] [rcl.logging_rosout]: Publisher already registered for provided node name. If this is due to multiple nodes with the same name then all logs for that logger name will go out over the existing publisher. As soon as any node with that name is destructed it will unregister the publisher, preventing any further logs for that name from being published on the rosout topic.

This is printed for each plugin node when it is loaded. Also check the output of ros2 node list. Every plugin node gets the same name as the component manager.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants