본문 바로가기

인턴, 협업/SNU

[SNU 인턴] 서울대 융합과학기술대학원 2023 동계 인턴 후기

반응형

대학원 인턴을 알아보던 중 서울대 융합과학기술대학원에 재학 중인 친구의 소개로 23년 동계 인턴에 지원하게 되었다.
 
 

https://convergence.snu.ac.kr/bbs/board.php?bo_table=con_rnd_program

융합연구프로그램 1 페이지 | 서울대 융합과학기술대학원

서울대학교 융합과학기술대학원 융합연구프로그램은 학부생들에게 학문의 경계를 허무는 포괄적인 융합연구의 기회와 다양한 학문을 접해볼 수 있는 기회를 부여함으로써 개인별 잠재 능력

convergence.snu.ac.kr

 
http://dyros.snu.ac.kr/

서울대학교 동적로봇시스템 연구실

Introduction / 소개 DYROS lab endeavors to realize a future in which robots in assisting humans in their everyday lives. Our research and development are focused on advancing robotics technology, particularly in ensuring safe and seamless interactions be

dyros.snu.ac.kr

 
나는 지능정보융합학과의 동적 로봇 시스템 연구실, 박재흥 교수님의 DYROS에 지원했고 지원 당시에는 기구설계와 관련된 활동을 하고 싶어 설계 관련 경험을 주로 어필하여 지원서를 작성했다.
 
 
솔직히 붙을거란 기대는 거의 하지 않아서 방학 때 할 다른 인턴이나 공부 계획 등을 준비하고 있었다.
 
 
얼마 뒤 연구실 연구원 분께 연락이 와서 간단한 면접을 봤고 이후 붙었다..
 
 
다른 것 보다 ROS로 개인 프로젝트를 많이 진행한 것을 좋게 봤다고 하셨다.
 
 
그렇게 합격한 후 준비를 하고 바로 24년 1월 2일 부터 인턴 활동을 시작했다.
 
 
 
 
 
본래 이전 DGIST 인턴 처럼 매주 배운 것과 느낀 점들을 정리하려고 했지만 꽤 바빴기도 했고 매주 정리하는 게 큰 의미가 있나 싶어서 이번에는 글 하나에 정리한다.
 
 
내용은 [프로젝트 개요 -> 새로 배운 keywords -> 최종 발표 자료 -> 후기] 순으로 진행하고자 한다.
 
 
 

프로젝트 개요

우선 나는 박사과정 한 분이 진행하는 [7DOF Manipulator Cocktail Making System Prototype] 이름의 프로젝트에 참여했다. 
 
 
설계 관련 프로젝트로 지원했지만 설계보단 제어 비중이 90%인 프로젝트였다. 사실 면접 때 해당 프로젝트에 대해서 말씀을 하셨기에 해당 프로젝트를 하게 될 것은 얼추 알고 있었다.
 
 
우선 프로젝트 이름 그대로 7자유도의 매니퓰레이터를 가지고 칵테일을 만드는 시스템 프로토타입을 구성하는 것이 인턴 기간의 목표였다.
 
 
 
 
 
 

새로 배운 Keywords

인턴 기간 동안 많은 것을 공부했지만 가장 크게 공부한 것 중 하나는 로봇 공학의 중요한 기초 중 하나인 Homogeneous transformation이였다.
 
 
면접 때 내가 로봇공학 수업이 없어서 못 들었다는 것을 말씀드리니 합격 후 선행 공부를 요청하시면서 교재와 범위를 알려주셨었다. 그래서 인턴 시작 전 약 3주 정도 해당 범위의 내용을 미리 공부했다. 
 
교재 : Khatib O., Kolarov K., Introduction to Robotics, Stanford University
 
보충 강의 : https://www.youtube.com/playlist?list=PLP4rlEcTzeFIvgNQD8M1T7_PzxO3JNK5Z

로봇제어공학 - Introduction to Robotics

