Skip to content

Latest commit

 

History

History
97 lines (86 loc) · 3.29 KB

TODO.md

File metadata and controls

97 lines (86 loc) · 3.29 KB

Plan

Foundations

  • Smooth the workflow
    • Find a good linear algebra library
    • Write operator overloads, extensions
    • Test EJML and extensions
    • Translate all src to Kotlin
    • Remove Mat2 Vec2 Vec3
    • Find command line compile and run commands
  • Reproduce HW2 EKF SLAM in java using processing.
  • Replace DMatrix2 with FMatrix2

Simulator

  • significance of time in odometry and laser scan struct
  • scaling
  • 3d rendering

Obstacle and landmark extraction

  • Extract obstacles
    • RANSAC/LS
      • Return end points not defining points
      • Line fitting
      • Fix partition code
      • use IEP for better partitioning
    • IEP
  • Extract landmarks
    • No need for checking intersections separately due to IEP
    • Loose end detection in first stage
    • Intersection detection in second stage
  • Advanced landmark detection
    • Intersection landmarks
      • use perpendicular projections points
      • check distances (IEP shortcoming)
    • Loose endpoints
      • Almost parallel to a long wall case. Just increase DISCONTINUITY THREASHOLD
      • Simple block bug

Estimation

  • Estimate Sigma_N
    • Give a control for some time and not errors, fit a gaussian with that
  • Estimate Sigma_M
    • Sigma_M needs the RANSAC/LS/Corner detector

SLAM

  • SLAM
    • Propogation
    • Augement
    • Update
    • Do all updates first and then augment all new landmarks
    • Periodically clean landmarks which have very less number of hits
    • Use estimated sigmas

Planning

  • HitGrid
    • Keep track of obstacles detected
    • Is long needed for count? No.
    • PRM/A* on Hitgrid
    • Control
    • Path smoothing

Smooth differential agent

  • Handle smooth differential drive agent. Maybe just use small speeds?

Observations

  • SLAM is not as transparent as first half due to matrix gymnastics
  • Landmarks and obstacles are not the same
    • Here corners are landmarks and stored in slam state
    • Lines are obstacles, endpoints stored only for planning
  • Use time elapsed for robot to calculate dt for propagation, augment and update
  • Ignore measurements while moving, do it only while stationary? Moving slowly is fine
  • SLAM and planning can be developed independently
  • Policy
    • Initially no noise assumption, No more noise while staying stationary
    • 0 control -> doesn't add more drift
    • While true
      • Come to stop and measure
      • Find landmarks with good uncertainity (augment/update)
      • Find obstacles with good uncertainity
      • Plan a path
      • Small valued controls -> less noise, move very slowly (propogate)

Report and demos

  • RK4 vs Eular stability vs dt graph
  • Estimating Sigma_m does it depend on distance?
  • Estimating Sigma_n does it depend on controls?
  • Estimating Sigma_m while stationary only if we are taking measurements while stationary
  • Check the command line compilation
  • Tune params

Optimizations

  • Use proper += -= implementations
  • Merge A * B^T operation as one
  • Don't create new memory for get block??

Future work

  • Circular obstacles