10/13 세상에 도전하기 105일차

10/13 세상에 도전하기 105일차

어느새 세상에 도전한 지 100일이 넘었다...!

10월 첫 1주 반은 열심히 시뮬레이션 세상에서 기어 가지고 놀았다.

랙앤피니언 애드인: 3일 / 기어 공부: 3일 / Fusion360 공부: 2일 / 키로 전체 모델링: 3일 이렇게 1.5주를 쓴 것 같다.

랙앤피니언 애드인 준비한 것이 살짝 오바였나 싶다가도 그래도 알찬 시간이었다. 순수 2.5일 정도 소요됐는데 키로에 필수적이진 않았다. 그래도 이걸 준비할 때의 생각은 이런 3D 모델링을 코드로 지금쯤 한번은 다뤄봐야 생각이 넓어지고 좀 더 올바른 의사결정을 할 수 있을 것이란 생각이었고 이건 아직도 유효하다. 지금 2.5일 투자하길 잘했다.

기어 공부에도 한 3일 정도 과하게 깊게 들어간 느낌이 없잖아 있다. 기어 그냥 생긴 거 받아들이고 하란 대로만 모델링했어도 되긴 한데 찝찝한 느낌이 들기도 하고, 이번에 공부 안하면 앞으로도 공부 안하고 받아들이면서 넘어갈 것 같아서 제대로 공부를 했다. 3일 투자한 덕분에 현재 기어의 형상, 현재 형상을 가질 수 밖에 없는 이유, 기어의 원리 등을 아주 제대로 이해했다. 시모랑 카공할 때 이 얘기 잠깐 해줬더니 시모도 여기에 꽂혀서 수학적 원리에 대해 한 2-3시간 수다 떠들었다.

이렇게 기어 공부하고 랙앤피니언 애드인으로 내가 GUI로 모델링하던 것들도 다 코드로도 써보고 파라미터 몇개로 전체 컨트롤도 해보고 하니 확실히 마음이 개운하다. 흠 다시 생각해보니 둘 다 지금 하길 정말 잘했다는 생각이 든다. 나중에 절대 안했을 거다. 그리고 지금 안했으면 한 달 이내로 이거 제대로 이해 못하고 만든 벌 어케든 받아서 지금 투자한 시간 이상을 썼을 지도 모른다. 제대로 이해하고 나니 관련 문제가 생겨도 바로 해결할 자신이 있다.

아 그리고 키로 전체 모델링도 과연 필요할까라는 의구심이 살짝 있긴 했는데 지금 모델링도 다 하고 조립도 해보니 지금 전체 모델링하길 정말 잘했다. 전체 모델링을 해두니 조립이 너무 편하다. 부품별로만 수치화해두고 부품 조립에서 위치나 그런 건 대략적으로만 정해두니까 조립할 때 생각보다 꼬이는 일이 좀 있었는데 미리 가상환경에서 훨씬 빠르게 꼬여서 다 해결하고 오프라인으로 가니까 아주 일사천리다. 그냥 정해진 대로 쭈욱 하면 된다.

랙앤피니언 애드인 만들면서 키로 전체 모델링하면서 내가 Fusion360을 제대로 못 쓰고 있고 (이건 이미 알고 있긴 했지만) 지금 이 부채를 갚아야 할 때라는 확신이 들었다. 여러 강의들을 3배속으로 우다다다 봤다. 덕분에 이전에 써보지 못했던 수많은 기능들에 익숙해지고 잘못 쓰고 있던 기능들 다 제대로 쓰게 됐다. 이제 Fusion360의 철학을 조금씩 이해하고 있달까...! 제일 중요한 개념들은 Parameter, Joint, Motion Link, Inspect (Interference, Section Analysis, Center of Mass), Constraint, Feature이다. Parameter, Constraint를 제대로 이해한 것이 아주 주효했다. 이거 2개가 있음으로써 이 3D 모델링이 노가다가 아닌 엔지니어링처럼 느껴지게 되었다. 그 이후에 component를 결합하는 joint, joint를 움직이는 motion link (나는 일반 단단한 결합 rigid, 모터 회전을 위한 revolute, vpressarm 앞뒤 이동을 위한 slider 3개를 썼다.), 코드를 관리하는 것과 같은 feature 타임라인 관리, 마지막으로 내가 잘 만들었는지 확인하기 위한 inspect까지. 다시 생각해봐도 참 1.5주 동안 많이 공부하고 실습하며 체화했다.

