merged master->ros2 (new multi_rgbd_inertial_dataset.launch.py example), fixed rtabmap_viz error on exit, fixed default name of rgbdx_sync node, fixed yaml_to_camera_info.py exit exception

This commit is contained in:
matlabbe
2026-02-21 18:06:19 -08:00
12 changed files with 745 additions and 11 deletions
+6 -2
View File
@@ -22,6 +22,10 @@
},
"workspaceMount": "source=${localWorkspaceFolder},target=/home/vscode/catkin_ws/src/rtabmap_ros,type=bind",
"workspaceFolder": "/home/vscode/catkin_ws",
"postCreateCommand": "cd /home/vscode/catkin_ws/src && catkin_init_workspace"
//"runArgs": ["--privileged", "--runtime=nvidia", "--network=host"]
"postCreateCommand": "cd /home/vscode/catkin_ws/src && catkin_init_workspace",
"runArgs": ["--privileged",
"--runtime=nvidia",
"--env=DISPLAY",
"--env=QT_X11_NO_MITSHM=1",
"--volume=/tmp/.X11-unix:/tmp/.X11-unix"]
}
@@ -0,0 +1,453 @@
[Core]
Rtabmap\WorkingDirectory=/home/vscode/.ros
[Gui]
AboutDialog\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0/\0\0\x2\xf7\0\0\x3\x10\0\0\0\0\0\0\0/\0\0\x2\xf7\0\0\x3\x10\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0/\0\0\x2\xf7\0\0\x3\x10)
DepthCalibrationDialog\bin_depth=2
DepthCalibrationDialog\bin_height=6
DepthCalibrationDialog\bin_width=8
DepthCalibrationDialog\cone_radius=0.02
DepthCalibrationDialog\cone_stddev_thresh=0.1
DepthCalibrationDialog\decimation=1
DepthCalibrationDialog\laser_scan=false
DepthCalibrationDialog\max_depth=3.5
DepthCalibrationDialog\max_model_depth=10
DepthCalibrationDialog\min_depth=0
DepthCalibrationDialog\smoothing=1
DepthCalibrationDialog\voxel=0.01
ExportBundlerDialog\exportPoints=false
ExportBundlerDialog\laplacianThr=0
ExportBundlerDialog\maxAngularSpeed=0
ExportBundlerDialog\maxLinearSpeed=0
ExportBundlerDialog\sba_iterations=20
ExportBundlerDialog\sba_rematch_features=true
ExportBundlerDialog\sba_type=0
ExportBundlerDialog\sba_variance=1
ExportCloudsDialog\assemble=true
ExportCloudsDialog\assemble_samples=0
ExportCloudsDialog\assemble_voxel=0.01
ExportCloudsDialog\bilateral=false
ExportCloudsDialog\bilateral_sigma_r=0.1
ExportCloudsDialog\bilateral_sigma_s=10
ExportCloudsDialog\binary=true
ExportCloudsDialog\cam_proj=false
ExportCloudsDialog\cam_proj_decimation=1
ExportCloudsDialog\cam_proj_distance_policy=true
ExportCloudsDialog\cam_proj_export_format=0
ExportCloudsDialog\cam_proj_keep_points=false
ExportCloudsDialog\cam_proj_mask=
ExportCloudsDialog\cam_proj_max_angle=0
ExportCloudsDialog\cam_proj_max_depth_error=0
ExportCloudsDialog\cam_proj_max_distance=0
ExportCloudsDialog\cam_proj_recolor_points=true
ExportCloudsDialog\cam_proj_roi_ratios=0.0 0.0 0.0 0.0
ExportCloudsDialog\cputsdf_flattenRadius=0.005
ExportCloudsDialog\cputsdf_minWeight=0
ExportCloudsDialog\cputsdf_randomSplit=1
ExportCloudsDialog\cputsdf_resolution=0.01
ExportCloudsDialog\cputsdf_size=12
ExportCloudsDialog\cputsdf_truncNeg=0.03
ExportCloudsDialog\cputsdf_truncPos=0.03
ExportCloudsDialog\filtering=false
ExportCloudsDialog\filtering_min_neighbors=5
ExportCloudsDialog\filtering_radius=0
ExportCloudsDialog\frame=0
ExportCloudsDialog\from_depth=true
ExportCloudsDialog\gain=false
ExportCloudsDialog\gain_beta=10
ExportCloudsDialog\gain_full=false
ExportCloudsDialog\gain_overlap=0
ExportCloudsDialog\gain_radius=0.02
ExportCloudsDialog\gain_rgb=true
ExportCloudsDialog\intensity_colormap=0
ExportCloudsDialog\mesh=false
ExportCloudsDialog\mesh_angle_tolerance=15
ExportCloudsDialog\mesh_clean=true
ExportCloudsDialog\mesh_color_radius=0.05
ExportCloudsDialog\mesh_decimation_factor=0
ExportCloudsDialog\mesh_dense_strategy=1
ExportCloudsDialog\mesh_max_polygons=0
ExportCloudsDialog\mesh_min_cluster_size=0
ExportCloudsDialog\mesh_mu=2.5
ExportCloudsDialog\mesh_quad=false
ExportCloudsDialog\mesh_radius=0.2
ExportCloudsDialog\mesh_texture=false
ExportCloudsDialog\mesh_textureBlending=true
ExportCloudsDialog\mesh_textureBlendingDecimation=0
ExportCloudsDialog\mesh_textureBrightnessConstrastRatioHigh=5
ExportCloudsDialog\mesh_textureBrightnessConstrastRatioLow=0
ExportCloudsDialog\mesh_textureCameraFiltering=false
ExportCloudsDialog\mesh_textureCameraFilteringAngle=30
ExportCloudsDialog\mesh_textureCameraFilteringLaplacian=0
ExportCloudsDialog\mesh_textureCameraFilteringRadius=0
ExportCloudsDialog\mesh_textureCameraFilteringVel=0
ExportCloudsDialog\mesh_textureCameraFilteringVelRad=0
ExportCloudsDialog\mesh_textureDistanceToCamPolicy=false
ExportCloudsDialog\mesh_textureExposureFusion=false
ExportCloudsDialog\mesh_textureFormat=0
ExportCloudsDialog\mesh_textureMaxAngle=0
ExportCloudsDialog\mesh_textureMaxCount=1
ExportCloudsDialog\mesh_textureMaxDepthError=0
ExportCloudsDialog\mesh_textureMaxDistance=3
ExportCloudsDialog\mesh_textureMinCluster=50
ExportCloudsDialog\mesh_textureMultiband=false
ExportCloudsDialog\mesh_textureMultibandAngleHardThr=90
ExportCloudsDialog\mesh_textureMultibandBestScoreThr=0.1
ExportCloudsDialog\mesh_textureMultibandDownScale=2
ExportCloudsDialog\mesh_textureMultibandFillHoles=false
ExportCloudsDialog\mesh_textureMultibandForceVisible=false
ExportCloudsDialog\mesh_textureMultibandNbContrib=1 5 10 0
ExportCloudsDialog\mesh_textureMultibandPadding=5
ExportCloudsDialog\mesh_textureMultibandUnwrap=0
ExportCloudsDialog\mesh_textureRoiRatios=0.0 0.0 0.0 0.0
ExportCloudsDialog\mesh_textureSize=6
ExportCloudsDialog\mesh_textureVertexColorPolicy=0
ExportCloudsDialog\mesh_triangle_size=1
ExportCloudsDialog\mls=false
ExportCloudsDialog\mls_dilation_iterations=1
ExportCloudsDialog\mls_dilation_voxel_size=0.005
ExportCloudsDialog\mls_output_voxel_size=0
ExportCloudsDialog\mls_point_density=10
ExportCloudsDialog\mls_polygonial_order=2
ExportCloudsDialog\mls_radius=0.04
ExportCloudsDialog\mls_upsampling_method=0
ExportCloudsDialog\mls_upsampling_radius=0.01
ExportCloudsDialog\mls_upsampling_step=0.005
ExportCloudsDialog\nodes_filtering=false
ExportCloudsDialog\nodes_filtering_xmax=0
ExportCloudsDialog\nodes_filtering_xmin=0
ExportCloudsDialog\nodes_filtering_ymax=0
ExportCloudsDialog\nodes_filtering_ymin=0
ExportCloudsDialog\nodes_filtering_zmax=0
ExportCloudsDialog\nodes_filtering_zmin=0
ExportCloudsDialog\normals_ground_normals_up=0
ExportCloudsDialog\normals_k=20
ExportCloudsDialog\normals_radius=0
ExportCloudsDialog\openchisel_carving_dist_m=0.05
ExportCloudsDialog\openchisel_chunk_size_x=16
ExportCloudsDialog\openchisel_chunk_size_y=16
ExportCloudsDialog\openchisel_chunk_size_z=16
ExportCloudsDialog\openchisel_far_plane_dist=1.1
ExportCloudsDialog\openchisel_integration_weight=1
ExportCloudsDialog\openchisel_merge_vertices=true
ExportCloudsDialog\openchisel_near_plane_dist=0.05
ExportCloudsDialog\openchisel_truncation_constant=0.001504
ExportCloudsDialog\openchisel_truncation_linear=0.00152
ExportCloudsDialog\openchisel_truncation_quadratic=0.0019
ExportCloudsDialog\openchisel_truncation_scale=10
ExportCloudsDialog\openchisel_use_voxel_carving=false
ExportCloudsDialog\pipeline=1
ExportCloudsDialog\poisson_depth=0
ExportCloudsDialog\poisson_iso=8
ExportCloudsDialog\poisson_manifold=true
ExportCloudsDialog\poisson_minDepth=5
ExportCloudsDialog\poisson_outputPolygons=false
ExportCloudsDialog\poisson_pointWeight=4
ExportCloudsDialog\poisson_polygon_size=0.03
ExportCloudsDialog\poisson_samples=1
ExportCloudsDialog\poisson_scale=1.1
ExportCloudsDialog\poisson_solver=8
ExportCloudsDialog\regenerate=false
ExportCloudsDialog\regenerate_ceiling=0
ExportCloudsDialog\regenerate_decimation=1
ExportCloudsDialog\regenerate_distortion_model=
ExportCloudsDialog\regenerate_edge_bleeding_error=0
ExportCloudsDialog\regenerate_fill_error=2
ExportCloudsDialog\regenerate_fill_size=0
ExportCloudsDialog\regenerate_floor=0
ExportCloudsDialog\regenerate_footprint_height=0
ExportCloudsDialog\regenerate_footprint_length=0
ExportCloudsDialog\regenerate_footprint_width=0
ExportCloudsDialog\regenerate_max_depth=4
ExportCloudsDialog\regenerate_min_depth=0
ExportCloudsDialog\regenerate_min_depth_confidence=0
ExportCloudsDialog\regenerate_offaxis_filtering=false
ExportCloudsDialog\regenerate_offaxis_filtering_angle=10
ExportCloudsDialog\regenerate_offaxis_filtering_neg_x=true
ExportCloudsDialog\regenerate_offaxis_filtering_neg_y=true
ExportCloudsDialog\regenerate_offaxis_filtering_neg_z=true
ExportCloudsDialog\regenerate_offaxis_filtering_pos_x=true
ExportCloudsDialog\regenerate_offaxis_filtering_pos_y=true
ExportCloudsDialog\regenerate_offaxis_filtering_pos_z=true
ExportCloudsDialog\regenerate_roi=0.0 0.0 0.0 0.0
ExportCloudsDialog\regenerate_scan_decimation=1
ExportCloudsDialog\regenerate_scan_max_range=0
ExportCloudsDialog\regenerate_scan_min_range=0
ExportCloudsDialog\subtract=false
ExportCloudsDialog\subtract_min_neighbors=5
ExportCloudsDialog\subtract_point_angle=0
ExportCloudsDialog\subtract_point_radius=0.02
Figures\counts=
Figures\curves=
Figures\thresholds=
General\beep=false
General\cloudCeilingHeight=0
General\cloudFiltering=false
General\cloudFilteringAngle=30
General\cloudFilteringRadius=0.1
General\cloudFloorHeight=0
General\cloudNoiseMinNeighbors=5
General\cloudNoiseRadius=0
General\cloudVoxel=0
General\cloudsKept=true
General\colorScheme0=0
General\colorScheme1=0
General\colorSchemeScan0=0
General\colorSchemeScan1=0
General\decimation0=8
General\decimation1=4
General\depthConf0=0
General\depthConf1=0
General\downsamplingScan0=1
General\downsamplingScan1=1
General\elevationMapShown=0
General\figure_cache=true
General\figure_time=true
General\gravityLength0=1
General\gravityLength1=1
General\gravityShown0=false
General\gravityShown1=true
General\gridMapOpacity=0.75
General\gridMapShown=false
General\gridUIResolution=0
General\gtAlign=true
General\imageHighestHypShown=false
General\imageRejectedShown=true
General\imagesKept=true
General\landmarkSize=0
General\localizationsGraphView=false
General\localizationsGraphViewOdomCache=false
General\loggerEventLevel=3
General\loggerLevel=2
General\loggerPauseLevel=3
General\loggerPrintThreadId=false
General\loggerPrintTime=true
General\loggerType=1
General\maxDepth0=5
General\maxDepth1=0
General\maxRange0=0
General\maxRange1=0
General\meshing=false
General\meshing_angle=15
General\meshing_quad=true
General\meshing_texture=false
General\meshing_triangle_size=2
General\minDepth0=0
General\minDepth1=0
General\minRange0=0
General\minRange1=0
General\missingRepublished=true
General\noFiltering=true
General\nochangeGraphView=false
General\normalKSearch=10
General\normalRadiusSearch=0
General\notifyNewGlobalPath=false
General\octomap=false
General\octomap_2dgrid=true
General\octomap_3dmap=true
General\octomap_depth=16
General\octomap_point_size=5
General\octomap_rendering_type=0
General\odomDisabled=false
General\odomF2MGravitySigma=-1
General\odomOnlyInliersShown=false
General\odomQualityThr=50
General\odomRegistration=3
General\opacity0=1
General\opacity1=0.75
General\opacityScan0=1
General\opacityScan1=0.5
General\posteriorGraphView=true
General\ptSize0=1
General\ptSize1=2
General\ptSizeFeatures0=3
General\ptSizeFeatures1=3
General\ptSizeScan0=1
General\ptSizeScan1=2
General\roiRatios0=0.0 0.0 0.0 0.0
General\roiRatios1=0.0 0.0 0.0 0.0
General\scanCeilingHeight=0
General\scanFloorHeight=0
General\scanNormalKSearch=0
General\scanNormalRadiusSearch=0
General\showClouds0=true
General\showClouds1=false
General\showFeatures0=false
General\showFeatures1=true
General\showFrames=false
General\showFrustums0=false
General\showFrustums1=false
General\showGraphs=true
General\showIMUAcc=false
General\showIMUGravity=false
General\showLabels=false
General\showLandmarks=true
General\showScans0=true
General\showScans1=true
General\subtractFiltering=false
General\subtractFilteringAngle=0
General\subtractFilteringMinPts=5
General\subtractFilteringRadius=0.02
General\verticalLayoutUsed=true
General\voxelSizeScan0=0
General\voxelSizeScan1=0
General\wordsGraphView=false
MainWindow\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\x32\0\0\0\x1b\0\0\x6\xf2\0\0\x3\xf\0\0\0\x32\0\0\0@\0\0\x6\xf2\0\0\x3\xf\0\0\0\0\0\0\0\0\a\x80\0\0\0\x32\0\0\0@\0\0\x6\xf2\0\0\x3\xf)
MainWindow\maximized=false
MainWindow\state="@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x3\0\0\0\0\0\0\x3\\\0\0\x2\x95\xfc\x2\0\0\0\x3\xfb\0\0\0$\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0s\0t\0\x61\0t\0s\0V\0\x32\x2\0\0\0\x32\0\0\0\x1b\0\0\0\xc8\0\0\0\xc1\xfb\0\0\0(\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0i\0m\0\x61\0g\0\x65\0V\0i\0\x65\0w\x1\0\0\0;\0\0\x1\xaa\0\0\0\x37\0\xff\xff\xff\xfb\0\0\0&\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0o\0\x64\0o\0m\0\x65\0t\0r\0y\x1\0\0\x1\xeb\0\0\0\xe5\0\0\0\x13\0\xff\xff\xff\0\0\0\x1\0\0\x3_\0\0\x2\x95\xfc\x2\0\0\0\x4\xfb\0\0\0,\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0\x63\0l\0o\0u\0\x64\0V\0i\0\x65\0w\0\x65\0r\x1\0\0\0;\0\0\x2\x95\0\0\0\xdb\0\xff\xff\xff\xfb\0\0\0\x38\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0l\0o\0o\0p\0\x43\0l\0o\0s\0u\0r\0\x65\0V\0i\0\x65\0w\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xf0\0\xff\xff\xff\xfb\0\0\0,\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0g\0r\0\x61\0p\0h\0V\0i\0\x65\0w\0\x65\0r\x2\0\0\x4\xf2\0\0\x1\x39\0\0\x2}\0\0\x1\x90\xfb\0\0\0\x34\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0m\0u\0l\0t\0i\0S\0\x65\0s\0s\0i\0o\0n\0L\0o\0\x63\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x13\0\xff\xff\xff\0\0\0\x3\0\0\0\0\0\0\0\0\xfc\x1\0\0\0\x5\xfb\0\0\0(\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0p\0o\0s\0t\0\x65\0r\0i\0o\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xcb\0\xff\xff\xff\xfb\0\0\0*\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0l\0i\0k\0\x65\0l\0i\0h\0o\0o\0\x64\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xcb\0\xff\xff\xff\xfb\0\0\0$\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0\x63\0o\0n\0s\0o\0l\0\x65\0\0\0\0\0\xff\xff\xff\xff\0\0\x1(\0\xff\xff\xff\xfb\0\0\0\x30\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0r\0\x61\0w\0l\0i\0k\0\x65\0l\0i\0h\0o\0o\0\x64\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xcb\0\xff\xff\xff\xfb\0\0\0\x30\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0m\0\x61\0p\0V\0i\0s\0i\0\x62\0i\0l\0i\0t\0y\x2\0\0\0\x32\0\0\0\x1b\0\0\0\xc8\0\0\0\x88\0\0\0\0\0\0\x2\x95\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x2\0\0\0\xe\0t\0o\0o\0l\0\x42\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x12\0t\0o\0o\0l\0\x42\0\x61\0r\0_\0\x32\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)"
MainWindow\status_bar=false
PostProcessingDialog\cluster_angle=30
PostProcessingDialog\cluster_radius=1
PostProcessingDialog\detect_more_lc=true
PostProcessingDialog\inter_session=true
PostProcessingDialog\intra_session=true
PostProcessingDialog\iterations=5
PostProcessingDialog\refine_lc=false
PostProcessingDialog\refine_neigbors=false
PostProcessingDialog\sba=false
PostProcessingDialog\sba_iterations=20
PostProcessingDialog\sba_rematch_features=true
PostProcessingDialog\sba_type=1
PostProcessingDialog\sba_variance=1
PreferencesDialog\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\xa8\xff\xff\xff\xf6\0\0\x5{\0\0\x3\xb7\0\0\x1\xa8\0\0\0\x1b\0\0\x5{\0\0\x3\xb7\0\0\0\0\0\0\0\0\a\x80\0\0\x1\xa8\0\0\0\x1b\0\0\x5{\0\0\x3\xb7)
graphicsView_graphView\current_goal_color=@Variant(\0\0\0\x43\x1\xff\xff\x80\x80\0\0\x80\x80\0\0)
graphicsView_graphView\ensure_frame_visible=1
graphicsView_graphView\global_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
graphicsView_graphView\global_path_color=@Variant(\0\0\0\x43\x1\xff\xff\x80\x80\0\0\x80\x80\0\0)
graphicsView_graphView\global_path_visible=true
graphicsView_graphView\gps_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\x80\x80\x80\x80\0\0)
graphicsView_graphView\gps_graph_visible=true
graphicsView_graphView\graph_visible=true
graphicsView_graphView\grid_visible=true
graphicsView_graphView\gt_color=@Variant(\0\0\0\x43\x1\xff\xff\xa0\xa0\xa0\xa0\xa4\xa4\0\0)
graphicsView_graphView\gt_graph_visible=true
graphicsView_graphView\highlighting_color_0=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
graphicsView_graphView\highlighting_color_1=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
graphicsView_graphView\inter_session_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\0\0\0\0)
graphicsView_graphView\intra_inter_session_colors_enabled=false
graphicsView_graphView\intra_session_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
graphicsView_graphView\link_width=0
graphicsView_graphView\local_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
graphicsView_graphView\local_path_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
graphicsView_graphView\local_path_visible=true
graphicsView_graphView\local_radius_visible=false
graphicsView_graphView\loop_closure_outlier_thr=@Variant(\0\0\0\x87\0\0\0\0)
graphicsView_graphView\min_link_length=@Variant(\0\0\0\x87<\xa3\xd7\n)
graphicsView_graphView\neighbor_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0)
graphicsView_graphView\neighbor_merged_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xaa\xaa\0\0\0\0)
graphicsView_graphView\node_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0)
graphicsView_graphView\node_odom_cache_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\x80\x80\0\0\0\0)
graphicsView_graphView\node_radius=0.009999999776482582
graphicsView_graphView\node_visible=true
graphicsView_graphView\odom_cache_overlay=true
graphicsView_graphView\orientation_ENU=false
graphicsView_graphView\origin_visible=true
graphicsView_graphView\referential_visible=true
graphicsView_graphView\rejected_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
graphicsView_graphView\user_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
graphicsView_graphView\view_plane=0
graphicsView_graphView\virtual_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
imageView_loopClosure\alpha=100
imageView_loopClosure\bg_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
imageView_loopClosure\colormap=2
imageView_loopClosure\colormap_camera_frame=true
imageView_loopClosure\colormap_max_range=@Variant(\0\0\0\x87\0\0\0\0)
imageView_loopClosure\colormap_min_range=@Variant(\0\0\0\x87\0\0\0\0)
imageView_loopClosure\confidence_shown=false
imageView_loopClosure\depth_shown=false
imageView_loopClosure\feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
imageView_loopClosure\features_shown=true
imageView_loopClosure\features_size=0
imageView_loopClosure\graphics_view=false
imageView_loopClosure\graphics_view_scale=true
imageView_loopClosure\graphics_view_scale_to_height=false
imageView_loopClosure\image_shown=true
imageView_loopClosure\lines_shown=true
imageView_loopClosure\lines_width=0
imageView_loopClosure\matching_feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
imageView_loopClosure\matching_line_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
imageView_odometry\alpha=200
imageView_odometry\bg_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
imageView_odometry\colormap=2
imageView_odometry\colormap_camera_frame=true
imageView_odometry\colormap_max_range=@Variant(\0\0\0\x87\0\0\0\0)
imageView_odometry\colormap_min_range=@Variant(\0\0\0\x87\0\0\0\0)
imageView_odometry\confidence_shown=false
imageView_odometry\depth_shown=false
imageView_odometry\feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
imageView_odometry\features_shown=true
imageView_odometry\features_size=0
imageView_odometry\graphics_view=false
imageView_odometry\graphics_view_scale=true
imageView_odometry\graphics_view_scale_to_height=false
imageView_odometry\image_shown=true
imageView_odometry\lines_shown=true
imageView_odometry\lines_width=0
imageView_odometry\matching_feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
imageView_odometry\matching_line_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
imageView_source\alpha=100
imageView_source\bg_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
imageView_source\colormap=2
imageView_source\colormap_camera_frame=true
imageView_source\colormap_max_range=@Variant(\0\0\0\x87\0\0\0\0)
imageView_source\colormap_min_range=@Variant(\0\0\0\x87\0\0\0\0)
imageView_source\confidence_shown=false
imageView_source\depth_shown=false
imageView_source\feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
imageView_source\features_shown=true
imageView_source\features_size=0
imageView_source\graphics_view=false
imageView_source\graphics_view_scale=true
imageView_source\graphics_view_scale_to_height=false
imageView_source\image_shown=true
imageView_source\lines_shown=true
imageView_source\lines_width=0
imageView_source\matching_feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
imageView_source\matching_line_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
multisession_imageview\alpha=100
multisession_imageview\bg_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
multisession_imageview\colormap=2
multisession_imageview\colormap_camera_frame=true
multisession_imageview\colormap_max_range=@Variant(\0\0\0\x87\0\0\0\0)
multisession_imageview\colormap_min_range=@Variant(\0\0\0\x87\0\0\0\0)
multisession_imageview\confidence_shown=false
multisession_imageview\depth_shown=false
multisession_imageview\feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
multisession_imageview\features_shown=true
multisession_imageview\features_size=0
multisession_imageview\graphics_view=false
multisession_imageview\graphics_view_scale=true
multisession_imageview\graphics_view_scale_to_height=false
multisession_imageview\image_shown=true
multisession_imageview\lines_shown=true
multisession_imageview\lines_width=0
multisession_imageview\matching_feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
multisession_imageview\matching_line_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
widget_cloudViewer\bg_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
widget_cloudViewer\camera_axis_shown=true
widget_cloudViewer\camera_focal=@Variant(\0\0\0T8\xb6\0\0\x37s\0\0\xb5\xd5\0\0)
widget_cloudViewer\camera_free=false
widget_cloudViewer\camera_lockZ=true
widget_cloudViewer\camera_pose=@Variant(\0\0\0T\xc0\xc0\x9b\x36@\x80\xf7\xea\x41\x17p\xe)
widget_cloudViewer\camera_target_follow=true
widget_cloudViewer\camera_target_locked=false
widget_cloudViewer\camera_up=@Variant(\0\0\0T\0\0\0\0\0\0\0\0?\x80\0\0)
widget_cloudViewer\color_range_inverted=0
widget_cloudViewer\color_range_max=0
widget_cloudViewer\color_range_min=0
widget_cloudViewer\coordinate_frame_scale=1
widget_cloudViewer\frustum_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\0\0\0\0)
widget_cloudViewer\frustum_scale=@Variant(\0\0\0\x87?\0\0\0)
widget_cloudViewer\frustum_shown=true
widget_cloudViewer\grid=false
widget_cloudViewer\grid_cell_count=50
widget_cloudViewer\grid_cell_size=1
widget_cloudViewer\intensity_max=100
widget_cloudViewer\intensity_rainbow_colormap=false
widget_cloudViewer\intensity_red_colormap=true
widget_cloudViewer\normals=false
widget_cloudViewer\normals_scale=0.20000000298023224
widget_cloudViewer\normals_step=1
widget_cloudViewer\rendering_rate=5
widget_cloudViewer\trajectory_shown=true
widget_cloudViewer\trajectory_size=100
@@ -0,0 +1,27 @@
#%YAML:1.0
---
camera_name: MULTI_RGBD_INERTIAL_DATASET_FRONT
image_width: 640
image_height: 360
camera_matrix:
rows: 3
cols: 3
data: [ 319.1610, 0., 329.5844, 0.,
319.0881, 182.1654, 0., 0., 1. ]
distortion_coefficients:
rows: 1
cols: 4
data: [ -0.0535, 0.0589, -0.0176, 0.0 ]
distortion_model: plumb_bob
rectification_matrix:
rows: 3
cols: 3
data: [ 1., 0., 0.,
0., 1., 0.,
0., 0., 1. ]
projection_matrix:
rows: 3
cols: 4
data: [ 319.1610, 0., 329.5844, 0., 0.,
319.0881, 182.1654, 0., 0., 0., 1.,
0. ]
@@ -0,0 +1,27 @@
#%YAML:1.0
---
camera_name: MULTI_RGBD_INERTIAL_DATASET_LEFT
image_width: 640
image_height: 360
camera_matrix:
rows: 3
cols: 3
data: [ 319.1506, 0., 321.8367, 0.,
318.9474, 180.0959, 0., 0., 1. ]
distortion_coefficients:
rows: 1
cols: 4
data: [ -0.0556, 0.0576, -0.0174, 0.0 ]
distortion_model: plumb_bob
rectification_matrix:
rows: 3
cols: 3
data: [ 1., 0., 0.,
0., 1., 0.,
0., 0., 1. ]
projection_matrix:
rows: 3
cols: 4
data: [ 319.1506, 0., 321.8367, 0., 0.,
318.9474, 180.0959, 0., 0., 0., 1.,
0. ]
@@ -0,0 +1,27 @@
#%YAML:1.0
---
camera_name: MULTI_RGBD_INERTIAL_DATASET_REAR
image_width: 640
image_height: 360
camera_matrix:
rows: 3
cols: 3
data: [ 319.3360, 0., 323.9265, 0.,
319.1947, 181.9133, 0., 0., 1. ]
distortion_coefficients:
rows: 1
cols: 4
data: [ -0.0534, 0.0542, -0.0155, 0.0 ]
distortion_model: plumb_bob
rectification_matrix:
rows: 3
cols: 3
data: [ 1., 0., 0.,
0., 1., 0.,
0., 0., 1. ]
projection_matrix:
rows: 3
cols: 4
data: [ 319.3360, 0., 323.9265, 0., 0.,
319.1947, 181.9133, 0., 0., 0., 1.,
0. ]
@@ -0,0 +1,27 @@
#%YAML:1.0
---
camera_name: MULTI_RGBD_INERTIAL_DATASET_RIGHT
image_width: 640
image_height: 360
camera_matrix:
rows: 3
cols: 3
data: [ 320.7208, 0., 325.4179, 0.,
320.7359, 184.8089, 0., 0., 1. ]
distortion_coefficients:
rows: 1
cols: 4
data: [ -0.0531, 0.0549, -0.0166, 0.0 ]
distortion_model: plumb_bob
rectification_matrix:
rows: 3
cols: 3
data: [ 1., 0., 0.,
0., 1., 0.,
0., 0., 1. ]
projection_matrix:
rows: 3
cols: 4
data: [ 320.7208, 0., 325.4179, 0., 0.,
320.7359, 184.8089, 0., 0., 0., 1.,
0. ]
@@ -0,0 +1,162 @@
#
# Example launch file to run VSLAM on this dataset: https://github.com/seungsang07/multi-rgbd-inertial-dataset
#
# Requirement(s):
# * RTAB-Map should be built with OpenGV support.
#
# To convert ROS1 bags to ROS2 (https://docs.openvins.com/dev-ros1-to-ros2.html):
# sudo pip install rosbags
# rosbags-convert --src Indoor.bag --dst Indoor
#
# Usage:
# ros2 launch rtabmap_examples multi_rgbd_inertial_dataset.launch.py
# ros2 bag play Indoor/Indoor.db3 --clock
#
# Note(s):
# * Communication performance could be improved using the composable nodes of these nodes instead,
# but we are using nodes here to better understand what is going on with rqt_graph.
#
# To get RMSE after the run (using https://github.com/MichaelGrupp/evo):
# rtabmap-export --poses --pose_format 10 ~/.ros/rtabmap.db
# evo_ape tum -a -p --plot_mode xy ~/Downloads/GroundTruth/gt_indoor.txt ~/.ros/rtabmap_poses.txt
#
from launch import LaunchDescription, LaunchContext
from launch_ros.actions import SetParameter
from launch_ros.substitutions import FindPackageShare
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument, OpaqueFunction
from launch.substitutions import LaunchConfiguration
def make_yaml_to_camera_info_node(camera):
# the dataset doesn't provide camera_info topics of the camera in the rosbags, so we need to generate them
return Node(
package='rtabmap_util', executable='yaml_to_camera_info.py', name=f'yaml_to_camera_info_{camera}', output='screen',
parameters=[{'yaml_path': [FindPackageShare('rtabmap_examples'), f'/config/multi_rgbd_inertial_dataset_{camera}.yaml']}],
remappings=[
('image', 'color/image_raw'),
('camera_info', 'color/camera_info')],
namespace=f'camera_{camera}')
def make_rgbd_sync_node(camera):
# synchronize topics of each camera together
return Node(
package='rtabmap_sync', executable='rgbd_sync', name=f'rgbd_sync_{camera}', output="screen",
parameters=[{"approx_sync": False}],
remappings=[
("rgb/image", 'color/image_raw'),
("depth/image", 'aligned_depth_to_color/image_raw'),
("rgb/camera_info", 'color/camera_info'),
("rgbd_image", 'rgbd_image')],
namespace=f'camera_{camera}')
def make_static_transform_publisher_node(x, y, z, yaw, pitch, roll, parent_frame, child_frame):
return Node(
package='tf2_ros', executable='static_transform_publisher', name=f"static_transform_publisher_{parent_frame}_{child_frame}", output='screen',
arguments=['--frame-id', parent_frame,
'--child-frame-id', child_frame,
'--x', str(x),
'--y', str(y),
'--z', str(z),
'--yaw', str(yaw),
'--pitch', str(pitch),
'--roll', str(roll)])
def launch_setup(context: LaunchContext, *args, **kwargs):
use_imu = LaunchConfiguration('use_imu').perform(context)
use_imu = use_imu == 'true' or use_imu == 'True'
# Synchronize all cameras together
rgbdx_sync_node = Node(
package='rtabmap_sync', executable='rgbdx_sync', output="screen",
parameters=[{
"rgbd_cameras": 4,
"approx_sync": True,
"approx_sync_max_interval": 0.015}],
remappings=[
("rgbd_image0", '/camera_left/rgbd_image'),
("rgbd_image1", '/camera_front/rgbd_image'),
("rgbd_image2", '/camera_right/rgbd_image'),
("rgbd_image3", '/camera_rear/rgbd_image')],
namespace='rtabmap'
)
# RGB-D odometry
remappings = []
if use_imu:
remappings = [("imu", '/imu')]
rgbd_odometry_node = Node(
package='rtabmap_odom', executable='rgbd_odometry', output="screen",
parameters=[{
"frame_id": 'base_link',
"rgbd_cameras": 0, # make it subscribe to rgbd_images topic from rgbdx_sync
"subscribe_rgbd": True,
"wait_imu_to_init": use_imu}],
remappings=remappings,
namespace='rtabmap'
)
# SLAM
remappings=[("sensor_data", 'odom_sensor_data/raw')]
if(use_imu):
remappings.append(('imu', '/imu'))
slam_node = Node(
package='rtabmap_slam', executable='rtabmap', output="screen",
parameters=[{
"subscribe_sensor_data": True,
"frame_id": 'base_link',
"approx_sync": False,
"Grid/3D": 'false',
"Grid/RayTracing": 'true',
"Grid/NormalsSegmentation": 'false',
"Grid/MaxGroundHeight": '0.05',
"Rtabmap/CreateIntermediateNodes": 'true' # Only to record all odometry poses for trajectory evaluation purpose
}],
remappings=remappings,
arguments=["--delete_db_on_start"],
namespace='rtabmap'
)
# Visualization
viz_node = Node(
package='rtabmap_viz', executable='rtabmap_viz', output="screen",
parameters=[{
"subscribe_sensor_data": True,
"frame_id": 'base_link',
"approx_sync": False,
"subscribe_odom_info": True
}],
remappings=[("sensor_data", 'odom_sensor_data/raw')],
arguments=["-d", [FindPackageShare('rtabmap_examples'), '/config/multi_rgbd_inertial_dataset.ini']],
namespace='rtabmap'
)
return [
make_yaml_to_camera_info_node('left'),
make_rgbd_sync_node('left'),
make_yaml_to_camera_info_node('front'),
make_rgbd_sync_node('front'),
make_yaml_to_camera_info_node('right'),
make_rgbd_sync_node('right'),
make_yaml_to_camera_info_node('rear'),
make_rgbd_sync_node('rear'),
# The dataset doesn't provide /tf or /tf_static for the extrinsics between imu and the cameras, so we add them here
make_static_transform_publisher_node(0., 0., 0.22, 3.1415926, 0., 0., 'base_link', 'imu_link'),
make_static_transform_publisher_node(-0.099307, -0.208806, 0.024309, 3.108592, -0.051480, -1.592415, 'imu_link', 'camera_left_color_optical_frame'),
make_static_transform_publisher_node(-0.435392, 0.022256, 0.053441, 1.532258, -0.007768, -1.580204, 'imu_link', 'camera_front_color_optical_frame'),
make_static_transform_publisher_node(-0.063987, 0.212966, 0.032071, -0.010030, 0.021977, -1.553814, 'imu_link', 'camera_right_color_optical_frame'),
make_static_transform_publisher_node(0.178893, -0.006307, 0.017677, -1.606156, 0.027545, -1.587179, 'imu_link', 'camera_rear_color_optical_frame'),
make_static_transform_publisher_node(0.045872, -0.026775, 0.284806, 3.141063, -0.014869, -0.014969, 'imu_link', 'os_sensor'),
rgbdx_sync_node,
rgbd_odometry_node,
slam_node,
viz_node
]
def generate_launch_description():
return LaunchDescription([
DeclareLaunchArgument('use_imu', default_value='false', description='Use IMU'),
SetParameter(name='use_sim_time', value=True),
OpaqueFunction(function=launch_setup),
])
@@ -74,7 +74,6 @@ def generate_launch_description():
remappings=[
("rgbd_image", '/realsense_camera1/rgbd_image'),
("odom", 'odom')],
arguments=["--delete_db_on_start", ''],
prefix='',
namespace='rtabmap'
)
@@ -88,7 +88,6 @@ def generate_launch_description():
remappings=[
("rgbd_image", '/realsense_camera1/rgbd_image'),
("odom", 'odom')],
arguments=["--delete_db_on_start", ''],
prefix='',
namespace='rtabmap'
)
+1 -1
View File
@@ -33,7 +33,7 @@ namespace rtabmap_sync
{
RGBDXSync::RGBDXSync(const rclcpp::NodeOptions & options) :
Node("rgbd_sync", options),
Node("rgbdx_sync", options),
SYNC_INIT(rgbd2),
SYNC_INIT(rgbd3),
SYNC_INIT(rgbd4),
+8 -3
View File
@@ -73,9 +73,14 @@ class YamlToCameraInfo(Node):
def main(args=None):
rclpy.init(args=args)
yaml_to_camera_info = YamlToCameraInfo()
rclpy.spin(yaml_to_camera_info)
yaml_to_camera_info.destroy_node()
rclpy.shutdown()
try:
rclpy.spin(yaml_to_camera_info)
except KeyboardInterrupt:
pass
finally:
yaml_to_camera_info.destroy_node()
if rclpy.ok():
rclpy.shutdown()
if __name__ == "__main__":
main()
+7 -3
View File
@@ -37,7 +37,7 @@ QApplication * app = 0;
void my_handler(int){
UINFO("rtabmap_viz: ctrl-c catched! Exiting Qt app...");
app->exit(-1);
app->exit(0);
}
int main(int argc, char** argv)
@@ -87,8 +87,12 @@ int main(int argc, char** argv)
r = app->exec();// MUST be called by the Main Thread
RCLCPP_INFO(node->get_logger(), "rtabmap_viz stopping spinner...");
rclcpp::shutdown();
execution_thread.join();
if (rclcpp::ok()) {
rclcpp::shutdown();
}
if (execution_thread.joinable()) {
execution_thread.join();
}
RCLCPP_INFO(node->get_logger(), "rtabmap_viz: All done! Closing...");
}