-
Notifications
You must be signed in to change notification settings - Fork 169
Description
Using an Orbbec Gemini 336L camera, even though it wasn't mentioned in the standard guide. I got the camera to generate a point cloud by tweaking the RealSense camera launch file. But the pose is normal for some time initially and then shoots off / jumps to some random pose that is definitely incorrect. It was also discussed in Issue Pose jumps after initialization #183 . I am unsure about the parameters given below and how to obtain them.
- Gyro noise density
- Gyro random walk
- Accel noise density
- Accel random walk
They were not mentioned in the datasheet. Is there any resource that might be helpful to me ? Attaching the image and launch file below
``
`import launch
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode
def generate_launch_description():
"""Launch Isaac ROS Visual SLAM for Orbbec Gemini with existing /camera/* topics."""
visual_slam_node = ComposableNode(
name='visual_slam_node',
package='isaac_ros_visual_slam',
plugin='nvidia::isaac_ros::visual_slam::VisualSlamNode',
parameters=[{
# Core behavior
'enable_image_denoising': False,
'rectified_images': False, # using image_raw topics
'enable_imu_fusion': True,
'enable_localization_n_mapping': True,
'enable_ground_constraint_in_odometry': False,
'enable_ground_constraint_in_slam': False,
'gyro_noise_density': 2.6e-4,
'gyro_random_walk': 2.0e-5,
'accel_noise_density': 1.2e-3,
'accel_random_walk': 3.0e-3,
'calibration_frequency': 200.0,
'image_jitter_threshold_ms': 100.0,
'enable_ground_constraint_in_slam': True,
'enable_ground_constraint_in_odometry': True,
# Frames – MUST match your TF tree (from view_frames)
# TF tree you showed:
# camera_link
# └─ camera_left_ir_frame
# ├─ camera_left_ir_optical_frame
# ├─ camera_right_ir_frame → camera_right_ir_optical_frame
# ├─ camera_gyro_frame → camera_gyro_optical_frame
# └─ camera_accel_frame → camera_accel_optical_frame
'map_frame': 'map',
'odom_frame': 'odom',
'base_frame': 'camera_link',
'imu_frame': 'camera_gyro_optical_frame',
'camera_optical_frames': [
'camera_left_ir_optical_frame',
'camera_right_ir_optical_frame',
],
# SLAM visualization / misc
'enable_slam_visualization': True,
'enable_landmarks_view': True,
'enable_observations_view': True,
# Stereo config
'num_cameras': 2,
'camera_optical_frames': [
'camera_left_ir_optical_frame',
'camera_right_ir_optical_frame',
],
#tf
'publish_map_to_odom_tf': True,
'publish_odom_to_base_tf': True,
'invert_map_to_odom_tf': False,
'invert_odom_to_base_tf': False,
}],
remappings=[
# Left camera
('visual_slam/image_0', '/camera/left_ir/image_raw'),
('visual_slam/camera_info_0', '/camera/left_ir/camera_info'),
# Right camera
('visual_slam/image_1', '/camera/right_ir/image_raw'),
('visual_slam/camera_info_1', '/camera/right_ir/camera_info'),
# IMU
('visual_slam/imu', '/camera/gyro/sample'),
],
)
visual_slam_launch_container = ComposableNodeContainer(
name='visual_slam_launch_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[visual_slam_node],
output='screen',
)
return launch.LaunchDescription([visual_slam_launch_container])`
