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일 일요일

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일 일요일

인터프리터 : 정보

 


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



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

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


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






2020년 10월 16일 금요일

[System Identification] 참고 자료

 


Ref.

1. https://github.com/kjyv/FloBaRoID



https://www.hindawi.com/journals/mpe/2015/879581/


http://ctms.engin.umich.edu/CTMS/index.php?aux=Activities_Pendulum



PySINDy: A Python package for the Sparse Identification of Nonlinear Dynamics from Data


Modeling and control of a rotary inverted pendulum using various methods, comparative assessment and result analysis


High Precision Control of Indirect Drive Systems Based on End-effector Sensor Information


Python for control purposes

Parameter Estimation and Model Based Control Design of Drive Train Systems