본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 반제호 #2주차 - ROS의 컨셉과 RViz

반응형

#1 ROS의 컨셉

1. ROS의 용어

  • Node - 최소 단위의 실행 가능한 프로세서. ROS에서는 최소한의 실행단위로 프로그램을 나누어 작업함
  • Package - 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것
  • Message - 노드간의 데이터를 주고받게 해줌. interger, floating point, boolean 와 같은 변수형태
  1. Publisher 는 Topic을 Subscriber에게 일대일이나 일대다로 전송할 수 있다. <Topic은 단방향>
  2. Service server와 Service client는 양방향으로 통신 가능
  3. Action server와 Action client는 Service와 비슷하지만 중간에 피드백을 할 수 있다. 많이 쓰진 않음

2. 메시지 통신 개념

메시지 통신

 

메시지 통신은 노드간의 메시지 통신인 ROS에서 가장 기본이 됨.

  1. 마스터 구동 : $roscore
  2. 서브스크라이버 노드 구동 : $rosrun 패키지이름 노드이름
  3. 퍼블리셔 노드 구동 : $rosrun 패키지이름 노드이름
  4. 퍼블리셔 정보 알림
  5. 퍼블리셔 노드에 접속 요청
  6. 서브스크라이버 노드에 접속 응답
  7. TCP 접속
  8. 메시지 전송<Topic 방식에서는 접속을 끊지 않는 이상 메세지를 지속적으로 전송>
  9. 서비스 요청 및 응답

3. ROS 메시지

여러가지 데이터의 형태

 

  • 토픽, 서비스, 액션은 모두 메시지를 사용
  • 단순 자료형 : 정수, 부동 소수점, 불(boolean)
  • 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 : geometry_msgs/PoseStamped
  • 메시지들이 나열된 배열과 같은 구조 : ex) float32[] ranges

4. Name, TF, Client Library, 이기종 디바이스 간의 통신

  • 네임 : 노드, 메시지(토픽, 서비스, 액션, 파라미터)가 가지는 고유의 식별자. ROS는 그래프라는 추상 데이터 형태 지원
  • 좌표 변환(TF) : 각 조인트들의 상대 좌표 변환
  • 클라이언트 라이브러리(Client Library) : 다양한 프로그래밍 언어 지원
  • 이기종 디바이스 간의 통신

 

#2 ROS 명령어

  1. Command-Line Tools : rospack, roscd, rospd, rosls 등등
  2. ROS 셸 명령어 : roscd(지정한 ROS 패키지의 디렉터리로 이동), rosls, rosed, roscp
  3. ROS 실행 명령어 : roscore, rosrun, roslaunch, rosclean
  4. ROS 정보 명령어 : rostopic, rosservice, rosnode, rosparam, rosbag
  5. ROS catkin 명령어 : catkin_create_pkg, catkin_make, catkin_eclipse

 

#3 ROS 도구

1. RViz (ROS Visualization Tool)란?

- ROS의 3D 시각화툴 : 카메라의 영상 데이터, 거리 데이터, 관성 데이터 등을 시각화함

- 로봇 외형의 표시와 계획된 동작을 표현

- 내비게이션, 매니퓰레이션, 원격 제어

 

* RViz를 이용한 카메라, 라이더, 모델링, 내비게이션, 재난구조로봇 예시 영상 시청

- RViz 설치 : sudo apt-get install ros-kinetic-rviz

 

2. RViz 실행

- rosrun rviz rviz 입력

RVIz 실행 화면

 

디스플레이 추가

 

3. RQT: 플러그인 방식의 ROS의 종합 GUI 툴

- RQT 실행 : $rqt

RQT 실행 화면

 

RQT 실습 : rqt_plot

 

4. Gazebo

- 로봇 개발에 필요한 3차원 시뮬레이션을 위한 로봇, 센서, 환경 모델 등을 지원하고 물리 엔진을 탑재하여 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터

 이상으로 2주차 스터디 끝!

 

반응형