@@ -104,7 +104,7 @@ bool initializeCuVSLAM(const SensorData & data,
104104 std::vector<std::array<float , 12 >> & intrinsics,
105105 cudaStream_t & cuda_stream);
106106
107- CUVSLAM_Configuration CreateConfiguration (const SensorData & data);
107+ CUVSLAM_Configuration CreateConfiguration (const SensorData & data, int multicam_mode );
108108
109109bool prepareImages (const SensorData & data,
110110 std::vector<CUVSLAM_Image> & cuvslam_images,
@@ -159,18 +159,6 @@ Transform FromcuVSLAMPose(const CUVSLAM_Pose & cuvslam_pose)
159159 return rtabmap_transform;
160160}
161161
162- void PrintConfiguration (const CUVSLAM_Configuration & cfg)
163- {
164- UINFO (" Use use_gpu: %s" , cfg.use_gpu ? " true" : " false" );
165- const char * odometry_mode_str = " Unknown" ;
166- switch (cfg.odometry_mode ) {
167- case Multicamera: odometry_mode_str = " Multicamera (vision-only)" ; break ;
168- case Inertial: odometry_mode_str = " Inertial" ; break ;
169- case RGBD: odometry_mode_str = " RGBD" ; break ;
170- }
171- UINFO (" Odometry Mode: %s" , odometry_mode_str);
172- }
173-
174162} // namespace rtabmap
175163
176164#endif
@@ -204,7 +192,14 @@ OdometryCuVSLAM::OdometryCuVSLAM(const ParametersMap & parameters) :
204192{
205193#ifdef RTABMAP_CUVSLAM
206194 Parameters::parse (parameters, Parameters::kRegForce3DoF (), planar_constraints_);
207-
195+ Parameters::parse (parameters, Parameters::kOdomCuVSLAMMulticamMode (), multicam_mode_);
196+ if (multicam_mode_ < 0 || multicam_mode_ > 2 )
197+ {
198+ UWARN (" %s=%d is invalid, clamping to [0,2]." ,
199+ Parameters::kOdomCuVSLAMMulticamMode ().c_str (), multicam_mode_);
200+ multicam_mode_ = multicam_mode_ <= 0 ? 0 : 2 ;
201+ }
202+ UINFO (" %s=%d" , Parameters::kOdomCuVSLAMMulticamMode ().c_str (), multicam_mode_);
208203 // Warm up GPU and create CUDA context before tracker initialization
209204 // Supposedly this will speed up the tracker initialization
210205 CUVSLAM_WarmUpGPU ();
@@ -734,8 +729,7 @@ bool initializeCuVSLAM(const SensorData & data,
734729 camera_rig.cameras = cuvslam_cameras.data ();
735730 camera_rig.num_cameras = cuvslam_cameras.size ();
736731
737- const CUVSLAM_Configuration configuration = CreateConfiguration (data);
738- PrintConfiguration (configuration);
732+ const CUVSLAM_Configuration configuration = CreateConfiguration (data, multicam_mode_);
739733
740734 // Create tracker
741735 CUVSLAM_TrackerHandle tracker_handle;
@@ -782,7 +776,7 @@ Implementation based on Isaac ROS VisualSlamNode::VisualSlamImpl::CreateConfigur
782776Source: isaac_ros_visual_slam/isaac_ros_visual_slam/src/impl/visual_slam_impl.cpp:379-422
783777https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam/blob/19be8c781a55dee9cfbe9f097adca3986638feb1/isaac_ros_visual_slam/src/impl/visual_slam_impl.cpp#L379-L422
784778*/
785- CUVSLAM_Configuration CreateConfiguration (const SensorData & data)
779+ CUVSLAM_Configuration CreateConfiguration (const SensorData & data, int multicam_mode )
786780{
787781 CUVSLAM_Configuration configuration;
788782 CUVSLAM_InitDefaultConfiguration (&configuration);
@@ -803,7 +797,7 @@ CUVSLAM_Configuration CreateConfiguration(const SensorData & data)
803797
804798 // Odometry configuration (Vision-only, no IMU)
805799 configuration.odometry_mode = CUVSLAM_OdometryMode::Multicamera;
806- configuration.multicam_mode = 0 ; // moderate (0), performance (1) or precision (2).
800+ configuration.multicam_mode = multicam_mode ; // moderate (0), performance (1) or precision (2).
807801 configuration.debug_imu_mode = 0 ;
808802
809803 // Frame timing
0 commit comments