for Robot Artificial Inteligence

Guitar Number of note

|

https://www.google.com/search?q=guitar+number+of+note&client=ms-android-samsung-ss&source=android-browser&prmd=ivmn&sxsrf=ALiCzsb56JMzFtQPsUjwWxcVNhxJQqZdZg:1659266519621&source=lnms&tbm=isch&sa=X&ved=2ahUKEwi0-vS7gaP5AhVMqFYBHco2DS8Q_AUoAXoECAIQAQ&biw=412&bih=678&dpr=3.5#imgrc=Iic25pt81OBaXM&lnspr=W10=

Comment  Read more

notion about differential and partial differential

|

https://velog.io/@swan9405/%ED%8E%B8%EB%AF%B8%EB%B6%84%EA%B3%BC-%EC%A0%84%EB%AF%B8%EB%B6%84

http://m.todayhumor.co.kr/view.php?table=science&no=3054

Comment  Read more

Introduction to Multi View Geometry(detail epipolar contraint)

|

Comment  Read more

Netvlad Image Recognition Reference and comparison between indirect and direct method

|

Netvlad

https://github.com/socome/NetVLAD-Example-on-Colab/blob/master/NetVLAD_manual.ipynb

https://blog.csdn.net/qq_34991048/article/details/98311346

https://github.com/QVPR/Patch-NetVLAD

https://blog.csdn.net/waittingforyou12/article/details/105787936

https://github.com/JustWon/NaverlabsVisualLocalizationChallenge

https://www.google.com/search?q=netvlad+descriptor&client=ms-android-samsung-ss&source=android-browser&sxsrf=ALiCzsb45kZGLNiztlgU6bZtlz8LYMJDIA%3A1656980272274&ei=MIPDYtunEN2MseMP1K-0gAI&oq=netvlad+desc&gs_lcp=ChNtb2JpbGUtZ3dzLXdpei1zZXJwEAEYATIFCCEQoAEyBQghEKABOgcIIxCwAxAnOgcIABBHELADOgQIIxAnOgUIABCABDoFCAAQywE6BAgAEB5KBAhBGABQ0wZYuSVgrSpoAnABeACAAeABiAGFCZIBBTAuMy4zmAEAoAEByAELwAEB&sclient=mobile-gws-wiz-serp#bsht=CgRmYnNtEgQIAxAA

Camparison between indirect and direct method

https://stackoverflow.com/questions/47465570/opencv-feature-matching-vs-optical-flow

Comment  Read more

Vision Algorithm Engineer로 자주 사용되는 Technique 및 경험(Keep Update)

|

자주 사용되는 테크닉들

Feature matching : feature extractor, KNN search matching.

Triangulation : Epipolar contraint to matching features

Motion Esitmation : Fundemantal matrix and essential matrix(Direct Method, using Epipolar contraint)

Elevation Mapping :

  • Sensor Measurement Variance Update : 참고(Elevation Mapping), Sensor Jacobian * Covariance matrix * Sensor Jacobian^T

  • 2D Vehicle에서의 kinematic Model Jacobian Matrix(Motion Update) :

    • Yaw 축을 고정한 Pith raw에 대한 Kinematic Model에 대한 Jacobian Matrix를 만들고 이를 Pose에 관한 Covariance Matrix로 Yaw축이 고정된 Covairance Matrix를 만듬.
    • Tangent pitch로 2D affirmation matrix에서의 x,y에 대한 값들을 고려할 수 있다.(z축 고정)
    • Yaw축 기준의 이전 covariance matrix와 현재 Covariance Matrix와 이전 robot pose과 현재 robot pose를 고려하여서 모션에 대한 Varaince를 구하여서 활용할 수 있다.
  // 오일러 각은 강체가 놓인 방향을 3차원 공간에 표시하기 위해 레온하르트 오일러가 도입한 세 개의 각도이다. 즉, 3차원 회전군 SO의 한 좌표계다. 3차원 공간에 놓인 강체의 방향은 오일러 각도를 사용하여 세 번의 회전을 통해 얻을 수 있다.
  kindr::EulerAnglesZyxPD eulerAngles(robotPose.getRotation()); // get eulerangle(오일러각)
  double tanOfPitch = tan(eulerAngles.pitch());
  // (A.5)
  Eigen::Matrix<double, 1, 3> yawJacobian(cos(eulerAngles.yaw()) * tanOfPitch, sin(eulerAngles.yaw()) * tanOfPitch, 1.0);
  Eigen::Matrix<double, 4, 6> jacobian;
  jacobian.setZero();
  jacobian.topLeftCorner(3, 3).setIdentity();
  jacobian.bottomRightCorner(1, 3) = yawJacobian;

