longer95479@home:~$

[Paper Reading] TextSLAM: Visual SLAM With Semantic Planar Text Features


TPAMI 提供了室内和室外数据集,室内的真值由动捕提供,室外的真值由sfm提供(COLMAP) 几何信息 平面的参数化 如何表示 Text Patch 呢,换言之如何参数化呢? 类似光线投射,平面表示为 $\theta$,归一化平面上的点如果在平面上,使用$\rho = \theta ^T \tilde{m}$ 求得该点的深度,从而获得该点的 3D 坐标 这个 $\theta$ 如何求得呢?考虑空间上的平面方程,使用某一帧相机的相机坐标系:...



ssh a nx orin and make its docker pull work


问题场景:使用个人PC通过 ssh 连接到 orin nx,但由于网络问题,orin的 docker pull 命令无法正常使用。而个人pc已开启代理,端口为127.0.0.1:8889(具体地址端口可在 v2ray 的首选项里查看)。 解决思路则是将 ssh 的 orin 的本地端口8889 关联到个人pc的 127.0.0.1:8889 上,之后在docker的代理配置文件里配置代理地址端口为 127.0.0.1:8889。 使用...



[VINS-Fusion] Feature Manager

double FeatureManager::compensatedParallax2(const FeaturePerId &it_per_id, int frame_count)
{
  //check the second last frame is keyframe or not
  //parallax betwwen seconde last frame and third last frame
  const FeaturePerFrame &frame_i = it_per_id.feature_per_frame[frame_count - 2 - it_per_id.start_frame];
  const FeaturePerFrame &frame_j = it_per_id.feature_per_frame[frame_count - 1 - it_per_id.start_frame];

  double ans = 0;
  Vector3d p_j = frame_j.point;

  double u_j = p_j(0);
  double v_j = p_j(1);

  Vector3d p_i = frame_i.point;
  Vector3d p_i_comp;

  //int r_i = frame_count - 2;
  //int r_j = frame_count - 1;
  //p_i_comp = ric[camera_id_j].transpose() * Rs[r_j].transpose() * Rs[r_i] * ric[camera_id_i] * p_i;
  p_i_comp = p_i;
  double dep_i = p_i(2);
  double u_i = p_i(0) / dep_i;
  double v_i = p_i(1) / dep_i;
  double du = u_i - u_j, dv = v_i - v_j;

  double dep_i_comp = p_i_comp(2);
  double u_i_comp = p_i_comp(0) / dep_i_comp;
  double v_i_comp = p_i_comp(1) / dep_i_comp;
  double du_comp = u_i_comp - u_j, dv_comp = v_i_comp - v_j;

  ans = max(ans, sqrt(min(du * du + dv * dv, du_comp * du_comp + dv_comp * dv_comp)));

  return ans;
}

-->

feature manager 的主要数据结构为: class FeatureManager class FeaturePerId class FeaturePerFrame FeaturePerFrame 包括某帧内某个路标被观测的信息,如归一化平面坐标及速度、像素坐标、是否是双目、时间偏移。 FeaturePerId 则主要包括 vector<FeaturePerFrame> feature_per_frame,以及 frame_id、start_frame 等路标点个体级别的信息。值得注意的是,vins假设特征点是被连续观测到的,因此只记录开始的帧,即可推断出 vector 内其他观测所属的帧。 传入...

double FeatureManager::compensatedParallax2(const FeaturePerId &it_per_id, int frame_count)
{
  //check the second last frame is keyframe or not
  //parallax betwwen seconde last frame and third last frame
  const FeaturePerFrame &frame_i = it_per_id.feature_per_frame[frame_count - 2 - it_per_id.start_frame];
  const FeaturePerFrame &frame_j = it_per_id.feature_per_frame[frame_count - 1 - it_per_id.start_frame];

  double ans = 0;
  Vector3d p_j = frame_j.point;

  double u_j = p_j(0);
  double v_j = p_j(1);

  Vector3d p_i = frame_i.point;
  Vector3d p_i_comp;

  //int r_i = frame_count - 2;
  //int r_j = frame_count - 1;
  //p_i_comp = ric[camera_id_j].transpose() * Rs[r_j].transpose() * Rs[r_i] * ric[camera_id_i] * p_i;
  p_i_comp = p_i;
  double dep_i = p_i(2);
  double u_i = p_i(0) / dep_i;
  double v_i = p_i(1) / dep_i;
  double du = u_i - u_j, dv = v_i - v_j;

  double dep_i_comp = p_i_comp(2);
  double u_i_comp = p_i_comp(0) / dep_i_comp;
  double v_i_comp = p_i_comp(1) / dep_i_comp;
  double du_comp = u_i_comp - u_j, dv_comp = v_i_comp - v_j;

  ans = max(ans, sqrt(min(du * du + dv * dv, du_comp * du_comp + dv_comp * dv_comp)));

  return ans;
}
-->


Total views. cowboys. Hits