본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 박주빈 #2주차 - ROS

반응형

Chapter  4. ROS의 중요 컨셉

 

 4-1 ROS 용어

 

  - Node최소 단위의 실행 가능한 프로세스를 가리키는 용어로 하나의 실행 가능한 프로그램
  - Package하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어놓은 것
  - Message노드 간 데이터를 주고받을 때 사용하는 데이터의 형태
    ↳ Topic(단방향, 연속성), Service(양방향, 일회성), Action(양방향, 피드백), Parameter

 

Message중 Topic에 관한 설명

 

Message중 Service에 관한 설명

 

Message중 Action에 관한 설명

 

 4-2 메시지 통신

 

   ROS에서 가장 기본이 되는 기술 요점은 노드간의 메시지 통신이다.

 

노드 간 메시지를 주고 받는 방법

   

   1. 마스터 구동 (roscore)
   2. Subscriber Node 구동 (rosrun turtlesim turtlesim_node)
   3. Publisher Node 구동 (rosrun turtlesim turtle_teleop_key)
   4. 마스터가 Publisher Node 정보를 Subscriber Node에게 알림
   5. Subscriber Node가 마스터로부터 받은 Publisher Node 정보를 이용하여 TCPROS 접속을 요청
   6. 접속 응답에 해당되는 Publisher Node의 TCP URI 주소와 포트번호를 Subscriber Node에게 전송
   7. TCPROS를 이용하여 Publisher Node와 Subscriber Node가 직접 연결
   8. Publisher Node는 Subscriber Node에게 메시지를 전송

 

 

turtlesim 예제 적용

 

Chapter  5. ROS 명령어

 

 지속적으로 사용하는 Command-Line Tools를 보면 다음과 같다.

 

  - rospack (ROS 패키지와 관련된 정보 보기)

  - roscd (지정한 ROS 패키지의 디렉터리로 이동)

  - rospd (ROS 디렉터리 인덱스에 디렉터리 추가)

  - rosls (ROS 패키지의 파일 목록 확인)

  - rosed (ROS 패키지의 파일 편집)

  - roscp (ROS 패키지의 파일 복사)

  - rosdep (해당 패키지의 의존성 파일 설치)

  - roswf (ROS 시스템 검사)

  - catkin_create_pkg (패키지 자동 생성)

  - wstool

  - catin_make (catkin 빌드 시스템에 기반을 둔 빌드)

  - roscore (master, rosout, parameter server 실행)

  - rosrun (노드 실행)

  - roslaunch (노드를 여러 개 실행 및 실행 옵션 설정)

  - rosnode (ROS 노드 정보 확인)

  - rostopic (ROS 토픽 정보 확인)

  - rosservice (ROS 서비스 정보 확인)

  - rosparam (ROS 파라미터 정보 확인 및 수정)

  - rosmsg (ROS 메시지 정보 확인)

  - rossrv (ROS 서비스 정보 확인)

  - rosbag (ROS 메시지 기록 및 재생)

  - tf_echo

 

Chapter  6. ROS 도구

 

 로봇 개발에 필요한 다양한 개발 도구를 알아보면 다음과 같다.

 

  - Command-Line Tools

   • GUI 없이 ROS에서 제공되는 명령어로만 로봇 엑세스 및 거의 모든 ROS 기능 소화

 

  - RViz

   • 강력한 3D 시각화툴 제공

   • 레이저, 카메라 등의 센서 데이터를 시각화

   • 로봇 외형과 계획된 동작을 표현

RViz

 

  - RQT (GUI)

   • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임 워크 제공

   • 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅(rqt_plot)

   • 노드와 그들 사이의 연결 정보 표시(rqt_graph)

   • 데이터를 메시지 형태로 기록하고 재생(rqt_bag)

rqt_image_view 실습
rqt_plot 실습

 

rqt_graph 실습

 

  - Gazebo

   • 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터

   • ROS와의 높은 호완성

 

에러 모음

 

 Chapter 6, rqt_image_view 실습 중 다음과 같은 에러가 발생했다.

 uvc_camera를 깔면 해결될 일이다. 다음 블로그에서 설명해주는 코드에서 kinetic을 melodic으로만 바꿔주면 된다.

 https://doongdoongeee.tistory.com/20

 

ROS로 카메라 사용하기(영상 확인)

우선 본인 pc에 카메라가 연결되어 있는지 확인한다. 그리고 일반 카메라는 UVC를 지원하므로 ROS의 uvc_camera 패키지를 이용한다. 아래의 코드를 이용하여 uvc_camera 패키지를 설치하여주자. $ sudo apt-

doongdoongeee.tistory.com

 

반응형