NVIDIA-ISAAC-ROS / isaac_ros_map_localization

NVIDIA-accelerated global localization
https://developer.nvidia.com/isaac-ros-gems
Apache License 2.0
56 stars 6 forks source link

Occupancy_grid_localizer node crash when starting with launch.xml #30

Open HappySamuel opened 2 months ago

HappySamuel commented 2 months ago

Hi

Why would starting occupancy_grid_localizer node with launch.xml crashed? Either running in composable node or separate node give the same results. But starting with launch.py have no issue at all.

Error msgs are shown below:

[INFO] [launch]: All log files can be found below /home/agx-orin/.ros/log/2024-07-13-12-42-13-505983-agx-orin-7935
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container_mt-1]: process started with pid [7947]
[component_container_mt-1] [INFO] [1720845734.114576283] [occupancy_grid_localizer_container]: Load Library: /opt/ros/humble/lib/liboccupancy_grid_localizer.so
[component_container_mt-1] [INFO] [1720845734.193026259] [occupancy_grid_localizer_container]: Found class: rclcpp_components::NodeFactoryTemplate<nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode>
[component_container_mt-1] [INFO] [1720845734.193151725] [occupancy_grid_localizer_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode>
[component_container_mt-1] [INFO] [1720845734.198938429] [occupancy_grid_localizer]: [NitrosNode] Initializing NitrosNode
[component_container_mt-1] [INFO] [1720845734.199545952] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/std/libgxf_std.so
[component_container_mt-1] [INFO] [1720845734.204399964] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_gxf_helpers.so
[component_container_mt-1] [INFO] [1720845734.205709726] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_sight.so
[component_container_mt-1] [INFO] [1720845734.214313354] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_atlas.so
[component_container_mt-1] 2024-07-13 12:42:14.221 WARN  external/com_nvidia_gxf/gxf/std/program.cpp@532: No GXF scheduler specified.
[component_container_mt-1] [INFO] [1720845734.229622170] [occupancy_grid_localizer]: [NitrosNode] Starting NitrosNode
[component_container_mt-1] [INFO] [1720845734.237098842] [occupancy_grid_localizer]: [NitrosNode] Loading extensions
[component_container_mt-1] [INFO] [1720845734.237391725] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/multimedia/libgxf_multimedia.so
[component_container_mt-1] [INFO] [1720845734.242566809] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_message_compositor.so
[component_container_mt-1] [INFO] [1720845734.244227339] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/serialization/libgxf_serialization.so
[component_container_mt-1] [INFO] [1720845734.250801174] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_cuda.so
[component_container_mt-1] [INFO] [1720845734.258343124] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_ros_cuda.so
[component_container_mt-1] [INFO] [1720845734.260492910] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_utils.so
[component_container_mt-1] [INFO] [1720845734.276695733] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_localization.so
[component_container_mt-1] [INFO] [1720845734.292192060] [occupancy_grid_localizer]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_flatscan_localization.so
[component_container_mt-1] [INFO] [1720845734.304711919] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_messages.so
[component_container_mt-1] [INFO] [1720845734.306553593] [occupancy_grid_localizer]: [NitrosNode] Loading graph to the optimizer
[component_container_mt-1] [INFO] [1720845734.313329850] [occupancy_grid_localizer]: [NitrosNode] Running optimization
[component_container_mt-1] [INFO] [1720845734.350280945] [occupancy_grid_localizer]: [NitrosNode] Obtaining graph IO group info from the optimizer
[component_container_mt-1] [INFO] [1720845734.361971819] [occupancy_grid_localizer]: [NitrosNode] Starting negotiation...
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/occupancy_grid_localizer' in container '/occupancy_grid_localizer_container'
[component_container_mt-1] [INFO] [1720845735.363044832] [occupancy_grid_localizer]: [NitrosNode] Starting post negotiation setup
[component_container_mt-1] [INFO] [1720845735.363240118] [occupancy_grid_localizer]: [NitrosNode] Getting data format negotiation results
[component_container_mt-1] [INFO] [1720845735.363298420] [occupancy_grid_localizer]: [NitrosPublisher] Negotiation ended with no results
[component_container_mt-1] [INFO] [1720845735.363332178] [occupancy_grid_localizer]: [NitrosPublisher] Use only the compatible publisher: topic_name="/initialpose", data_format="nitros_pose_cov_stamped"
[component_container_mt-1] [INFO] [1720845735.363371504] [occupancy_grid_localizer]: [NitrosSubscriber] Negotiation ended with no results
[component_container_mt-1] [INFO] [1720845735.363395151] [occupancy_grid_localizer]: [NitrosSubscriber] Use the compatible subscriber: topic_name="/flatscan_localization", data_format="nitros_flat_scan"
[component_container_mt-1] [INFO] [1720845735.363841882] [occupancy_grid_localizer]: [NitrosNode] Exporting the final graph based on the negotiation results
[component_container_mt-1] [INFO] [1720845735.383360325] [occupancy_grid_localizer]: [NitrosNode] Wrote the final top level YAML graph to "/tmp/isaac_ros_nitros/graphs/BBSDVJFWMK/BBSDVJFWMK.yaml"
[component_container_mt-1] [INFO] [1720845735.383515038] [occupancy_grid_localizer]: [OccupancyGridLocalizerNode] preLoadGraphCallback().
[component_container_mt-1] [INFO] [1720845735.383596346] [occupancy_grid_localizer]: [NitrosNode] Loading application
[component_container_mt-1] 2024-07-13 12:42:15.396 WARN  external/com_nvidia_gxf/gxf/std/yaml_file_loader.cpp@1077: Using unregistered parameter 'sample_distance' in component 'occupancy_grid_map'.
[component_container_mt-1] 2024-07-13 12:42:15.397 WARN  external/com_nvidia_gxf/gxf/std/yaml_file_loader.cpp@1077: Using unregistered parameter 'dummy_rx' in component 'grid_search_localizer'.
[component_container_mt-1] [INFO] [1720845735.417498658] [occupancy_grid_localizer]: [NitrosNode] Initializing and running GXF graph
[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR gems/image/io.cpp@480: Unrecognized image file /home/agx-orin/colcon_ws/install/tcr/share/tcr/maps/. Expect: .png|.jpg|.jpeg
[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR ./gxf/extensions/utils/image_loader.cpp@56: Failed to load image shape.
[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR external/com_nvidia_gxf/gxf/std/entity_warden.cpp@437: Failed to initialize component 00023 (image_loader)
[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR external/com_nvidia_gxf/gxf/core/runtime.cpp@702: Could not initialize entity 'BBSDVJFWMK_binary_occupancy_map_loader' (E19): GXF_FAILURE
[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR external/com_nvidia_gxf/gxf/std/program.cpp@283: Failed to activate entity 00019 named BBSDVJFWMK_binary_occupancy_map_loader: GXF_FAILURE
[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR external/com_nvidia_gxf/gxf/std/program.cpp@285: Deactivating...
[component_container_mt-1] 2024-07-13 12:42:15.506 ERROR external/com_nvidia_gxf/gxf/core/runtime.cpp@1452: Graph activation failed with error: GXF_FAILURE
[component_container_mt-1] [ERROR] [1720845735.506702468] [occupancy_grid_localizer]: [NitrosContext] GxfGraphActivate Error: GXF_FAILURE
[component_container_mt-1] [ERROR] [1720845735.506889595] [occupancy_grid_localizer]: [NitrosNode] runGraphAsync Error: GXF_FAILURE
[component_container_mt-1] terminate called after throwing an instance of 'std::runtime_error'
[component_container_mt-1]   what():  [NitrosNode] runGraphAsync Error: GXF_FAILURE
[ERROR] [component_container_mt-1]: process has died [pid 7947, exit code -6, cmd '/opt/ros/humble/lib/rclcpp_components/component_container_mt --ros-args -r __node:=occupancy_grid_localizer_container -r __ns:=/'].

Writting in launch.xml

<launch>
    <arg name="gazebo"      default="false"/>
    <arg name="map"         default="$(find-pkg-share tcr)/maps/test1.yaml"/>

    <node_container pkg="rclcpp_components" exec="component_container_mt" name="occupancy_grid_localizer_container" namespace="" output="screen">
        <composable_node pkg="isaac_ros_occupancy_grid_localizer" plugin="nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode" name="occupancy_grid_localizer">
            <param name="use_sim_time" value="$(var gazebo)"/>
            <param name="loc_result_frame" value="map"/>
            <param name="map_yaml_path" value="$(var map)"/>
            <remap from="flatscan" to="/lslidar_c16/flatscan"/>
            <remap from="localization_result" to="/initialpose"/>
        </composable_node>
    </node_container>
</launch>

Writing in launch.py

import os

from ament_index_python.packages import get_package_share_directory
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():

    map_yaml_path = \
        LaunchConfiguration('map_yaml_path',
                            default=os.path.join(
                                get_package_share_directory(
                                    'isaac_ros_occupancy_grid_localizer'),
                                'maps', 'map.yaml'))

    map_yaml_path_arg = DeclareLaunchArgument(
        'map_yaml_path',
        default_value=map_yaml_path
    )

    occupancy_grid_localizer_node = ComposableNode(
        package='isaac_ros_occupancy_grid_localizer',
        plugin='nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode',
        name='occupancy_grid_localizer',
        parameters=[map_yaml_path, {
            'loc_result_frame': 'map',
            'map_yaml_path': map_yaml_path,
        }],
        remappings=[('localization_result', '/initialpose'),
            ('flatscan', '/lslidar_c16/flatscan')])

    occupancy_grid_localizer_container = ComposableNodeContainer(
        package='rclcpp_components',
        name='occupancy_grid_localizer_container',
        namespace='',
        executable='component_container_mt',
        composable_node_descriptions=[
            occupancy_grid_localizer_node,
        ],
        output='screen'
    )

    return LaunchDescription([map_yaml_path_arg,
                              occupancy_grid_localizer_container])
ashwinvkNV commented 3 weeks ago

For some reason your xml launch file doesn't seem to load the map image from the path in the map_yaml file.

[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR gems/image/io.cpp@480: Unrecognized image file /home/agx-orin/colcon_ws/install/tcr/share/tcr/maps/. Expect: .png|.jpg|.jpeg
[component_container_mt-1] 2024-07-13 12:42:15.505 ERROR ./gxf/extensions/utils/image_loader.cpp@56: Failed to load image shape.