2026년 3월 2일 월요일

SLAM Study (결국 이 짓까지 하는구나 ㅋㅋㅋ)

 

전문 SLAM 엔지니어와 경쟁하면 박살이 날거라 무관심이지만, 로보틱스 역량 강화를 위해서 SLAM 에 대한 이해가 필요하다.

문제는 SLAM 이 생초보에게는 접근해서 이해하기에 진입장벽이 꽤 있다는 점이다. (나는 그렇게 생각함)

Localization 이나 mapping,  단골 손님인 칼만 필터 같은 개별적인 건 그냥저냥 이해를 하겠는데,  이게 합쳐진 전체 SLAM 시스템 측면에서 이해할려고 하면 독학이 매우 쉽지 않는 것 같다.


개인적으로 대충~~~  아는 것은  아는게 아니라고 생각한다.  일정 수준이 될려면 이론 + 경험 or 직접 시스템을 구현할 수 있는 역량을 갖고 있어야  하지 않을까 싶다. (이정도면 결국 전문가 부근의 어느 선에 근접한 것 같은데 ;;)   SLAM 이 특히 이 부분에서 어려운 점이 많은 것 같다.  결국 어떤 식으로든 (시뮬이던 뭐든) SW 로 구현까지 해봐야 하는데,  간단하지 않는 듯....     관련 지식을 끌어 모아서 이해하는 것도 쉬운 일이 아니고....

암튼 미래를 위해서라도 SLAM 을 일정 수준 끌어올리는 것이 올해의 목표이니, 목표 달성을 위해서 올해도 노력을~~~


밑바닥부터 시작하는 딥러닝  시리즈도 그렇고,  일본이   친절한(?),  파고드는 (?) 부분 등에서는 확실히 일본 특유의 강점이 있는 것 같다.   영어 이외의 전공 서적은 사본적이 없는데,  큰 맘 먹고 일본어 서적을 구매하는 날이 오다니....ㅠ.ㅠ

책 내용 전체를 본적은 없지만,  SLAM 내재화를 하는데  매우 핵심적인 역할을 해줄거라고 기대하면서  조금 고민을 하다가 질러버렸다...( 배송이 왜 이리 오래 걸리는 건지 ㅡㅡ;;;)

요즘은 AI 툴이 더 좋아졌으니, 일본어 서적 이해하는데 큰 어려움은 없을 것 같다. ( 시간은 금이므로,  AI 툴로 번역시켜서 읽을거야 ㅋㅋㅋ)

아직 책을 받아보지 못해서  최종 평가는 못하겠지만,  SLAM 입문자에게 매우 매우 도움이 될 책일 것이라 생각한다.  (이걸 디딤돌로 쓰고,  이해도가 쌓이면   유명 논문 등을 정복해나가야겠지만;;;)


SLAM入門 --ロボットの自己位置推定と地図構築の技術


우선 저자에게 감사 인사를....   귀중한 지식과 자료를 후학을 위해서 남겨두는 것은 칭찬 받아 마땅하다 ~~ㅎㅎㅎ