Rigid Body - Kinematic Model - EulerAngle Releationship

  • Tagnet vector Curvature를 이용한 Feature Extraction(Lidar), Slope Estimation

  • Normal Vector 구하는 법 : cross product 혹은 Covariance Matrix

  • Ground Surface 구하는 법 : number of normal vector who satisfied threshold of difference between normal vector D and similirity threshold(innerproduct between normal vectors) over threshold of of connected normal

  • Tracking : Kalman Filter, Extended Kalman Filter, UKF, PSO, Particle Filter.

  • camera Pose optimization : Bundle Adjustment.

  • Outlier remove : RANSAC

  • Loop closure detection :
    • PGO(certain pose node is in range of past pose node, then loop closure) - node matching
    • BoW, scan context - descriptor matching
  • Least Square Problem(Convex optimization(cost function, object function)) : Gaussian Newton, LM Method etc.

  • 3D Matching Method : PnP, KD -tree
    • Pose and orientation Optimization :(NDT, ICP 방법이 있음)
  • NDT는 Probabilistic Density를 통해서 가장 높은 유사도를 가지고 있는 포인트들만 cost function으로 최적화.

  • Factor Graph과 Pose Graph의 차이점은 Factor Graph은 PDF를 사용하는 것이고, Pose Graph는 특정 range에 되었을때 Contraint들이 closed가 되어서 minimization을 하는 것이다.

  • Clustering : KD tree, K-means(it is used in machine learning a lot of times.)

  • 3D Pointcloud space complexity를 잘 화용하는 법 Octree map.

  • G2O : Graph based optimization (node - edge)
  • Ceres : least square 문제 해결

  • TTL : Collision rate(using Boundary box(Maximum-minum x,y,z estimate TTL))

  • SVM : affine image(calibration multi camera and image stitching)

  • DownSampling : Voxelization(means and covariance)

  • Line Detection : edge extraction + binary operation in certain roi

  • Exploration : Computer vision(edge Extraction + Binary Operation) or KD-TREE(Search cluster of unknown region)

  • Global Path Planning : RRT

  • Local Path Planning : (DWA + EB) or TEB

  • Object Detector = Yolo(backbenc(Resnet) + dataset(coco) + regression boundary

  • Semantic SLAM : moving consitenct check(epipolar contraint) + label. remove labeled dynamic and store it some specific labeled semantic information(extracted by feature extractor such as orb) in keyframe and store it in map database.

  • Multi Geometry View : TODO

  • Camera Lidar Calibration :ICP Calibration, Checkboard calibration
    • 주의할 것 : Calibration을 할때 Pointcloud들을 base_link 좌표에서 표현이 될수 있도록 PointCloud에 센서와 베이스링크의 Transformation을 대략적으로 구해야 된다.
    • 손으로 대략 구해진 Transformation Matrix를 inverse 해서 pointcloud에 적용한다(base link로 프로젝션)
    • 두 작업이 끝났으면, ICP Matching방법을 써서 카메라와 라이다간의 Tranformation Matrix를 구한다.
  • HTOP 에 보이는 것은 코어에 들어있는 Thread들 이다.

  • 거대한 배터리로 부터 여러 디바이스를 달때 전압이나 전하들을 고려해야된다.
    • 예를 들어 30V 배터리가 있고, 컴퓨터 12V, LTE 5V, 센서 9V.
      • 각 디바이스 마다 정격 입력(동자학가 위해서 필요한 전압과 전류)가 있다.
        • Volt는 댐과 같기 때문에 전압을 맞춰야만 전류가 흐르게 된다.
    • 위에 조건을 맞춰주기 위해서 switch power supply를 통해서 배터리로 부터 Postivie electrode, Negative electrode로 되어있는 연결 부분으로 부터 연결을 하고, 나머지 switch power supply(12V,5V,9V)의 전선들드 그곳에다 연결을 하게 된다.
    • 전압에 맞는 siwtch power supply에다가 나머지 디바이스를 연결해주면 끝이다.
  • 로봇 모터 제어에는 토크제어(전류 제어)와 속도제어(위치제어)가 있다.
  • DHCP는 랜으로 연결되는 어떤 것이든 자동으로 연결이 되는 것이다.
    • 인트라넷을 사용할 경우, 아이피를 뚤어줘야 한다.
      • 할당할 local computer에서 인식할 ip주소를 입력해주고, 인터넷으로 치면 나오는 디폴트 값임 라우터와 게이트웨이를 입력한다
      • 마지막으로 lan으로 부터 오는 인트라넷 ip를 설정해주면 끝~
  • 개인적으로 프로그래밍을 할 때 중요하다고 생각하는 개념 및 습관
    • Binary로 읽고, 쓰고 할 수 있는 능력
    • share_ptr, 포인터로 차원을 넓혀서 programming 할 수 있는 능력.(최대한 heap에다 올리기)
    • typedef과 이태까지 사용했던 함수들을 잘 정리하는 utils
    • 하나의 programming template을 가지고 개발하기
    • 기반 클래스, 파생 클래스에 같은 이름의 함수를 쓴다면, 기반 클래스에 virtual을 넣어주고 파생 클래스에는 override를 쎃어준다.
      • Note: virutal 기반 클래스에 소멸자 꼭 넣어줘야한다.
        • 기반클래스에 파생클래스 햇갈리지 않도록 pure viretual function도 사용하면 좋다.
    • class내에 this를 쓰는건, 클래스안에 함수나 변수들을 쓰는데 헷갈리지 않게 하려고 하는 것이다.
  • Jacobian 성질은 각 변수에 대한 벡터장을 구하여 변수간의 관계를 알게 해주는 목적에 있따
  • Hessian은 자코비안에대한 편미분 및 자코비안 제곱으로 인하여 변수값을 구할때 사용이 된다.(최적화 할때 많이 사용된다)
  • IMU에 대한 xyz axis는 z는 중력장, x,y는 linear acceration이다.
  • 로보틱스에서 intel을 많이 쓰는 이유
    • Intel processors are more powerful and speedier than ARM processors. ARM chips, on the other hand, are more mobile-friendly than Intel processors (in most cases). People who were adamant about one side or the other have been upset over the last few years.
    • kernel(비트) 체제가 다를 수 있기 때문에, 호환되는 프로그램이 arm이 적음
    • 운영체제 비트 차이에 대한 설명
  • USB bandwidth 혹은 bus power insufficient문제로 멀티카메라나 멀티 센서를 이용할때 센서가 불안정해지는 경우가 있다.
  • 이미지 리트리버를 잘 찾기 위해서는 object detection이랑 맞물려서 IoU와 BoW를 통한 이미지 리트리버가 도움이 많이 될 것 같다.
  • Compare 할때는 List를 써서 쉽게 할 수 있다.
  • 전압측정기에는 전압 측정과, 같은 적극끼리 확인하는 기능이 있는데, 같은 전극끼리 확인하는 기능을 쓰면 삐 소리가 난다. -.+를 조심해야하기 때문에 그렇다. 전극확인하는것을 쓴다.
  • USB 128걔까지 물릴 수 있다. 다만 대역폭(Gbps)이 있기 때문에 그 이상 넘어가면 유에스비 연결이 안된다.
  • Reflector intensity Super High

Comment  Read more