feature 타임라인 관리를 유튜브에서 보고 아! 하며 무릎을 탁 쳤다. 맨날 a += 5 해놓고 나중에 크기 안 맞으면 a -= 3, a += 1, a -= 0.5 이러면서 라인 하나씩 추가했는데 그냥 a += 5를 a += 2.5로 바꾸면 되는거였다. 이렇게 하니까 추후에 수정하기도 훨씬 쉽고 모델링 관리도 백만배 쉬워졌다. 이 타임라인 통해서 워닝이나 에러 나도 훨씬 쉽게 해결할 수 있게 됐다.

v1.2의 시작은 넘긴 페이지를 책등 부분까지 잘 보이게 쭉 펴자였는데 어쩌다 보니 기어 공부도 하고 랙앤피니언 애드인도 만들고 키로 전체 모델링도 했다. 3개 다 하면서 100%의 확신은 없었는데 다 지나고 보니 하길 잘했고 정말 알찼다. 많이 배우는 시간이었다.

하지만 이러니저러니해도 나의 목표는 키로다. 하루빨리 더 고급 버전 키로를 고객님들께 인도해드려야 한다.

오늘부터 조립 및 제어 시작하고 있는데 확실히 시뮬레이션 영향 및 익숙해짐 및 대충 어케 할지 머릿 속에 있음 등등 이슈로 하드웨어 다루는 속도가 빨라졌다.

지금 2가지 이슈는 앞뒤로 움직일 때 뒷바퀴 들리는 점과 집게발로 책을 누를 때 몸체가 들린다는 점이다. 유사한 문제라 한번에 수정할 수 있을 것 같다.

V-cradle은 조립 다 했고 모터랑 코어암하우징(리프트암, 턴암), vcradle암하우징(프레스암, 홀드암)도 다 프린트해두었고 모터 설정도 다 해두어서 조립은 금방 한다.

내일 위 문제 모델링하고 다시 프린트하고 조립하고 최종 제어까지 다 끝내보자! 거의 다 왔다!

오늘 KC인증, 제어보드, 파워에 대해서도 좀 조사했다. KC인증 검사 비용이 생각보다 꽤 나와서 제어보드랑 파워에 대한 조사가 필요했다. 제어보드로는 블루투스 모듈이 없고 Wifi 모듈만 있는 보드여야 했고, 파워는 1개만 써야 했다. 한 3시간 조사하고 KTC랑 전화해보고 이래저래 알아봤는데 결론은 제어보드는 라즈베리파이 3 B+ 그대로 쓰고 파워는 5V/2A 안 쓰고 5V/6A에서 DC5525 -> DC5521 2개 나오는 전원 분배 케이블에 5521 to microUSB 케이블로 파이에 파워 주고 다른 하나에 5521 to 터미널블록으로 모터에 파워주는 방식이다. 이론상 이렇게 하면 다 완벽하게 될 것 같은데 수요일에 부품들 오면 조립해봐야 알 것 같다. 라즈베리파이 3 B+ 그대로 쓰는 이유는 KC인증받을 때 KC인증받은 제어보드를 그대로 쓰면 무선통신 검사는 따로 안하고 전자파 검사만 한다. 이 때 인증받은 제어보드라 함은 KC 필증, 무선, 무선 EMC 성적서 3개가 있는 제어보드여야 한다. 대체로 국내에서 파는 제어보드는 이런 제어보드가 없다. 연구용, 개발용 제어보드는 KC인증이 필요 없고 완제품에만 KC인증이 필요해서 그렇다. 결국 이래저래 고민하고 KTC 이야기도 들어보다가 BT 모듈 빠져 있어서 아끼는 검사비보다 무선통신 검사비가 훨씬 더 커서 라즈베리파이 3 B+ 그대로 쓰기로 했다. 예전부터 제어보드가 워낙 비싸서 더 싸게 하려고 조사도 했었다. 지금이 세번째였는데 오늘 부로 올해 안으로는 무조건 쭉 라즈베리파이 3 B+로 가는 것으로 땅땅! 결론지었다. 나중에 원가 낮출 일 있으면 PCB해서 직접 불필요한 거 다 빼고 Kiro 최적화 제어보드 하나 중국에 맡기고 이걸로 다시 KC인증 받는 방향으로 해야 할 듯 싶다. 파워도 이번이 세번째 조사였는데 그래도 이번에 좀 꽤나 만족스러운 답을 찾아서 기분이 좋다. 수요일에 잘 동작했으면 좋겠다! 선 깔끔하게 하나만 딱 꽂으면 된다.