John J. Craig의 Introduction to Robotics 4판을 가지고 수업합니다. 좌표, 기구학, 자코비안, 동역학, 역기구학 등을 배워요.

www.youtube.com

 
keywords : 
-Transformation matrix
-Rotation, Orientation (Direction cosine / Roll, Pitch, Yaw / ZYX euler / Equivalent axis, angle / Quaternion, etc.)
-Homogeneous transformation, T
-Inverse transformation
-DH parameter (Classic / Modified-Craig)
-Forward & Inverse kinematics with Transformation
-Jacobian
 
 
위 내용을 인턴 시작 전에 공부 했고 교재도 교재지만 경희대 전자공학과 김동한 교수님의 무료 강의가 정말 큰 도움이 됐다. 위 강의는 5장까지 들었고 교재는 Ch.4 The Jacobian까지 학습했다.
 
 
인턴이 시작하기도 전에 굉장히 필요했고, 중요한 것을 공부할 수 있었다.
 
 
 
 
아래 부턴 인턴 기간 동안 배운 keywords이며 keyword만 적거나 간단하게 요약 내용을 적었다.
 
 
 
 
● DH parameter
DH parameter는 로봇의 link, joint 정보를 수학적으로 기술하는 방법으로 DH parameter table을 이용해 로봇 링크 사이의 transformation matrix를 얻을 수 있고 이를 이용해 로봇의 Forward kinematics와 Inverse Kinematics를 계산할 수 있다.
 
기초적인 내용임에도 따로 keyword로 뺀 이유는, {frame}을 link에 붙이는 위치와 index 부여 방법에 따라 2가지 방법이 존재하기 때문이다. Classic과 Modified 2개가 존재하며 추후 논문을 읽거나 내가 작성할 때 이를 잘 고려해야 할 것 같다. 이번 프로젝트에 사용한 Franka Emika Panda의 경우 후자로 정의되어 있던 것으로 보였다.
 
https://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters

Denavit–Hartenberg parameters - Wikipedia

From Wikipedia, the free encyclopedia Convention for attaching reference frames to links of a kinematic chain This article is about DH parameters used in robotics. For the Diffie–Hellman parameters ("dhparam") used in cryptography, see Diffie–Hellman k

en.wikipedia.org

 
 
 
 
 
●Jacobian, Jacobian Control
로봇 매니퓰리에터에서 자코비안은 (내가 이해한 것으로는) Joint space의 속도(미소 변위)를 Task space의 것으로 바꿔주는 행렬이다.
 
 
7DOF 매니퓰레이터의 경우 7개의 모터의 각속도로 이루어진 7x1 Vector의 Joint space 속도에 Jacobian을 곱하면 End effector의 3x1 Linear velocity vector + 3x1 Angular velocity vector = 6x1 Task space 속도를 얻을 수 있다. 이 경우 당연히 Jacobian은 6x7 matrix이다. 
 
 
 
 
●Pseudo Inverse
수학적으로 Inverse matrix는 sqaure matrix에서만 정의되기에 non-square matrix의 inverse를 구하기 위한 방법으로 pseudo inverse(유사역행렬)이 있다. 7DOF 매니퓰레이터의 경우 Jacobian이 6x7이기에 7x6인 J^-1를 구하기 위해 이를 사용했다.

 
 
 
 
●Closed Loop Inverse Kinematics (CLIK)
 
 
●Cubic spline trajectory / Quintic spline trajectory
이전부터 궁금했던 부분 중 하나였다. 서보모터를 제어할 때 그 input을 어떻게 주는지 궁금했었고 나는 아래 2개의 방법으로 이를 해왔었다. (이전 WIM delta robot 프로젝트 포함)
Position control 기준
ⓐDesired position을 step input으로 준다.
ⓑCurrent position ~ Desired position를 단순 linear trajectory로 준다.
 
 
하지만 위 방법은 작동은 했지만 모터에 무리도 가고 duration, velocity, acceleration 등을 전혀 제어할 수 없다는 문제가 있었다.
 
 
따라서 ⓑ의 방법에서 trajectory를 spline 형태로 만드는 간단한 방법이 있었다.
(일단 내가 사용했던 trajectory를 만들고 이를 제어 주기에 맞는 Hz로 input하는 방법은 맞았다.)
 
 
Cubic과 Quintic은 각각 3차, 5차 함수 형태로 position의 trajectory를 만든다.

