λκ΅°κ° νμ¬ μνμ λν΄ λ Όνν μ μμ΅λκΉ? νμ¬ μ½λλ₯Ό μ΄ν΄λ³Ό μκ°μ΄ μμ§λ§ λ³νμ κ²ν νκ² λμ΄ κΈ°μ©λλ€.
@LorenzMeier PR # 208μ μ°Έμ‘°νμμμ€.
@LorenzMeier μ€μ λ‘ μ΄κ²μ μ°λ¦¬κ° μ¬μ©νλ νμ¬ κ·μΉμ λλ€.
본체 κ³ μ NED β ROS ENU: (xyz)β(x -y -z) λλ (wxyz)β(x -y -zw)
λ‘컬 NED β ROS ENU: (xyz)β(yx -z) λλ (wxyz)β(yx -zw)
μ΄ λνμ μ νμ±μ νμΈν μλ μμ§λ§ μ΄κ²μ΄ μ°λ¦¬κ° μ§κΈ νκ³ μλ μΌμ΄λΌκ³ μκ°ν©λλ€.
λ€, μ κ³νμ λλ€. νμΈν μ μκ³ , λ Όλ¬Έμ μ¬μ©νμ¬ μ€λͺ νμ΅λλ€.
μ°Έκ³ : μ΄ λ³νμ λͺ λ¬ μ μ λμν κ²μ΄λ©° Rvizμμ νμΈν μ μμμ΅λλ€.
λ¬Έμ λ μ€μ λ³νμ΄ μλλΌ νΉμ λ³νμ΄ μ¬μ©λ λμ λλ€.
λλ μ΄κ²μλ³΄κ³ μλ€ :
http://wiki.ros.org/geometry/CoordinateFrameConventions λ°
http://www.ros.org/reps/rep-0103.html
κ·Έλν½μλ μ¬λ¬ κ°μ§ λ¬Έμ κ° μμ΅λλ€(κ·Έλ¦¬κ³ λ°©ν₯μ λνλ΄λ κ²½μ° μ½λ).
κ²°κ³Όμ μΌλ‘ μ λ‘ νμ μμ λ°λ νλ μκ³Ό μλ νλ μ κ°μ μ°¨μ΄κ° μμΌλ©° NEDμ ENU κ°μ λ³νμ κΈλ‘λ²/λ‘컬 μ°Έμ‘°λ₯Ό μ¬μ©νμ¬ λ νλ μ λͺ¨λμμ λμΌν©λλ€.
@LorenzMeier κ° λ§ν κ²μ λλΆλΆ λμν©λλ€. κ·Έλ¬λ λ΄κ° ν¬κ² νλ¦¬μ§ μλ ν μμ κ·Έλν½μμ μ€λ₯Έμͺ½ νλ¨μ μ μΈν λͺ¨λ μ’ν νλ μμ μΌμ μ’νκ³μ λλ€. κ·Έλν½ λ²λ‘μμ x λ° y μΆμ λ μ΄λΈμ μλͺ» μ§μ νμ μ μμ΅λκΉ?
κ·Έ μΈμλ Fron ENUλ₯Ό NEDλ‘ λ³ννλ κ²μ΄ κ·ΈλΌμ΄λ νλ μμ΄λ λ°λ νλ μμ΄λ λμΌνλ€λ λ° λμν©λλ€. λ°λ νλ μμμ ENU λλ NEDλΌλ μ΄λ¦μ κ·Έλ€μ§ μλ―Έκ° μμ§λ§ μ¬μ ν ROSμμ μ¬μ©λλ μ’ν νλ μμμ FCUλ‘ λ³ννλ κ²μ νμ λμΌν΄μΌ νλ€κ³ μκ°ν©λλ€.
@mhkabir κ° μμ κ²μν λ³ν λ°©λ²μ μμ§ νμΈνμ§ μμμ΅λλ€. μνμ νκΈ° μ μ λ¨Όμ κ·Έλν½μ λ°λ‘ μ‘μμΌ νλ€κ³ μκ°νμΈμ.
@thedinuka λΉμ μ΄ μκ°νλ λ°μ λ°λΌ κ·Έλ¦Όνμ΄λ 무μμΈκ°μμ μλ‘μ΄ κ²μ
λλ μλ³Έ νμΌμ κ°μ§κ³ μκ³ κ·Έκ²μ λ³κ²½ν μ μκ³ μ νμΌμ λ³΄λΌ μ μμ΅λλ€(νμΈνΈ @mhkabirλ₯Ό μ¬μ©ν νμκ° μμ). μ€λ₯Έμκ³Ό μΌμμ κ΄ν κ²μ λ§λ κ² κ°μ΅λλ€. κ·Έλ¬λ λλ μ¬μ ν λ κ°μ λ€λ₯Έ μ νμ κ°λ κ²μ λν΄ μꡬμ¬μ΄ μμΌλ©°, κ·Έ λΉμ κ·Έ μ΄λ―Έμ§λ₯Ό λ§λ€μμ λ λλ κ°μ§κ³ μμμ΅λλ€. κ·Έλμ μλ§λ μ½λλ₯Ό νμΈν΄μΌ ν κ²μ λλ€. μ κ° κΈ°μ΅νλ λ°μ λ°λ₯΄λ©΄ λλΆλΆμ ꡬνμ μμ λ³νμ μ¬μ©ν©λλ€.
@TSC21λ μ΄ μμ ν κ·Έλν½ λ²μ μ κΈ°λ€λ¦¬λ©΄μ μκ°μ μ’ λ
1) λͺΈμ²΄ κ³ μ νλ μμ ROS κ·μ½μμ λͺΈμ²΄ κ³ μ νλ μμ Pixhawk κ·μ½μΌλ‘μ λ³ν.
2) μ§κ΅¬ κ³ μ νλ μμ ROS κ·μ½μμ μ§κ΅¬ κ³ μ νλ μμ ν½μ€νΈν¬ κ·μ½μΌλ‘ λ³νν©λλ€.
ROS μΈ‘κ³Ό Pixhawk μΈ‘ λͺ¨λμ 본체 κ³ μ μ’νκ³μ μ¬μ©λ κ·μΉμ λν λ¬Έμκ° μμ§λ§ κ΄μ±(λλ μ§κ΅¬ κ³ μ ) μ’νκ³μ λν΄ Pixhawk μΈ‘μμ μ¬μ©λλ κ·μΉμ λν νΉμ μ 보λ₯Ό μ°Ύμ μ μμ΅λλ€. μΆμΈ‘μ ν΄μΌ νλ€λ©΄ Pixhawk μΈ‘μμ GPSκ° μλ κ²½μ° μ§κ΅¬ κ³ μ μ’ν νλ μμ΄ λ³Έμ²΄ κ³ μ νλ μμ μ΄κΈ° λ°©ν₯κ³Ό μ λ ¬λμ§λ§ μ΄κ²μ΄ κ·Έ κ²½μ° λ€. κ·Έλμ μ€μμ νΌλμ λ°©μ§νκΈ° μν΄ μ§κΈμ 본체 κ³ μ νλ μλ§ κ³ λ €νκ² μ΅λλ€.
ROSμ λν λ¬Έμ [1]κ³Ό Pixhawkμ λν [2] λ¬Έμλ₯Ό μ€κ³νμ¬ λ€μ λ€μ΄μ΄κ·Έλ¨μ λ§λ€μμ΅λλ€.
μμ (1)κ³Ό (2)μ λν μ’ν νλ μ λ€μ΄μ΄κ·Έλ¨μ νμΈνκ³ νμΈνκ³ λμνλ©΄ mavros μΈ‘μμ μ€μ λ³νμ μννλ μνμ΄ λ§€μ° κ°λ¨ν©λλ€.
[1] http://www.ros.org/reps/rep-0103.html
[2] https://pixhawk.org/dev/know-how/frames_of_reference
#148(곡λ³μ° λ³ν)λ μ°Έμ‘°νμμμ€.
μ΄κ²μ ros-infrastructure/rep#95μ λμμ΄ λ μ μμ΅λλ€.
μ°λ¦¬λ μ΄κ²μΌλ‘ μ΄λκ°μ λμ°© νμ΅λκΉ? ENU/NED, body/world νλ μμ νμ¬ λ³νμ΄ μ νν©λκΉ? μ°λ¦¬κ° μλͺ»λ μΌμ νκ³ μκΈ° λλ¬Έμ λΉμ λ°μ΄ν°λ₯Ό λ³΄λΌ λ @blackcoder κ° FCUμμ μ νμ μ μ»μ κ°λ₯μ±μ λ°λ³΅ν΄μΌ νλ μ΄μ λ₯Ό λ¬»κ³ μμ΅λλ€.
@vooon , @mhkabir , @tonybaltovski , @thedinuka ping!
@thedinuka μ κ° λ³΄κΈ°μ μ’μ΅λλ€.
μΆμΈ‘μ ν΄μΌ νλ€λ©΄ Pixhawk μΈ‘μμ > GPSκ° μλ κ²½μ° Earth Fixed μ’ν νλ μμ΄ > body-fixed νλ μμ μ΄κΈ° λ°©ν₯κ³Ό μ λ ¬λλ€κ³ λ§νκ³ μΆμ΅λλ€.
μ¬μ€ GPSκ° νμνμ§ μμ΅λλ€. μ°λ¦¬λ μ΄λ―Έ 맀거μ§μμ μ μ μ μ°Έμ‘°λ₯Ό κ°μ§κ³ μμ΅λλ€. μ΄κ²μ μ΄ μμ μν΄ νμ λ EF νλ μμ μλ―Έν΄μΌ ν©λλ€.
μλ
νμΈμ,
μ£Όμ λ₯Ό mocap_optitrackμμ mavrosμ vision_pose/poseλ‘ λ€μ 맀νν©λλ€. κ·Έλ¬λ mavλ μ¬λ°λ₯΄κ² λΉνν μ μμΌλ―λ‘ λ€μ μ½λλ₯Ό λ³κ²½ν©λλ€.
vision_position_estimate(stamp.toNSec() / 1000,
position.y(), position.x(), -position.z(),
λ‘€, -νΌμΉ, -μ); // ??? νμΈν΄μ£Όμμμ€!
μκ²
vision_position_estimate(stamp.toNSec() / 1000,
position.y(), position.x(), -position.z(),
λ‘€, -νΌμΉ, -μ + 1.57);
μ¦ -yawλ₯Ό -yaw + 1.57λ‘ λ³κ²½ν©λλ€.
ENUμμ NEDλ‘ μ 체 νλ μμ λ³νν λ mavrosλ μ΄μ λ€μμ μ¬μ©ν©λλ€.
(xyz)-->(x,-y,-z)
(w,x,y,z)-->(x,-y,-z,w), κ·Έλμ μ°λ¦¬λ
ENU ---> NED
λ‘€ ---->λ‘€
νΌμΉ -->-νΌμΉ
μ-->-μ.
κ·Έλ¬λ λλ μ°λ¦¬κ° μ(yaw)κ° μλ νλ μμ xμΆμ κΈ°λ°μΌλ‘ νκ³ (본체 νλ μμ xκ° μλ νλ μμ xμ ν¨κ» μμ λ, μλ 0μΈ) 90λ νμ μ κ°μ§κ³ μλ€κ³ μ°©κ°νλ€κ³ μκ°ν©λλ€. κ·Έλμ μ°λ¦¬λ -yaw + 1.57μ λ§λ€μ΄μΌ ν©λλ€. μ¦
ENU ---> NED
λ‘€ ---->λ‘€
νΌμΉ -->-νΌμΉ
μ ----->-μ+1.57.
λ΄κ° λ³κ²½ ν ν mavλ μ¬λ°λ₯΄κ² λΉν ν μ μμ΅λλ€. κ·Έλμ λ€λ₯Έ νλ¬κ·ΈμΈλ μ΄μ λΉμ·νλ€κ³ μκ°ν©λλ€.
@congleeta ν©λ²μ μΈ κ² κ°μ΅λλ€. λμΌν λ³νμ μ€μ μ νλ¬κ·ΈμΈμ μ μ©νκ³ κ²°κ³Όλ₯Ό λ³Ό μ μμ΅λκΉ? λν local_position
μ£Όμ μμ μ€λ λ°μ΄ν°λ λμΌν λ³νμ μ μ©νμ§ μκ³ μ¬λ°λ₯Έ λ°©ν₯μΌλ‘ μ 곡λ©λκΉ?
#148(곡λ³μ° λ³ν)λ μ°Έμ‘°νμμμ€.
μ°λ¦¬λ λν μ΄κ²μ κ³ λ €ν΄μΌ ν©λλ€.
PR #317 λ³κ²½ λ³ν.
λλ μ΄ λνλ₯Ό ν μ€νΈνλ€
NED(Pixhawk)->ENU(ROS)
(X,Y,Z)->(X,-Y,-Z)
ENU(ROS)->NED(Pixhawk)
(X,Y,Z)->(X,-Y,-Z)
κ·Έκ²μ rvizμ μ€μ νλ§ λͺ¨λμμ μ μλν©λλ€.
@supermice #317 νμΈν΄μ£Όμ μ κ°μ¬ν©λλ€! :)
κ°μ₯ μ μ©ν λκΈ
λλ μ΄κ²μλ³΄κ³ μλ€ :
http://wiki.ros.org/geometry/CoordinateFrameConventions λ°
http://www.ros.org/reps/rep-0103.html
κ·Έλν½μλ μ¬λ¬ κ°μ§ λ¬Έμ κ° μμ΅λλ€(κ·Έλ¦¬κ³ λ°©ν₯μ λνλ΄λ κ²½μ° μ½λ).
κ²°κ³Όμ μΌλ‘ μ λ‘ νμ μμ λ°λ νλ μκ³Ό μλ νλ μ κ°μ μ°¨μ΄κ° μμΌλ©° NEDμ ENU κ°μ λ³νμ κΈλ‘λ²/λ‘컬 μ°Έμ‘°λ₯Ό μ¬μ©νμ¬ λ νλ μ λͺ¨λμμ λμΌν©λλ€.