출처: https://blog.iroot.kr/341 [RootKR]
졸업작품으로 [스마트 모니터 암 - 가제] 를 만드는 중 입니다.
Ros나 Gazebo같은 훌륭한 오픈소스 소프트웨어가 있지만. 유니티가 그나마 다루어본 도메인이기 때문에 유니티를 베이스로 시작하게 되었습니다.
유니티는 실제 카메라와 얼굴로 머신러닝을 돌릴때 걸리는 시간을 단축하기 위한 디지털 트윈으로 사용하기로 했습니다.
팀내에서 제가 구현해야 하는 부분은
1. 로봇암과 똑같이 동작하는 디지털트윈 제작하기
2. Unity상의 ServoMotor의 angle(0~180)을 Output으로 뱉고 Input을 받아 다시 움직일 수 있어야 함
3. 카메라가 보고 있는 이미지를 Output으로 뱉을 수 있어야함(머신러닝에 사용)
정도 입니다.
1차 프로토가 완성됬고, 고칠점이 바로바로 너무 많아서 2차 프로토 제작중입니다.
1차 프로토입니다. 엉성하긴 하지만 주요 기능은 다들어가있습니다. 최종 발표자료를 제작하기 전까지는 로봇팔의 모델링이 들어가지는 않을 것 같구요. 각 구동계의 길이 비율과 얼굴의 크기정도만 맞추면 별 문제 없을 것이라고 생각하고 있습니다.
계층창이 무지 길기때문에, 다른 팀원이 알아보기 쉽게 이름과 계층구조를 좀더 깔끔하게 만들 예정입니다.
빨간 실린더가 서보의 역할로, 빨간실린더 아래의 오브젝트들이 슬라이더를 통해 함께 회전합니다.(중요!! 이때문에 병크를 터트림)
기존의 5번째 서보의 코드인데, transform.rotation을 조정하는 경우, 부모 오브젝트의 움직임을 무시하고, transform.rotation의 값이 정해지기에, 부모를 따라회전하지 않는 불효자식들이 생겼습니다. 이를 고치기위해 손가락과 볼펜을 비틀어가며 축마다 슬라이더값을 하나씩 더해주고, 벡터 연산을 해줘서 rotation을 정해줬습니다.
6번째 카메라의 회전을 구현하다, 뇌가 녹은것 같은 기분이 들어 다시한번 검색해보니 localRotation이라는 값을 활용하면, 면 부모의 Rotation값 * localRotation값 이 자동으로 된다는걸 알 수 있었습니다......!기간이 애매해서 수정하지 못했지만 이렇게 다시 코드를 다 수정할 예정입니다. 카메라의 벡터가 (0,180,slider.value - 90)인 이유는 (0,180,-90)이 카메라가 바라봐야 하는 초기방향이기에 그렇습니다.
인풋 아웃풋 코드인데, 아주 간단합니다. 진짜 간단합니다. 하지만 이를 파이썬과 함께 동기화하는건 쉬운일이 아닌데, 다행이도 그건 제 파트도 아니네요. 선배님 화이팅입니다. 아무튼 여기에 아바타얼굴이 바라보고 있는 방향등도 아웃풋으로 전달해줘야 하는데 그것은 2차 프로토로 넘어갈 것 같습니다.
Overall한 상황을 볼 수 있는 화면 하나와, 카메라가 보고있는 화면 하나를 구현하기 위해서 간단히 되겠지? 싶었었는데 너무 간단해서 할말을 잃었습니다. 컴퓨터그래픽스 수업의 뷰포트를 떠올리면 좀 더 쉽게 할 수 있을 것 같습니다.
[Sketchfab] 스케치팹 모델링 import하기 (0) | 2023.03.20 |
---|---|
[AR,Vuforia] Vuforia와 Webcam, Unity를 활용한 간단한 기능 구현 (0) | 2023.03.19 |
댓글 영역