JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...Lablup Inc.
이 Techtalk에서는 TensorFlow 2.0으로 이전시 tf.estimator 에서 tf.keras로 이전해야 하는 이유에 대하여 설명합니다.
This Techtalk explains why you need to migrate from tf.estimator to tf.keras when moving to TensorFlow 2.0.
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
모던 C++의 시초인 C++11은 C++ 코드 전반에 많은 변화를 가져왔습니다. 그리고 최근 C++20의 표준위원회 회의가 마무리되었습니다. 내년에 C++20이 도입되면 C++11이 처음 도입되었을 때와 비슷한 규모, 또는 그 이상의 변화가 있을 것이라고 예상하고 있습니다. C++20에는 Concepts, Contract, Ranges, Coroutine, Module 등 굵직한 기능 외에도 많은 기능들이 추가될 예정입니다. 이번 세션에서는 C++20에 추가될 주요 기능들을 살펴보고자 합니다.
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...Lablup Inc.
이 Techtalk에서는 TensorFlow 2.0으로 이전시 tf.estimator 에서 tf.keras로 이전해야 하는 이유에 대하여 설명합니다.
This Techtalk explains why you need to migrate from tf.estimator to tf.keras when moving to TensorFlow 2.0.
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
모던 C++의 시초인 C++11은 C++ 코드 전반에 많은 변화를 가져왔습니다. 그리고 최근 C++20의 표준위원회 회의가 마무리되었습니다. 내년에 C++20이 도입되면 C++11이 처음 도입되었을 때와 비슷한 규모, 또는 그 이상의 변화가 있을 것이라고 예상하고 있습니다. C++20에는 Concepts, Contract, Ranges, Coroutine, Module 등 굵직한 기능 외에도 많은 기능들이 추가될 예정입니다. 이번 세션에서는 C++20에 추가될 주요 기능들을 살펴보고자 합니다.
2. 교육
• 선생님과 학생이 구분해서 사용 가능
• 선생님
• 3D로 로봇 만들기, 수식 입력, 모터 정의 및 상관관계입력
• 다양한 로봇을 학생들에게 접하게 할 수 있고 로봇의 수식을 학생들에게 실
제적으로 적용해서 보일 수 있다.
• 클릭하는 로봇의 부품에 따라 회전, 직교로 동작할지 Forward/Inverse 등의
수식이 적용될지, 혹은 클릭이 되지 않게 적용할지를 선택할 수 있다.
• Forward Kinematics 를 직접 눈으로 예를 들어 보이면서 설명이 가능하다.
• D-H Notation 을 파라미터만으로 3D 모델링,
• 학생
• C# 툴을 이용해서 Using, 변수선언, 파일열기, 타이머에 Drawing 함수 선언
의 4줄로 3D 로봇의 기능을 사용 가능
• 만드는 선생님이 제어의 방식(델타, 직교, 바퀴구동, 다관절)을 고민하지 학
생이 고민할 필요는 없다.
개발자
• 다양한 로봇을 하나의 DLL 을 사용해 재사용이 가능
• 다양한 수식을 넣기 쉽고 하나의 로봇에 255개까지의 고속 수식 연산을 각
파트별로 넣는 것이 가능.
• Message History, Timer, Joystick, Graph, 암호화, File 저장/불러오기, 레지
스터 등 실제 현업에서 잘 사용되는 기능이 정의 되어 있어 사용이 간편.
• 3D 모델링의 사용이 간편하고 실제 모터 파라미터를 정의할 수 있어 실제
제어에 사용이 가능
OpenJigWare 란?
4. 어느날 던져진 화두
• 모든 로봇에 적용될 수 있는 무언가가 없다.
• 휴머노이드건 바퀴형 로봇이건 직교좌표로봇이
건 모든 로봇에 적용될 수 있는 것이 있다면?
• 로봇은 수식으로 이루어진 수식 덩어리. 그렇다
면 그 수식만 바꿔주면 될거 아닌가?
• Kinematics 를 교육하기란 너무 어렵고 또한 이
걸 위해 실물을 가져다 놓기엔 비용이 너무 많이
든다.
아이언 맨
개발 동기
6. Microsoft Visual Studio 2010
• C# 개발환경 ( with Tao frame work : OpenGL )
사용환경
https://youtu.be/l_QerQFRaZk https://youtu.be/GY4MUXbbW20
7. 최초 개발은 모션 편집용 프로그램.
Jig 개발에 최적화 되어 있다.
모션 제작 및 튜닝에 최적화
3D 모델링의 빠른 구현
• 복잡한 형태도 숙련자의 경우 2시간 정도면 구현 완료 – 가상에서 보면서 조립하면 끝
• 기타 세부적인 것을 정의하는데 시간이 걸림
• 수식 / 실제 사용할 모터 기어비 / 자신이 넣고 싶은 정보들…
제어기능의 빠른 구현
• 모델링이 완성되어 있는경우 전체 코드 5줄만 추가하면 준비 완료
교육적 내용 포함
• D-H Notation 파라미터만 입력하면 3D 모델링 및 수식 자동생성 및 확인 가능
• 가르치는 사람과 교육 대상자를 구분해서 사용 가능
쉬운 사용 & 다른 Tool 과 접목 가능
• 미들웨어로 단지 DLL 일 뿐. 다른 Tool 과 접목이 가능하다.
• Ex) OpenCV 처럼 단지 DLL 일 뿐…
• DLL 참조 추가 후 프로그램의 상위에 “Using OpenJigWare” 를 넣으면 준비 완료
ROS 가 있는데 이건 무슨 필요?
8. Source & DLL
• OpenJigWare 로 인터넷 검색 하거나
• 아래의 링크에서 소스 포함 다운로드 가능
• https://github.com/ojw5014/OpenJigWare
• 단, 현재 최신버전이 업데이트 되어 있지는 않다.
• ㅠ.ㅠ 컴퓨터 포맷하면서 Github 업로드 링크가 깨졌는데 Github 내
공이 약해서 어떻게 복구하는지 몰라 아직 시도 못해보고 있어요
~~~
Manual
• 현재 Document 로는 없고 동영상 강의로 조금씩 올리고 있습니다.
• www.youtube.com
• ojw5014 아이디를 찾으시거나 OpenJigWare 로 찾으신 후 [Example]
로 되어있는 동영상들 참고하시면 됩니다.
• Ex ) https://www.youtube.com/watch?v=tqgSO_PA_cU
• 매뉴얼 제작 문서는 현재 계획중에 있습니다.
어디에서 구할 수 있는가?
9. Message History
• 내가 원하는 메시지를 MessageBox 와 연결하여
History Message를 남길 수 있고 원하는 경우
이를 파일로 에러와 구분해서 저장이 가능(날짜
별 구분 생성)
Convert 가 직관적으로 쉽다.
• 문자변환 등 형변환 관련
Parameter 파일 생성 및 Loading 이 쉽다.
모터의 제어를 쉽게 해준다.
• Dst robot(전 동부로봇) 의 허큘렉스 시리즈, 로
보티즈 모터 지원(이 경우 Rpm 제어를 Time 제
어로 변환 가능)
3D 모델링의 속도 저하가 우려되면 2D 함수를
이용해 3D 모델링을 그릴 수 있다.
Forward / Inverse Kinematics 지원
중요기능
11. 초보자에게 쉬워야 한다.
• 코딩라인 10줄 이내로 3D 모델링이 가능
전문가에 의한 코딩의 다양화가 가능해야 한다.
• 내부 OpenGL 을 활용한 세부적 접근 가능
교육적 컨텐츠가 가능해야 한다.
• Forward / Inverse Kinematics 의 활용가능
• 수식의 결과 행렬을 얻어서 눈으로 확인이 가능해야 한다.
속도가 느려선 안된다.
• 모델링 파일을 불러들이는 단계에서 컴파일 과정을 거쳐 실 속도에 맞게 운용 가능
Cad 데이터의 모델을 가져올 수 있어야 한다.
• ASE, OBJ, STL(text/binary) 파일 이용 가능
모터의 모든 정보가 들어가야 한다.
• 기어비, 회전방향, Mirror 모터, 모터의 별칭, Limit, 모터의 타입(속도제어/포지션제어 등), 그룹정보, 실제 ID,
Flip 동작시 동작 규정(역회전, 동작없음, Mirror 모터 싱크)
모델링, 구현, 모션제작 툴의 구분
• 다른 구분으로는 교육자/교육대상자
모든 종류의 로봇에 대응이 가능해야 한다.
• 바퀴형, 다관절 형, 델타 형, 직교로봇, 가변 트랙 등.
[ 지원되는 기능 ]
13. 모델링 툴, 구현
모델링 툴
• 수식구현
교육대상자의 프로그램 실습
• https://www.youtube.com/watch?v=ol29At-4OWc
모션제작 툴을 만들어 보기
• 완성까지 프로그래밍 총 200라인
• https://www.youtube.com/watch?v=_c2tNN-tayA
https://youtu.be/BEr_5CZqk-w
https://youtu.be/srUZRiMfd8k
14. Cad 를 넣어보자. – Step 1
• 가지고 있는 Cad 파일(obj, ase, stl 파일을 실행
폴더에 넣어준다. – 구 버전에서는 ase 폴더에
넣어준다.)
모델링 툴
15. Cad 를 넣어보자. – Step 2
• 모델링 툴 안에서DispObject 항목의 이름을 가지고 있는 파일의
이름으로 바꿔준다.
• # 으로 시작하는 이름은 내부에 정의된 17가지 패턴을 의미
• Ase 파일은 확장자 없이 적어도 상관없다. 다른 파일들은 확장
자를 반드시 기록.
모델링 툴
16. Cad 를 넣어보자. – Step 3
• 들어간 모델을 확인 후 원하는 위치로 이동 및 회전 후 Add 한다.
모델링 툴
1. Offset 으로 100 이동 후 45도 회전
2. Y축으로 50 이동, Y축 45도 회전
1. Offset 은 실 회전과 상관없이 현재의 자
세를 결정
2. Trans / Rotation 은 실제적이 이동 및
회전을 의미(일반적인 OpenGL 3D 모델
링에서의 회전 및 이동의 이미와 동일)
17. Cad 를 넣어보자. – Step 4
• 장치를 Add 한다.(마우스 우클릭)
커서가 위치
한 선택된
모델링의 색
이 변한다.
커서를 놓은 위치
의 모델링의 정보
가 나타나게 되는
Property grid. 여
기서 정보의 수정
이 가능하다.
추가 후 새롭게 나타나는 Virtual
Object(추가하기 전까지는 실제로
모델링에 적용되지 않는다.)
18. 현재 제작 중(60%)
불러들이는 모델의 종류에 따라 모션툴의
기능이 다양하게 변화한다.
관절의 역할에 따라 색을 달리 정하는 것이
가능하다.
클릭된 위치에 따라 어떤식
의 동작을 할 것인지 정의하
는 것이 가능
모션제작 툴
바퀴(휠) Manipulator
19. 모션제작 툴(휴머노이드 모델링의 경우)
테스트를 위해 모션 한 프레임을 만들어 본다.
보는 바와 같이 우측 팔과 우측 다리를 들고 머리
를 우측으로 돌리며 허리를 숙인것을 볼 수 있다.
비교를 위해 아래에 Ctrl^C, Ctrl^V 하여 프레임
복사를 한다. 이후 Switch 버튼 클릭
프레임 복사
Switch 클릭
우측 팔/다리의 모션이 좌측 팔/다리로 바뀌었고, 머리는 반대방향으로, 허리는 변화 없는
것을 볼 수 있다.
모델별 변화되는 기능 예 : Switch
20. 모션제작 툴(HexaPod 모델링의 경우)
테스트를 위해 모션 한 프레임을 만들어 본다.
보는 바와 같이 우측 관절은 정해진 초기위치가
아닌 사용자가 입력한 모션을 취하고 있다.
비교를 위해 아래에 Ctrl^C, Ctrl^V 하여 프레임
복사를 한다. 이후 Switch 버튼 클릭
프레임 복사
Switch 클릭
우측 관절 전체의 모션이 좌측관절로 바뀐것을 알 수 있다.
참고 : 이 모델링 파일은 그룹 구분이 되어 있지 않아 색 구분이 없이 주황색으로 통일 된 상태
모델별 변화되는 기능 예 : Switch
21. Genibo 연동이 가능하도록 기능추가
Hovis series 와 연동가능하도록 DR-Sim 호
환 가능하도록 기능 추가
파일 저장 및 변환이 가능하도록 기능 추가
음악과 Sync 동작이 가능하게끔 기능 추가
모션제작툴 향후…
22. 자료를 올려놓을 곳이 마땅치 않다.
• 현재 Github 사용
• https://github.com/ojw5014/OpenJigWare
다른 컴퓨터에서는?
혼자 OpenSource 개발 시 문제점
23. 사용 방법
Teacher Student
Modeling Tool 실행
Using OpenJigware.dll
Drawing(3D)
Motor 정의
(Limit, 기어비 클릭 이벤트 등)
교육 하고자 하는 수식 입력
Engineer
Visual Studio C# 실행
프로그래밍 따라하기
(최소 코딩라인 4줄)
만들어진 파일 학생에게 전달
Modeling Tool 실행
제어할 타입(델타, 직교,
다관절, 바퀴형 외) 결정
후 Drawing(3D)
Motor 정의
(Limit, 기어비 클릭 이벤
트 등)
사용하고자 하는 수식 입
력
프로그램 제작
25. 직접 그린다.
• 솔리드 웍스, Maya, 3D Max 및 기타 3D 모델링 툴 이용
(파일 저장은 obj, ase, stl[Binary or Text] 로 한다.)
• Autodesk 123Design 같은 툴을 사용한다.(무료)
• 주의사항
• 정점이 많으면 Drawing 하는데 시간이 걸리므로 프로그
램이 느려지는 효과가 나타난다.
모델링 데이터는 어디서 구할까? [1/2]
26. 난 그릴줄 몰라!!!
• 다운로드한다.
• 3D 프린터와 동일, Thingiverse, Yeggi 등의 사이
트 이용
모델링 데이터는 어디서 구할까? [2/2]
http://www.thingiverse.com http://www.yeggi.com/
27. 수식 간략화(컴파일 전단계) & 컴파일
수식부 컴파일러
1단계 2단계 2단계 4단계3단계 4단계
실제 사용될 바이너리 코드 생성
사용된 모터의 개수
사용된 모터의 ID들…
사용된 변수의 개수
사용된 변수 번호들…
28. 사전 정의된 변수(Non-Case Sensitive)
=> 모든 변수는 컴파일러 외부에서 연산 전에 넣거나 연산 후 결과값을 되돌려 받을 수 있는 변수
• X, Y, Z( 대소문자 구분 없음)
• T0 ~ T255 : 모터 변수
• V0 ~ V252 : External 지정 변수 (프로그램 외부에서 변수값을 사전에 미리 정의하거나 컴파일 과정에
서 연산된 값을 사용자가 임의로 알 수 있는 변수
사용된 문법
• 변수 : 앞머리에 지정된 문자외의 다른 문자 입력 시 변수로 인식한다.
• 중간에 정의되지 않은 변수를 사용시 0값 초기화된 값으로 사용
• =(대입), +, -, *, /, %(연산)
• V0 ~ V252 : External 지정 변수 (프로그램 외부에서 변수 값을 사전에 미리 정의하거나 컴파일 과정
에서 연산된 값을 사용자가 임의로 알거나 조작할 수 있는 변수)
• 사용된 함수의 종류 : sin(), cos(), tan(), asin(), acos(), atan(), pow(,), sqrt(,), abs(), atan2(,), acos2(),
asin2()
사용규칙
• “_”, “;” 는 사용불가
• 문장내 괄호의 규칙을 준수할 것 : “(“ 의 개수와 “)” 의 개수가 일치해야 한다.
• “++”, “—”, “+*”, “*/”, “/-”등의 복합연산 사용 불가(괄호를 이용할 것)
• “+, -, *, /, %” 의 연산은 문장의 끝에 사용할 수 없습니다.
• 모든 삼각함수 내의 값은 Radian을 사용하지 않은 값으로 즉, 각도를 라디안으로 변형할 필요가 없다.
수식부 컴파일러
29. 컴파일 전단계
정렬 및 주석제거 역할
• String separate – 스트링 데이터를 조각조각 쪼개 놓는다.
• 쪼개진 데이터를 순서에 입각해서 변수 정의한다.
• _V(변수넘버)를 순서에 맞게 정렬한다.
• Sort 된 데이터를 연산 우선순위에 따라 (X,/,%우선) 다시정렬
수식 간략화 단계
30. 암호화 및 암호화 해제, V 변수, T 모터변수
및 내부변수 정의, 불필요 문자 제거, 내부
Basic 규정 문법으로 변환, 수식의 단순화
전처리 과정
컴파일 1 단계
37. The Leader of Intelligence Robot
37
Forward kinematics
Joint Angle Cartesian space(x, y, z)
Simple and Unique solution
Inverse kinematics
Cartesian space(x, y, z) Joint Angle
It is not a unique solution, difficult(but delta system)
Sometimes we have singular position or some position
we cannot go
38. The Leader of Intelligence Robot
38
Translation
to Matrix
40. The Leader of Intelligence Robot
40
T(Transformation Matrix)
It has rotation and translation in their 4 * 4 matrix
Parameter
Define
X(i+1) and Z(i) is orthogonal
X(i+1) and Z(i) has a matching point
43. The Leader of Intelligence Robot
D-H Notation 눈으로 확인해 보기
https://youtu.be/7lqSJNfkxe8
44. The Leader of Intelligence Robot
kinematics
D-H Notation 교육 2시간 만에 상당수 학생들이 D-H 파
라미터를 이용한 3D 매니퓰레이터 제작 성공
자신이 스스로 3D 매니퓰레이터를 제작한 것에 흥미를
가짐
D-H Notation 에 대한 이해를 쉽게 가짐.
헷갈리면 그려보면 된다…0