비고 : 저 책을 사야겠다고 마음 먹은 계기는  오픈소스 LittleSLAM (https://github.com/furo-org/LittleSLAM) 때문이긴 하다.  소스코드를 분석할려니 관련 서적을 보는게 가장 효율적일 듯...  진정한 SLAM 세계로 진입해서 추후에 잘 써먹을 수 있는 날이 올 것이라 기대하며 열심히 씹고 즐기고 맛볼것이다  (새로운 도메인에 진입 및 적응은 언제나 쉽지 않아..)

2024년 7월 21일 일요일

Julia + MuJoCo 기반으로 UR5e 제어 시뮬레이션 환경 구축~~

 

Julia 아마도 내 생애 마지막으로 배우는 프로그래밍 언어가 되지 않을까 싶다.  주력 언어의 마스터에 집중을 해야 하는데~~


인터프리터 언어이면서, C 만큼 빠르다고 하여  요즘  파파박  공부중인 Julia

  • 막코더 입장에서도 Julia 는 오묘하네~
  • OOP 랑은 좀 다른거 같고, C 같으면서도 상속 개념은 있고 ㅋㅋㅋ
  • 막코더도 요즘은 OOP 에 익숙해져가고 있는데,  Class 개념이 없으니  흠..흠...어색하네~~
  • 이게 요즘 최신형 언어 스톼일인가...  여러 언어를 접한 경험이 Julia 이해에 도움이 되기도 하고, 방해가 되기도 하고 ㅋㅋ
과연 Julia 가 내 주력 (최소한 프로토타이핑용) 언어가 될 수 있을것인가,  내 판단이 틀리지 않아야 하는데~~


Julia 용 MuJoCo.jl  이 있길래 이걸 기반으로 MuJoCo 의 simulate.cc  기능에서 필요한 부분만 Julia 로 재구성 중~~
  • Julia 초짜로 이짓을 하고 있다 보니,  중간 중간  괜한 짓을 했나라는 생각도 들고, 포기하고 싶어지는 순간이 오기도 하고~~
  • C/C++ 이나 파이썬은 MuJoCo 에서 공식 지원을 하고 있는데,  Julia 초짜로  괜히 고생을 사서 하는 느낌이 드는데...
  • MuJoCo.jl  이 있어서  그나마  꾸역꾸역 할 수 있네... MuJoCo.jl  만세~~~  계속 업데이트 해주길~~

아~ 힘들었다.   Julia 초짜로  막 코딩하면서   simulate.cc  의   화면 조작과  select point 까지는 어찌저찌  구현이 되었네....
  • 막혀서 포기하고 싶었지만, 여기까지 온 나에게 칭찬을...정신승리로다~
  • 이게 Julia 코딩 스타일이 맞나 ㅋㅋㅋ   Julia 공부하면서 조금씩 개선해나가야겠다~
  • 물리 연산 부분은 별로 스레드로 분리를 해야 하는데,,,  도전~~~!!!!

이제부터 시작인데,  힘들어서  천천히 해야겠다.   Julia 실력을 더 키워야 하는데,,  Julia 비기너에게  C 언어를 넘나들어야 하는 상태는 헬 난이도긴 하네~~

이제 제어 로직을 장착을 시키면서  공부 겸  여러가지를
해봐야 하는데 ~~~여기부터가 관건이네~~


< 삽질의 결정체...   Julia 부디 내 노력과 정성의 빛을 볼 수 있기를~~ >






2024년 4월 7일 일요일

로봇팔 강화학습(DRL) (mujoco) github study

 

아래 github 코드를 스터디해보자~~

https://github.com/PaulDanielML/MuJoCo_RL_UR5

2024년 1월 28일 일요일

[낙서장][강화학습] A3C : Pytorch 로 왜 안되지 ㅋㅋㅋ


 

예전엔 tensorflow 가 좋아보였는데, 요즘은 왠지 pytorch 가 대세가 된 것 같아보임.

tensorflow 도 맛보기정도만 했지만, pytorch 를 배워보자~~~


tensorflow 로 된 A3C 예제를 pytorch 로 바꿔봤는데   학습이 안되네 ㅋㅋㅋ

멀티 프로세스 관련해서 뭔가가 잘못한 거 같은데~~


pytorch 와 강화학습 공부 삼매경~~  이번엔  강화학습으로 자율제어까지 끝을 봐보는 걸 목표로~~



2023년 5월 16일 화요일

ROS 2 모바일로봇 첫걸음은 역시 쇼미 더 머니~~~내 돈 ㅠ.ㅠ

ROS2 여전히 애매한 초보자에게는  모바일 로봇용 패키지를 어떻게 사용해야 할지 잘 모르겠더라~~~

런닝커브를 빠르게 뛰어넘을 필요가 있어서,  어쩔수 없이 (전략적으로)  머니를 써서 초기 단계를 뛰어넘기로 했다!!

  - 쓸만한 텍스트북이 없으니, 유료 강의를 찾게되었음..
  - 마침 강의가 할인을 하고 있었던게 지름신이 강림하게한 큰 동기부여였을 것 같네

그러하여,  리뷰 평을 살짝 훑어보고  선택을 하게된 건 바로 이 강의 (Udemy)

ROS2 Nav2 [Navigation 2 Stack] - with SLAM and Navigation


결론적으로 평하자면,  강의 결제에 사용한 돈이 아깝지 않았도다~~~

드디어 모바일 로봇을 ROS2 로 개발할 환경을 갖출 지식을 확보했다는 점에서  내 머니는 가치있게 소모되었다...

  - 강의 뒷부분은 살짝 지루했지만,  한두번 정도 더 볼 예정~~


큰 마음먹고 ROS2를 소스빌드로 WSL2에서 구동되도록 환경을 구축해놨다. (Microsoft 만세~~~  윈도우에서  우분투 되게 해줘서 고마워~~~)

모바일 로봇쪽 패키지의 소스코드를 분석하거나, 직접 알고리즘을 구현해보는 등의 셀프 스터디를 이제 시작할 준비가 완료되었다.....   이제부터가 진정한 시작이군....To be continued~~~




2023년 3월 4일 토요일

ICP (Iterative Closest Point)

 

Ref. 

 _01. https://nbviewer.org/github/niosus/notebooks/blob/master/icp.ipynb


위의 노트북에는 그림이 일부 안보이길래 보충..

ICP 의 자세한 내용은 위의 링크나 다른 곳에 잘 설명 혹은 자료가 많은 것 같다.


자율 주행(?)/SLAM 에  ICP  알고리즘이 나와서 Study~~~中

 - 오픈소스와 유용한 자료 기여자분들께  감사~~~~


※ 진입장벽이 힘들지만, 시간이 지나면 괜찮아질거라 믿는다 !!!

※ 아직 Study 중이라, 오류가 있을수도 있다... 그럴쑤 있어~~~암~~

※ 기술 블로그도 시간과 노~~오~~력,  정~~성이  필요한 것 같다.  내멋대로 작성하는 느낌인데  이것도  어쩔 수 없오~~~   훌륭한 블로거는  다른 분들에게  양보하겠다!!!




                                         < 그림 1. example data >

 

그림 1은 ICP 설명을 위한 data 이다.

 - Q 는 true data set, P 는 Q 에 회전 및 병진을 가한 data set


ICP 는 회전과 병진을 찾는 알고리즘인 것 같은데..... (아직  study 중...)

 - P = Rot * Q + translation


자,  ICP 를 공부하기 위한 샘플 데이터는 준비되었다...


ICP 에는  데이터의 무게중심(?)을 구하는 과정이 있다.

 - 무게중심은 평균인 것 같은데...

 - 회전을 찾기 용이하기 위해서 P 와 Q 를 origin 으로 이동시키는 역할로 보임...

 - 그림 2는 무게중심을 제외한 전처리 후의 그래프이다.

 - 느낌상, bias 를 제거하는 것 뉘앙스의 전처리와 유사해 보임




< 그림 2. 무게중심 offset 을 제거하여 origin 으로 이동한 그래프 >


ICP 의 기본로직은 알고리즘 이름에도 표현되어 있듯이 Closest 포인트를 찾아서 반복하는 것이다.

 - 어떤 유투브에서는 Data Association 으로 표현하기도 하던데, P와 Q 의 correspondence 를 찾는 과정이다.

 - 간단하다, 이중 for 문을 돌면서, P와 각 요소와 Q의 각 요소의 Euclidean distance 를 비교하여 가장 가까운 포인트들을 C = { i, j } 쌍으로 저장함

  * 예제는 2차원이므로 Euclidean distance !!   코드는 결국 norm (P - Q) 형태 !!

 - 그림 3은 P 집합과 Q 집합의 corrspondence pair 를 회색 선으로 나타낸 그림



< 그림 3. P와 Q 의 correspondence >



SVD 를 이용하여 회전과 병진을 찾는다.

 - SVD 방식은 좀 더 자료등을 찾아봐서 이해가 필요한데..

 - P_correct = R_found * P + t_found

 - 그림 4는 P_correct 와 Q 의 그래프

 - 이전보다 P와 Q 가 정렬이 되긴 했다.




< 그림 4. 1번째 P 변환 후 결과 >



< 10회 iteration animation >












2022년 8월 28일 일요일

인터프리터 : 정보

 


관련 책 정보:
  - 만들면서 배우는 인터프리터
  - 컴파일러 만들기



인터프리터와 컴파일러에 대한 기본 정보 파악

실제로 코딩을 해보면서 동작 확인


추후 코드를 다듬어보면서, 활용할 부분이 있을지 고민 중....