저번 주말에는 살짝 쉬는 겸 나중을 대비할 겸 시뮬레이션, 물리를 2가지를 공부했다. 물리엔진을 어떤 식으로 만드는지 살짝 공부했는데 아주아주 재밌다. 시간 관리, 동역학, 충돌 검출, 제약/접촉 해석, 마찰/반발, 근사, 최적화 등 겉핥기했는데 나는 이런 거에 왜 이렇게 끌리나 모르겠다. 고등학교 때 어떤 특교 시간 때랑 R&E할 때 런지쿠타 근사 막 이런거 배웠었는데 이런 거 쓴다고 한다. 지금 세상에 있는 다양한 시뮬레이션 엔진들 비교랑 시뮬레이션 기초들 쭉 살펴보고 종이 모델링 한번 해볼라다가 종이는 참 어렵구나 깨달았다. 겸사겸사 물리 엔진할 겸 종이 모델링할 겸 이 쪽 물리도 공부를 해봤다. 키르히호프-플레이트 이론 예전부터 키로할 때 이름만 알고 있었는데 대략적으로 살펴봤다. 얇은 판이라는 가정 하에 두께 축으로 안 밀리고 길이도 안 변하는 이런 몇 가지를 가정한 상태에서 세운 이론이었다. 하지만 이 이론도 벤딩만 다루는 느낌이라 종이가 구부려진 상황에서 힘이 없어지면 펴지는 것까진 시뮬레이션되는데 종이가 한번 구겨진 것이나 접힘이나 이런 것들은 아예 모델링할 수가 없는 이론이었다. 현존하는 시뮬레이션 엔진들 중 얇은판 특화 엔진이 없어서 정말 나중엔 직접 만들 생각도 살짝은 해봤다. 이런 이론이 있고 이론을 코딩으로 구현하기 위해 대략적인 가정들과 근사를 하고 또 연산량을 줄이기 위해 성능을 크게 포기하지 않으면서 속도를 10배, 100배 높이는 수많은 근사 방식들까지. 이 시뮬레이션 쪽은 참 흥미로운 분야다. 현실을 온라인으로 옮길 수 있다는 것이 얼마나 매력적인가!

0:00
/0:05

9/30에 비디오 생성 모델로 책 넘기는 걸 만들었는데 비디오로 이 실제 물리 세상을 아주 제대로 반영하기는 꽤나 남았다. 뭐가 더 빠를지는 잘 모르겠다. 비디오로 책이 구겨지고 말리고 펴지는 것이 완벽하게 현실과 똑같이 생성되는 것이 빠를지, 이런 현상들을 물리적으로 싹 다 이론화할 수 있을지.

지금보다 훨씬 더 고도화된 시뮬레이션이 로봇의 미래일 것이라 생각했는데 이렇게 생각하니까 진짜 사람들이 왜 시뮬레이션 안하고 월드 모델 연구 열심히 하는지 좀 더 공감갈 것 같기도 하다.

예전에 준오가 배터리 관련 시뮬레이션을 하려면 한번 O(N^3) 연산을 해서 슈뢰딩거 방정식을 풀면 1ps가 흐른다는 이야기를 해준 적이 있다. 원자, 분자 단위 시뮬레이션을 하면 말도 안 되게 느리고, 강체 레벨에서 시뮬레이션하면 현실과의 차이가 너무 크다. 비디오 게임에선 이걸 타협하기 위해 정말 모든 것을 시뮬레이션하는 것이 아니라 알고리즘으로 대략 이렇게 행동하면 이런 식으로 환경이 바뀌어야 해 이렇게 코딩해둔다. 정말 가상환경에서의 인터랙션만으로 되는 것은 아니다. 환경이 자연스럽게 움직이고 사람이 자연스럽게 움직이는 건 쉽다. (물론 어렵다.) 정말 현실처럼 인터랙션이 작용하는 게 어렵다.

이렇게 생각하니까 시뮬레이션이 미래가 아닌 것 같기도... NVIDIA Omniverse가 아닌 것 같기도...

오늘의 생각 정리는 여기까지!

내일 또 하루 열심히 달려보자! 아자아자!

11월에 생산만 해도 되도록 10월에 다 끝내보자! 행정적인 것도, 제품 퀄리티도, UX도!