Cubic spline
Quintic spline

 
 
cubic은 trajectory의 시작, 끝의 위치/속도를 지정해 계수를 구할 수 있고, quintic은 위치/속도/가속도를 지정해 계수를 구할 수 있다.
 
 
나의 경우는 시작 속도/가속도는 0으로 두어 계수를 시작/끝 위치로만 결정할 수 있도록 함수를 만들어 사용했다.
 
 
 
●Gravity compensation, Dynamic compensation of Controller
 
 
●Null space control
 
 
●Constraint Motion Planning
 
 
 
+)이외에도 많이 배웠다. 자료 정리가 끝나거나 기억이 나는 대로 계속 추가할 예정이다.
 
 
 
 
 

최종 발표 자료

01234567891011

 
 
 
 

후기

●우선 real robot control을 실패한게 많이 아쉬웠다. pouring trajectory를 만들 때 transformation에 익숙지 않아 복잡하게 식을 구성했고 때문에 이를 코드로 옮길 때 실수가 많이 나온 것이 시간을 많이 잡아먹은 요인이 되었다. 또한 c++ 숙련도도 낮아서 오류가 많이 났었다. 
 
 
●그럼에도 이 부분에서 배운점이 있다면 시뮬레이션에선 잘 되어도 실제 로봇에선 설계한 trajectory와 controller가 잘 작동하지 않을 수도 있다는 점과, 시뮬레이션에서 테스트할 때 반드시 여러 상황을 해봐야 한다는 것이었다. 시뮬레이션은 굉장히 자동적(?)이고 제한된 상황을 보여주기에 잘못된 코드가 잘 작동하는 것처럼 보일 수 있기 때문이다.
 
 
●비록 내 관심 분야의 프로젝트를 한 것은 아니였지만 내가 굉장히 약하다고 생각했던 부분들을 배우고, 실습할 수 있는 매우 값진 경험이었다고 생각한다. 나는 평소에 제어와 관련된 부분이 굉장히 약하다고 생각했고, C++ 개발도 약점으로 생각하고 있었는데 이를 동시에 해결할 수 있었다.
 
 
●역시 학부생은 자기 분야를 무조건적으로 고집하기 보단 다양한 분야를 경험해 보는 게 시야를 넓히는 부분에서도 좋고, 자기 분야에서 사용할 수 있는 기초를 배울 수 있다는 부분에서도 좋다는 것을 크게 느꼈다.
 
 
●제어를 이전에는 경험적으로 할 수 밖에 없었다면 이제는 약간의 수학적으로 접근할 수 있게 된 것도 큰 발전 중 하나라고 생각한다.
 
 
●다만 힘들었던 점은 숙소 관련해서 크게 학교 차원에서 제공하는 게 없었다는 것이다. 단기라 주변 원룸을 계약하기도 쉽지 않고 광교라는 지역 특성상 월세가 굉장히 비쌌다. 따라서 나는 15분 떨어진 곳의 고시원을 계약해서 생활했는데 이 부분이 좀 힘들었다. 물론 인턴 기간 동안 얻은 것을 생각하면 전혀 아깝지 않지만 그래도 조금 아쉬웠던 것은 사실이다.
 
 
●마지막으로 좋은 기회를 주신 서울대 DYROS 박재흥 교수님, 나를 뽑아주신 박사과정 연구원님, 많이 도와주신 다른 연구원 분들, 같이 공부하고 도움을 주신 다른 인턴 분들에게 감사의 마음을 전한다.
 
 
 

 
 

 
========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다.   : )
========================================================================

반응형