본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 최지웅 #2주차 - ROS 용어

반응형

 2주차 ROS 스터디

 

 Chapter4. ROS의 중요 컨셉

 

* ROS 용어 정리!

1) Node 

 - 최소 단위의 실행 가능한 프로세서. ex) 안면 인식를 해서 출입문을 여는 보안시스템에서 얼굴을 인식하는 노드, 각각의 필터로 보안 검사하는 각각의 노드로 나눠진다.  장점:  자신에게 필요한 일부분의 노드들을 가져다 쓸 수 있다. 프로그램을 노드들로 잘게 쪼개서 가져다 쓸 수 있다. 각각의 노드가 개별적이기에 서로 연동해줘야 된다. 이것이 메시지 통신이다

 

2) Package: 하나 이상의 노드, 노드 실행을 위해 정보를 묶어 놓은 것. 

위의 보안시스템에서 각각의 노드를 묶어서 보안검사를 할 수 있게 된 것이 패키지다. (한개의 패키지 안에 최소 2~3개의 노드)

 

3) Message: 메시지를 통해 각각의 노드간의 데이터를 주고 받는다. 

 

4) Message의 목적에 따라 분류

- Topic(단방향 연속적 publisher->subscriber) 주로 센서 데이터 사용(끝내라는 신호 돌때까지 연속적) 90%사용(많이 사용됨)

- Service(양방향 일회성 server <-> client) 서버의 요청과 클라이언트 동작의 상호 통신(한번 끝나면 끝 일회성) 

- Action 어떤 것을 했고 못했는지 결과 값을 전달(중간에 피드백 있다) 복잡한 테스트에서 사용

 

* 메시지 통신 개념

1. roscore을 통해 마스터 구동(서버 구동)

2. subscriber 노드 구동 (마스터서버에 정보 전달)

3. publisher 노드 구동 (마스터서버에 정보 전달)

4. 마스터가 subscriber는 마스터서버를 통해 publisher 정보를 받는다. 이후에 서로 접속 응답을 한다.

5. 이후 메시지 통신 실행(마스터서버 필요없어진다)

ex) rosrun turtlesim turtlesim_node 의 의미: 노드를 실행시켜라. 어떤 패키지안에(turtlesim). 어떤 노드를(turtlesim_node)

     키보드에 해당되는 병진속도 회전속도 값을 메시지로 전송받아서 프로그램이 구동된다.

 

Chater 5. ROS 명령어

 

1. roscd : 지정한 ROS 패키지로 이동한다.

2. roscore: master 실행, rosout(로그 기록), 파라미터 관리 

3. rosrun: 노드 하나를 실행

4. roslaunch: 복수의 노드를 한꺼번에 실행

5. rosclean: ROS로그파일을 검사/삭제

등등 여러 ROS 명령어들이 많은데 직접 실습을 하면서 어떤 역할을 하는지 알아봐야될 것 같다.

 

Chapter 6. ROS도구

 

- RViz(ROS visualization tool)

다양한 센서의 값들을 시각화 하는 툴/ URDF로 기술하면 RViz로 시각화 할 수 있다/ 네비게이션,매니퓰레이션을 할때 

활용/ 원격제어

ex) 카메라로 모습 측정을 하며 거리에 따른 색상으로 표현. 레이더 센서.

영상을 보며 느낀게, RViz가 정말 다양한 곳에서 사용할 수 있다는 것을 느꼈고 굉장히 흥미로웠다. 

 

RViz실행 모습

RViz를 실행할때 그냥 rviz를 치면 된다.(그전에 roscore을 먼저 쳐줘야된다.)

 

** UBUNTU 창이 너무 작아서 보기가 힘들어서 창 크기 늘리는 법을 검색하고 늘려줬다.

https://blog.naver.com/shdyddbs/222217844206

 

[Linux] 화면 크기 조정(VirtualBox, Ubuntu)

VirtualBox에 Ubuntu를 깔아서 실행하는데 화면 크기가 고정이라서 아래 사진처럼 회색의 빈 공간이 생...

blog.naver.com

위 블로그를 참고해서 창 크기를 늘려주자(RViz를 편하게 보려면 필수인듯 싶다)

뿌듯하다 ㅎㅎ

RViz를 사용하면 센서 및 로봇 관련 데이터의 시각화가 편리하다. (로봇특화 소프트웨어)

 

- RQT (GUI 형태로 ROS이용가능/ GUI 툴 제작 편리)

rqt또한 rqt를 쳐주면 실행이 된다.

rqt 실습을 진행해보았다.

 

1주차때 했던 거북이 생성하고 그것을 응용해서 정보를 시각화하는 실습인것 같았는데 uvc camera package가 없다고 해서 열심히 구글링 했더니

https://doongdoongeee.tistory.com/20
띠로리..ㅜ

설치는 잘 됐는데, 버츄얼 박스에서 웹켐인식이 안되는지 열수가 없다고 나온다. rqt를 통해 노드를 확인하고 노드들 사이에서의 메시지를 확인 할 수 있다.

 

이후, 다음 실습을 진행해 봤다.

**ctrl c/v가 안돼서 sudo apt-get install open-vm-tools-desktop을 설치해줬다.

거북이의 경로를 조정하고 거북이의 각속도,속도,x/y축 값들을 보았다.

성공했다! RQT를 통해 거북이의 현재 속도(각속도 병진운동 속도) 및 x/y축 성분들을 그래프로 시간에 따라 볼 수 있었다.

 

- Gazebo

 물리엔진을 탑재하여 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터& Ros와의 호환성이 좋다

    -> 3차원 시뮬레이션이 필요하다면 ROS와 연동이 편리한 Gazebo 사용

 

 

 

이렇게 2주차 ROS스터디를 끝냈다! 이번 주차는 이론적이 더 많았던 것 같다. 1주차때 보다 용어들에 대해서 많이 배우고 어떤 의미인지 알게돼서 기쁘다

 

 

반응형