Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

求助:Co-SLAM在自己的Realsense D435i数据集上稀烂 #2

Open
Orwlit opened this issue Nov 20, 2023 · 3 comments
Open

求助:Co-SLAM在自己的Realsense D435i数据集上稀烂 #2

Orwlit opened this issue Nov 20, 2023 · 3 comments

Comments

@Orwlit
Copy link

Orwlit commented Nov 20, 2023

感谢大家维护这个仓库!

问题现象:

我用Realsense D435i录制了一个室内数据集,但mesh出的效果稀烂,因为第一帧建图得到的结果不好,因此后续位姿估计和建图直接丢失,loss都是nan。

这是第一帧mesh出的场景:
2a2c6d39572775f20f145bef1bc35c5

这是它本应该有的样子:
微信图片_20231121010820

目前我的情况是:

  1. 代码中我的yaml文件是从replica.yaml里改过来的,dataset.py中读数据的类也是从RealsenseDataset类中改过来的
  2. 目前我确信进入代码的深度图没有问题,即每个像素的值代表真是距离(单位:米)。
  3. 录制的是16位深度图,像素值和真实深度的缩放比例是0.001,尺寸是640 * 480

yaml文件中所有参数如下,除了cam以外基本没改:

dataset: 'my_realsense'

data:
  downsample: 1
  sc_factor: 1
  translation: 0
  num_workers: 4

mapping:
  sample: 2048
  first_mesh: True
  iters: 10
  cur_frame_iters: 0
  lr_embed: 0.01
  lr_decoder: 0.01
  lr_rot: 0.001
  lr_trans: 0.001
  keyframe_every: 5
  map_every: 5
  n_pixels: 0.05
  first_iters: 200 # 第一帧建图,迭代次数
  optim_cur: True
  min_pixels_cur: 100
  map_accum_step: 1
  pose_accum_step: 5
  map_wait_step: 0
  filter_depth: False

tracking:
  iter: 10
  sample: 1024
  pc_samples: 40960
  lr_rot: 0.001
  lr_trans: 0.001
  ignore_edge_W: 20
  ignore_edge_H: 20
  iter_point: 0
  wait_iters: 100
  const_speed: True
  best: True

grid:
  enc: 'HashGrid'
  tcnn_encoding: True
  hash_size: 16
  voxel_color: 0.08
  voxel_sdf: 0.02
  oneGrid: True

pos:
  enc: 'OneBlob'
  n_bins: 16

decoder:
  geo_feat_dim: 15
  hidden_dim: 32
  num_layers: 2
  num_layers_color: 2
  hidden_dim_color: 32
  tcnn_network: False

# realsense depth_sensor.get_depth_scale(): 0.0010000000474974513
cam:
  H: 480
  W: 640
  fx: 607.155
  fy: 606.096
  cx: 325.863
  cy: 241.299
  png_depth_scale: 1000.
  crop_edge: 0
  near: 0 # 精采样范围 (near, far), n_samples_d个
  far: 5
  depth_trunc: 100. # 不开[mesh][visualisation]就没用

training:
  rgb_weight: 5.0
  depth_weight: 0.1
  sdf_weight: 1000
  fs_weight: 10
  eikonal_weight: 0
  smooth_weight: 0.000001
  smooth_pts: 32
  smooth_vox: 0.1
  smooth_margin: 0.05
  #n_samples: 256
  n_samples_d: 32 # 精采样个数
  range_d: 0.1    # 等距采样(粗采样)范围 (-range_d, +range_d), n_range_d个
  n_range_d: 11   # 粗采样点个数
  n_importance: 0 # 是否进行 2.1.4重要点采样(精采样),默认不开启
  perturb: 1
  white_bkgd: False
  trunc: 0.1
  rot_rep: 'axis_angle'
  rgb_missing: 0.05

mesh:
  resolution: 512
  render_color: False
  vis: 200
  voxel_eval: 0.05
  voxel_final: 0.02
  visualisation: False
  

我想问几个问题:

  1. ground truth的pose并不会参与到全程的位姿估计吧?因为我没有真值,所以真值的加载全部用单位矩阵替代。
  2. 是因为我的参数没调对导致的建图稀烂吗?
  3. 有没有大佬有过类似用自己的传感器跑Co-SLAM的经验,希望能交流下!

希望得到各位大佬的帮助,感激不尽!!!

@shuttworth
Copy link
Collaborator

你好,你方便把你录制的bag包数据传给我们么?我们会尝试复现和寻找问题

@Orwlit
Copy link
Author

Orwlit commented Dec 4, 2023

你好,你方便把你录制的bag包数据传给我们么?我们会尝试复现和寻找问题

已经找到问题了,是一个align_mat.txt的文件导致的,官方的Realsense数据集my_room中有这个文件,但我把它忽略了。之后我把这个数据集的align_mat.txt拷到我的数据集中就能正常运转。但可能是因为需要针对我的realsense进行更精细的标定,我的数据集重建出的效果没那么好,但也能看。

align_mat.txt好像是将相机坐标系变换到世界坐标系的一个变换?我其实一直也没太搞清楚,大佬有仔细研究过源码吗?

@Orwlit Orwlit closed this as completed Dec 4, 2023
@Orwlit Orwlit reopened this Dec 4, 2023
@Orwlit
Copy link
Author

Orwlit commented Dec 4, 2023

你好,你方便把你录制的bag包数据传给我们么?我们会尝试复现和寻找问题

而且co-slam官方其实没有放出他们运行自己realsense数据集的yaml文件,所以我也是根据其他文件自己调的参数,可能也是导致我的效果一般的原因。

总而言之即使是官方的realsense数据集,可能因为深度相机的噪声,其重建效果也远没有Replica数据集那样好

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants