본문 바로가기
기계공학부 시절의 기록/ROS일기

(진행중)OpenManipulator teleop 코드분석

by juhyeonglee 2021. 10. 12.
728x90
반응형

 

헤더파일

출처 : https://github.com/ROBOTIS-GIT/open_manipulator/blob/master/open_manipulator_teleop/include/open_manipulator_teleop/open_manipulator_teleop_keyboard.h

 

소스파일

출처 : https://github.com/ROBOTIS-GIT/open_manipulator/blob/master/open_manipulator_teleop/src/open_manipulator_teleop_keyboard.cpp

 

 

 

21.10.12

헤더파일에는 선언들만 있고 소스코드에는 헤더파일에서 선언한 함수들을 구현해놓고 있음

클래스 정의와 구현 분리

출처 : https://boycoding.tistory.com/244

 

 

21.10.19

open_manipulator_teleop_keyboard.cpp [line1~47]

클래스 생성자, 멤버 이니셜라이저 설명

생성자는 헤더파일에서 선언된 클래스의 private멤버를 초기화하는데 아래의 방법을 따른다.

생성자 구현코드에서 : 다음의 node_handle_("")가 무엇인지 궁금했다.

출처 : https://wikidocs.net/17145

 

nodehandle의 역할

node간의 통신을 위해서 ROS1에서는 masternode에 등록하고 이 후 노드간의 직접적인 통신이 가능해지는데 이를 위한 과정을 nodehandle이 수행한다.

출처 : https://enssionaut.com/board_robotics/942

 

 

termios 구조체 : 터미널 속성을 변경시는 기능

생성자, 소멸자 구현 구문에서 멤버함수 초기화. 해당 함수가 어떤기능이 있는지 아래에서 볼 수 있다.
termios의 내장함수 tcsetattr인 것 같다.

해당 블로그를 통해서 termios의 tcsetattr이 터미널의 속성을 변경시킨다는 것을 알게되었다.

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=choi125496&logNo=130034222760

 

그리고   newt.c_lflag &= ~( ICANON | ECHO ); 가 입력과 동시에 터미널에 전달되게 하는 코드임을 알게되었다.
출처: https://toughrogrammer.tistory.com/217 [터프 프로그래머]

 

open_manipulator_teleop_keyboard.cpp코드에서 생성자를 통해서 멤버 이니셜라이저를 수행하며 특히 생성자에서 disableWaitingForEnter를 통해 바로 터미널이 입력받을 수 있게 하고 restore~함수를 통해 이전 값을 입력시킨다. 아직 oldt_가 무엇인지는 잘 모르겠다.

 

open_manipulator_teleop_keyboard.cpp [line 48-83]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

댓글