#3-1 Paper 구현
-
Deep Learning Study Paper 구현하고 싶다. #1-5 Optimization & Loss Modules & Training # Intro 센서 기반 IOT 스마트 팩토리 중 설비 쪽에 부서가 배치됐다. 학부시절에 하던 내용들이랑 많이 겹쳐서, 앞으로의 행보가 기대되지만, 굉 장 히 많은 지식들이 요구돼서 긴장도 된다. 기계과라면 가져야 하는 낭만 일반기계기사를 3월 12일 날짜로 홧김에 신청하게 돼서, 지금 여러모로 할일이 많아져 버렸다. 일단 개인적인 목표에서, Tutorial 5까지는 마친 상태지만, 리뷰가 너무 늦춰져서 좀 성실해질 필요가 있다. 아무튼 이어서 쓰면, 1. Optimization Data를 정리하고, Model을 만들었다면, 궁극적인 목표인 Optimization을 할 차례이다. optimization은 Parameter를 Loss Function을 활용하여 최적화시키는 역할을 한다. 간략하게 Flow를..
-
Deep Learning Study Paper 구현하고 싶다. #1-4 data.DataLoader Tutorial 2: Introduction to PyTorch # 이전내용 class XORDataset(data.Dataset): def __init__(self, size, std=0.1): """ Inputs: size - Number of data points we want to generate std - Standard deviation of the noise (see generate_continuous_xor function) """ super().__init__() self.size = size self.std = std self.generate_continuous_xor() def generate_continuous_xor(self): # Each data point in the XOR ..
-
Deep Learning Study Paper 구현하고 싶다. #1-3 PyTorch FrameWork Tutorial 2: Introduction to PyTorch 1. Intro 오늘 할 내용은 사실 딥러닝 프레임 워크 친숙해지기, 좀 더 나은 알고리즘 탐방하기 쪽에 더 가깝다. XOR 알고리즘은 전기 신호 배우면서 나오는 논리회로 이런 느낌인데 뒷내용에 대입해 보자면 그 내용은 사실 안 중요하다. 단지 볼 부분은 코드 flow와 딥러닝 framework이 어떻게 형성되는지 정도 아는 게 중요하다. 2. Learning by example: Continuous XOR 기본적인 Libraries부터 불러오는데, import torch.nn as nn import torch.nn.functional as F nn과 functional as F를 다양한 오픈소스에서 볼 수 있다. nn과 F의 차이점으로는 ..
#1-2 Simulation 공부
-
Isaac Gym 시뮬레이션 오답 노트. #6-2 [Quadruped Robot Failed - DRL] #Intro 저번에 이어서 오늘은 왜 내가 대학원에 가야하는가에 대한 정답을 얻은 계기를 써보려 한다. 열심히 해봤는데 큰 벽이 느껴진다기 보단 세상에는 정말 재밌고 엄청난 기술이 많구나 라는걸 느끼게 된다. 2. Reinforcement Learning Custom Model을 Simulation에 넣어보니 inertial문제도 해결 했겠다. 부푼 기대를 가지고 코드에 내 모델을 직접 넣는데, 그 이전에 코드가 어떻게 흘러가는지 이해할 필요가 있었다. 일단은 코드를 작성할 때 내가 원하는 모델을 강화학습 시키기 위해서는 위와같은 구조를 이해하고 Train할때 어떤 파라미터들을 건드려야 하는지 분석 할 필요가 있었다. Custom 모델을 넣기 위해 Adding a New Env 부분을 참조하여 코드를 일..
-
Isaac Gym 시뮬레이션 오답 노트. #6-1 [Quadruped Robot Failed - Custom Model] #Intro 그간 4족 보행 task를 수행해 보고자 많은 노력을 기울여 봤다. 가장 큰 task로는 두가지를 주제로 잡았는데 1.나의 Custom Model을 어떻게 시뮬레이션에 넣을까? 2. Quadruped Robot을 어떻게 강화학습과 접목시킬까? 오늘은 그간 뭘 하고 지냈고 어느 포인트에서 이렇게 오래 막혔는지 단계를 나눠서 설명하고 나의 한계점과 개선 방안에 대해 검토해 보았다. 1. Custom Model #URDF Background Simulation에 모델을 넣는 경험은 기본적으로 CAD파일을 연다와 많이 달랐다. 앞선 간단한 tutorial들을 통해 어느정도 익혔다고 생각했지만 URDF라는 포멧은 생각보다 많은 지식을 요구했다. 이 부분을 익히기위해 거의 2주간을 소모했으며, 처음부터..
-
Isaac Gym 시뮬레이션 하고 싶다. #5-1 [Tensor API-Rigid Body States] #Intro Quadruped Robot 중 하나인 a1을 해석하기 위해서 기본적인 디버깅을 할 수 있어야 하지 않을까 하는 생각에 gym에서는 data가 어떤식으로 흘러가는지 알아보고자 했다. 간단한 예제로 시작하기 위해 기본적으로 제공되는 dof_controls.py를 사용했다. 디렉터리 isaacgym/python/example/dof_controls.py #Dof_controls.py 1) 코드 실행 방법과 결과 (directory 맞추고) python dof_controls.py 2) 코드 열어보기 Line 88~104 : env0-빨간색(red) Line 106~121 : env1-연두색(green) [env2 : 파란색(blue), env3 : 노란색(yellow)] Line 91,92의 c..
-
Isaac Gym 시뮬레이션 하고 싶다. #4-2 [Isaac Gym Environments for Legged Robots-Cassie] #Intro 다른 예제인 Cassie를 간략하게 해 봤다. 일전의 Anymal에서 train.py의 명령어 중 task만 조금만 변경하면 바로 된다. #Usage-train.py python train.py --task=cassie 잘 보니까 Total time도 나왔는데 약 17분 정도가 걸린다. #Usage-play.py python play.py --task=cassie 이 외에도 여러 모델들을 지원하니, 한번씩 열람해보는 것도 좋아 보인다.
-
Isaac Gym 시뮬레이션 하고 싶다. #4-1 [Isaac Gym Environments for Legged Robots-Anymal] #1 Intro https://github.com/leggedrobotics/legged_gym GitHub - leggedrobotics/legged_gym: Isaac Gym Environments for Legged Robots Isaac Gym Environments for Legged Robots. Contribute to leggedrobotics/legged_gym development by creating an account on GitHub. github.com Nvidia에서 제공하는 다양한 Tutorial을 리뷰하기 앞서, 공동의 목표가 잡힌 Quadruped Robot에 초점을 맞추다가 취리히 공대에서 오픈된 코드를 하나 발견할 수 있었다. 아직은 참조된 논문은 읽어보지 못 했지만,..
-
Isaac Gym 시뮬레이션 하고 싶다. #3-2 [Make Custom Gym (Part 2)] #1 Isaac Gym에서 Simulation 만들기 2 [이전 요약] 아직 보이지는 않지만, 우리는 원하는 env를 만들고, 해당 env에 들어가는 Actor 또한 설정하였다. 근데 Simulation도 안 켜지고 아무런 현상 없이 터미널에 주석 몇 개만 나오고 끝이 난다. 그래서 오늘은 직접 Viewer를 설정하여 Simulation을 완성해보자. 6,7. Viewer 만들기 #6-1 그림 1. 에 기재된 바와 같이 첫째로 Viewer를 만든다. #6-2 이후에 Simulation 내에서 키보드와 마우스를 사용하고 싶으면 subscribe_viewer_keyboard_event라는 함수로부터 정의가 필요하다. 공식문서에 따르면 [NVIDIA docs -> API Reference -> Python A..
#1-1 Sim2Real
-
Acrobot Simulation to Real. #7 [Acrobot-IsaacGym : Inverted Pendulum Balance] #Intro 이전 글을 이어서 적는다. Solution 3 - tan 함수 (성공) sin도 제대로 학습이 안되는 거 같아서, 어떤 방법을 사용해야 할까 고민하던 찰나. sin그래프 아래에 tan그래프가 그려져 있었다. 생각해보니까 좌우 대칭에 안정적인 경사를 만들어 낼 수 있는 그래프지 않나 하는 생각이 머리를 스쳐지나 갔다. 그래서 바로 sin을 대체했다. 그리고 추가적으로 만약 θ가 π가 되면 그간 앞에서 걱정했던, 페널티 값이 하늘로 승천해 버리기 때문에 이 문제를 해결하고자, tan함수의 주기를 늘려주는 작업을 했다. 최대한 탐험의 범위를 넓혀 보고자 주기의 범위를 tight 하게 주지 않고 ± 4π 로 만들어 보았다. 만약 해당 범위까지 Acrobot이 회전하게 되면, 아예 초기화를 시켜버리는..
-
Acrobot Simulation to Real. #6 [Acrobot-IsaacGym : Inverted Pendulum Balance] # Intro 이전 글을 이어서 적는다. Solution 2 - Sin 함수 (실패) 0 ~ 1로, 그중 가장 친근한 방법인 sin과 cos으로 아이디어를 짜 봤다.. sin과 cos은 시작점만 다르기 때문에 그냥 sin으로 통합시켜서reward를 설계 해 보았다. 1. 단순한 페널티 설정 처음엔 reward의 숫자에만 관점을 두고 "reward 패널티를 어떻게 과감하게 설계할까?"를 생각해 봤다. 단순하게 1을 최대한 깎을 방법만 고려하고 마지막에 Total Reward를 계산하는 방식으로 문제를 접근했는데, Total Reward 수식을 쓰려고 할 때 앞선 reward 페널티의 값들을 보고 이건 뭔가 아니다는 걸 느꼈다. 물론 다른 radians값이 나올 때, 더 큰 숫자로 보상이 깎여 나가겠지만..
-
Acrobot Simulation to Real. #5 [Acrobot-IsaacGym : Inverted Pendulum Balance] # Intro 오늘은 드디어 Simulation 상에서 나의 Custom Model 자세 제어를 할 수 있게 됐다. 일전의 FrameWork를 정리한 경험과 다양한 분들의 의견을 수렴하고 논문들을 들춰본 결과 이런 좋은 결과가 일찍 나올 수 있던것 같다. # Reward & Reset 일단 처음에는 있는 코드를 기반으로 FrameWork를 수정했다. 아래는 기존에 있던 CartPole 코드의 Reward 부분이다. 182번째 줄의 Reward는 자문해본 결과 reward 선정 방식과 reset에 대해 설명을 해주었다. 간단하게 풀어서 말하면 1. reward 선정 reward의 선정 방식은 NVIDIA에서 임의로 짰다고 한다. 자세한 설명은 해주지 않고 보상 1에서 제어하고자 하는 요소들을 (-) 요소로..
#2-2 Quadruped Robot 만들기
-
Quadruped Robot Hardware Quadruped 만들고 싶다. #2 BLDC-Motor (회의 내용 ②) #INTRO BLDC-Motor를 사용하는데, 지하에 남아있는 모터를 사용하게 됐다. 사용하는 모터와 esc의 데이터 시트는 아래와 같다. http://dl.djicdn.com/downloads/e305/en/E305_User_Manual_v1.00_en.pdf 제어 방식에 대한 설명하기 앞서, 꼭 프로펠러를 제거하고 테스트하길 바란다. 아무것도 모르고 조립된 상태로 테스트하면 손가락 잘린다. 이런 고출력 모터를 처음 사용해봐서 잘 몰랐는데, 카카오톡방의 조언을 받아 다치지 않고 안전하게 실험이 가능했다. 1. Arduino로 제어하기 배선은 pdf를 참조하였다. 여기에는 9V의 건전지를 사용해서 테스트를 했고, Arduino는 Mega를 사용했다. (Uno도 관계없음) 막연하게 파워주고 pwm신호를 흘..
-
Quadruped Robot Hardware Quadruped 만들고 싶다. #1 모델 선정하기 (회의 내용 ①) #INTRO LINC사업단과 연구지원을 받으며 모델을 제작할 기회가 왔다. 새로운 모델을 제작하기 앞서 유투브를 활용하여 좋은 모델을 얻을 수 있었다. GitHub - open-dynamic-robot-initiative/open_robot_actuator_hardware Contribute to open-dynamic-robot-initiative/open_robot_actuator_hardware development by creating an account on GitHub. github.com 여기서 하드웨어에 대한 정보를 전부 얻을 수 있었는데 아무래도 모터 드라이버, 보드, 모터는 전부 동일하게 따라 하기엔 무리가 있으니 그에 걸맞게 모델을 수정해서 만들어보려 한다. #STEP 파일 수정 홈페..
#3 Capston Design
-
Capstone-Design Capstone Design. #1-3 제어 외 최종 결과물 #INTRO 휠 제어는 Arduino를 활용하였고, 무선 통신으로는 XBee를 활용했다고 한다. 처음에는 Raspberry 4를 활용해서 이를 해결하려 했으나, ROS2 공부를 틈틈이 하지 않아 재빠르게 Arduino 제어방식을 선택했다. 코드 부분은 내가 직접 작성하지 않고 팀 내 다른 조원이 작성해서, 자세한 설명은 넘어가려 한다. remote & response 결과물 생각보다 단순하게 나와서 글을 쓰다가도 허무하긴 했다. 예상 범위 외의 일이 하나 일어났었는데, 24V 배터리가 인천공항에서 무슨 문제가 생겼는지 1달이 넘게 배송이 안돼서 발표 전날에 급하게 Converter를 제작하여 Power가 유선 형태가 됐다. 영상 1. 웜기어 - 휠 축 구동 수동/자동 모드를 변환하려고 만든 웜기어의 작동..
-
Capstone-Design Capstone Design. #1-2 생산 #INTRO 이전 글들의 아이디어를 채용해서 3D 모델을 만들었다. 전체 파일은 CATIA파일인데 3D로 출력할 땐 STL을 사용해서 STL로 올려본다. 1. Base Plane 재료들은 전부 학교에 굴러다니는, 혹은 아파트에 버려진 재료들을 주어다가 가공해서 만들어서 크게 규격이 없었다. 실제 제작에서는 처음 10t 짜리 아크릴판이 파손돼서 아파트 단지에 굴러다니는 나무합판과 5t짜리 아크릴판을 볼트&너트(와셔)로 체결하여 제작 하였다. 상세 도면은 아니지만, 필요한 정보들을 간략히 표현하면, 치수선이 굉장히 지저분한데, 상세 도면을 제도할 필요가 사실 없다고 판단하여 작업자(친구들)에게 편할 수 있는 치수들 위주로 간략하게 표현했다. 근데 생각해보니 실물 제작할 땐 A3용지에 1:1 비율로 출력해서 ..
-
Capstone-Design Capstone Design. #1-1 생각한 것 만들어 보기 #Intro 4학년 1학기지만, 2학년 1학기 때 전과목 F를 맞은 나머지 21학점을 들어야 하는 난관에 부딪혀 아주 바쁜 학기가 됐었다. 그간 무엇을 했고, 또 그 속에서 얻은 게 다른 이들에게도 도움이 될 수 있을까 하는 마음으로 다시 글을 적어보려 한다. # 캡스턴 디자인 초안 아이디어를 생각하게 된 계기는 그냥 단순하게 쓰레기를 버리러 가기가 귀찮았다. 정말 너무 단순한 이유라 길게 설명할것도 없어 바로 본론으로 들어가고자 한다. 직관적으로 볼 수 있으니 패스 그림2는 이상적인 목표 수행을 그려보았는데, 처음에는 로봇 팔을 달아보는 것이 어떻냐는 교수님의 의견에 과거 여러 논문들을 찾아보며 스스로 임의의 위치를 클릭하거나 집는 행위가 굉장히 어렵다는 걸 알고 있었기 때문에, 로봇 팔은 제외시키기로..