isaac_ros_nvblox
isaac_ros_nvblox copied to clipboard
Realsense node stops publishing image data after bringing up nvblox and VSLAM nodes
Hi I'm using ROS2 and realsense D435i to implement a navigation application, the setup are below:
in short, I implement this examples which would brings up the realsense node, nvblox, and VSLAM. which runs well when all nodes in same machine. https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nvblox/blob/main/docs/tutorial-nvblox-vslam-realsense.md
and I divided them for realsense node only running on the jetson board on my robots, nvblox and VSLAM runs in the edge server
robots and edge server are connected with ethernet cables, and I test they can ping and use the talker listener examples from ROS2 well.
Problems: When I start realsense node at the jetson board side, I can see topics and image data in edge server. But when I bring up the nvblox and VSLAM nodes, edge side doesn't see the image but the topic name still there, but jetson side can see the image data.
Is that I have any mistakes in launch files or network setup?
the launch files are as follows:
nvr_debug_jetson.launch.py Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. NVIDIA CORPORATION and its licensors retain all intellectual property and proprietary rights in and to this software, related documentation and any modifications thereto. Any use, reproduction, disclosure or distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited.
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 Node from launch_ros.descriptions import ComposableNode from launch_ros.actions import ComposableNodeContainer
def generate_launch_description():
Realsense
realsense_config_file_path = os.path.join( get_package_share_directory('nvblox_examples_bringup'), 'config', 'realsense.yaml' )
realsense_node = ComposableNode( namespace="camera", package='realsense2_camera', plugin='realsense2_camera::RealSenseNodeFactory', parameters=[realsense_config_file_path], )
realsense_splitter_node = ComposableNode( namespace="camera", name='realsense_splitter_node', package='realsense_splitter', plugin='nvblox::RealsenseSplitterNode', parameters=[{ 'input_qos': 'SENSOR_DATA', 'output_qos': 'SENSOR_DATA' }], remappings=[('input/infra_1', '/camera/infra1/image_rect_raw'), ('input/infra_1_metadata', '/camera/infra1/metadata'), ('input/infra_2', '/camera/infra2/image_rect_raw'), ('input/infra_2_metadata', '/camera/infra2/metadata'), ('input/depth', '/camera/depth/image_rect_raw'), ('input/depth_metadata', '/camera/depth/metadata'), ('input/pointcloud', '/camera/depth/color/points'), ('input/pointcloud_metadata', '/camera/depth/metadata'), ] )
realsense_container = ComposableNodeContainer( name='realsense_container', namespace='', package='rclcpp_components', executable='component_container', composable_node_descriptions=[ realsense_node, realsense_splitter_node ], output='screen' )
base_link_tf_node = Node( package='tf2_ros', executable='static_transform_publisher', arguments=[ '0.16', '0', '0.11', '0', '0', '0', '1', 'base_link', 'camera_link'] )
return LaunchDescription([ realsense_container, base_link_tf_node ])
nvr_debug_edge.launch.py Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. NVIDIA CORPORATION and its licensors retain all intellectual property and proprietary rights in and to this software, related documentation and any modifications thereto. Any use, reproduction, disclosure or distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited.
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 Node from launch_ros.descriptions import ComposableNode from launch_ros.actions import ComposableNodeContainer
def generate_launch_description():
VSLAM
visual_slam_node = Node( name='visual_slam_node', package='isaac_ros_visual_slam', executable='isaac_ros_visual_slam', parameters=[{ 'enable_rectified_pose': True, 'denoise_input_images': False, 'rectified_images': True, 'enable_debug_mode': False, 'debug_dump_path': '/tmp/vslam', 'enable_slam_visualization': True, 'enable_landmarks_view': True, 'enable_observations_view': True, 'map_frame': 'map', 'odom_frame': 'odom', 'base_frame': 'base_link', 'input_left_camera_frame': 'camera_infra1_frame', 'input_right_camera_frame': 'camera_infra2_frame', 'enable_localization_n_mapping': True, 'publish_odom_to_base_tf': True, 'publish_map_to_odom_tf': True, }], remappings=[('stereo_camera/left/image', '/camera/infra1/image_rect_raw'), ('stereo_camera/left/camera_info', '/camera/infra1/camera_info'), ('stereo_camera/right/image', '/camera/infra2/image_rect_raw'), ('stereo_camera/right/camera_info', '/camera/infra2/camera_info')] )
Nvblox
nvblox_config = DeclareLaunchArgument( 'nvblox_config', default_value=os.path.join( get_package_share_directory( 'nvblox_examples_bringup'), 'config', 'nvblox.yaml' ) )
nvblox_node = Node( package='nvblox_ros', executable='nvblox_node', parameters=[LaunchConfiguration('nvblox_config')], output='screen', remappings=[ ("depth/camera_info", "/camera/depth/camera_info"), ("depth/image", "/camera/realsense_splitter_node/output/depth"), ("color/camera_info", "/camera/color/camera_info"), ("color/image", "/camera/color/image_raw") ] )
RVIZ
rviz_config_path = os.path.join(get_package_share_directory( 'nvblox_examples_bringup'), 'config', 'nvblox_vslam_realsense.rviz')
print(rviz_config_path)
rviz = Node( package='rviz2', executable='rviz2', arguments=['-d', rviz_config_path], output='screen')
return LaunchDescription([
nvblox_config,
visual_slam_node,
nvblox_node,
rviz
])
Network seem to be stuck after I bring up the VSLAM and NVBLOX nodes on server, because after I launch realsense on jetson, the server receive topic and data
But after I launched vslam and nvblox, camera data doesn't avaliable on my server, also I run ros2 run demo_nodes_cpp talker at jetson and ros2 run demo_nodes_py listener on server, server does not receive too.
I assume that the launch of the nvblox and VSLAM of server side blocked the network and they can't see each other then.
I switched to x86 nuc to drive the realsense camera and another x86 server with GPU to run nvblox And configurated them with server and nuc connected with ethernet and it can publish data might close this except anyone can find the solution