본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 정주광 #2주차 - ROS 명령어 및 도구

반응형

Chapter 4) ROS의 중요컨셉

 

ROS 용어 정리

 

      •   Node : 최소 단위의 실행 가능한 프로세서. 하나의 실행 가능한 프로그램

      •   Package : 하나 이상의 노드를 묶어 놓아 실행을 위한 정보를 묶어 놓은 것

      •    Message : 메시지를 통해 노드간의 데이터를 주고 받음

다양한 메시지 방식이 있으며 대표적으로 Topic, Service, Action

 

      •    Publisher : 메시지를 보내는 주체

      •    Subseriber : 메시지를 받는 주체

      •    Topic : 단방향 메시지 통신 방식으로 1:1, 1:N, N:N, N:1 통신 가능(연속성)

 

    •    Service : 양방향 메시지 통신(일회성)

    •    Action: Service 방식과 비슷하나 중간결과가 전달되는 피드백이 존재

        복잡하거나 수행시간이 오래걸릴 때  중간의 결과값이 필요할 때 사용

 

 

메시지 통신 개념

 

 ROS에서 최소한의 실행단위로 프로그램을 나누어 작업하며 다음 순서로 동작을 넘어가게 하도록 연동하기 위해서는 통신이 필요하고 이를 메시지 통신이라고 한다.

             

         •      마스터 구동: 각 실행되는 노드 정보를 관리  

               -      $ roscore (무조건 1번 실행)

         •      서브스크라이버 노드 구동 : 노드 정보(노드 이름, 토픽 이름, 메시지 형태, ip정보,포트 번호)를 마스터한테 전송

               -      $rosrun 패키지이름 노드이름

         •      퍼블리셔 노드 구동 : 마스터는 서브스크라이버 노드에게 새로운 퍼블리셔 정보를 알림  

         •      퍼블리셔 노드에 접속 요청 : 마스터로부터 받은 퍼블리셔 정보를 이용해 TCPROS 접속 요청

         •      서브스크라이버 노드에 접속 응답 : 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호 전송

         •       TCP 접속 : TCPROS를 이용해 퍼블리셔 노드와 직접 연결(노드12가 연결됌)

         •      메시지 전송(서비스 요청 및 응답)

                Ex) /turtle1/cmd_vel

네임(Names)

       •      노드, 메시지(토픽, 서비스, 액션,파라미터) 가지는 고유의 식별자

       •      ROS는 그래프라는 추상 데이터형태지원

       •      글로벌

              -  문자 없이 네임을 바로 쓰거나 네임 앞 슬래쉬(/)를 붙인다.

       •      프리베이트

             -  네임 앞에 틸트(~)를 붙인다.

좌표 변환(Transform)

      •      각 조인트 상대좌표 변환

 

Chapter 5) ROS 명령어

ROS 셸 명령어

     •      roscd: 지정한 ROS 패키지의 디렉터리로 이동

     •      rosls : ROS 패키지의 파일 목록 확인

     •      rosed : ROS패키지의 파일 편집

     •      roscp : ROS패키지의 파일 복사

     •      rospd : ROS 디렉터리 인덱스에 디렉터리 추가

     •      rosd: ROS 디렉터리 인덱스 확인

 

ROS 실행 명령어 

    •      roscore

       - master(ROS 네임 서비스)

       - rosout(로그 기록)

       - parameter server(파라미터 관리)

    •      rosrun : 노드 실행

    •      roslaunch : 노드를 여러 개 실행 및 실행 옵션 설정

    •      rosclean: ROS로그 파일을 검사하거나 삭제

 

ROS 정보 명령어

    •      rostopic : ROS 토픽 정보 확인

    •      rosservice : ROS 서비스 정보 확인

    •      rosnode : ROS 노드 정보 확인

    •      rosparam : ROS 파라미터 정보 확인, 수정

    •      rosbag : ROS 메시지 기록, 재생

    •      rosmsg : ROS 메시지 정보 확인

    •      rossrv : ROS 서비스 정보 확인

    •      rosversion : ROS 패키지 및 배포 리릴즈 버전 정보 확인

    •      roswtf : ROS 시스템 검사

 

ROS catkin 명령어

    •      catkin_create_pkg : 패키지 자동 생성

    •      catkin_make : 캐킨 빌드 시스템에 기반을 둔 빌드

    •      catkin_eclipse : 캐킨 빌드 시스템으로 생성한 패키지를 이클립스에서 사용할 수 있게 변경

    •      catkin_prepare_release : 릴리즈할 때 사용되는 로그 정리 및 버전 태깅

    •      catkin_generate_changelog : 릴리즈할 때 CHANGELOG.rst 파일 생성 또는 업데이트

    •      catkin_init_workspace : 캐킨 빌드 시스템의 작업폴더 초기화

    •      catkin_find : 캐킨 검색

 

ROS 패키지 명령어

   •      rospack : ROS 패키지와 관련된 정보보기

   •      rosinstall : ROS추가 패키지 설치

   •      rosdep : 해당 패키지의 의존성 파일 설치

   •      roslocate : ROS 패키지 정보 관련 명령어

   •      roscreate-pkg : ROS 패키지 자동 생성

   •      rosmake : ROS패키지를 빌드

Chapter 5) ROS 도구

 

Rviz :센서 및 로봇관련 데이터 시각화 매우 간단

   -      ROS3D시각화 툴

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

   -      내비게이션

   -      매니퓰레이션(로봇 암 조정)

   -      원격제어

 

사용 예) KinectPoint Cloud Data

 RGBD 센서로 거리값을 Point Cloud Data로 나타내며, 3차원으로 빨간색이 카메라부터 가깝고 보라색이 거리가 멀다.

사용 예) 라이다

센서구동 > 레이저를 투사하고 > 2차평면의 각거리의 값을 RGB 데이터로 표현

 

사용 예) 초음파 센서

레이저보다는 해상도가 떨어지지만 사물의 위치여부를 파악가능하다.

 

사용 예) IMU(Inertial Measurement Unit) 관성 측정 장치

물체가 기울어진 각도를 정확하게 측정하는 것. 드론의 자세나 균형을 맞추기 위해서 많이사용

 

Rviz 설치 및 실행

        • Rviz 설치

             -      $ sudo apt-get install ros-kinetic-rviz

        • Rviz 실행

             -      $ rosrun rviz rviz

 

RQT  

        GUI 형태로 ROS를 이용가능하고 GUI Tool 제작 간단

  -      $ rqt입력으  RQT 실행

$ rqt_graph를 통해서 현재 노드에 구동되고 있는 노드를 알 수 있고 노드와 노드 사이의 메시지 정보를 알 수 있다. 많은 노드들 사이에서 노드에 대한 정보를 한눈에 확인하기 좋은 것 같다.

 

Gazebo

3차원 시뮬레이션을 위한 로봇, 센서, 환경 모델등을 지원하며 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터로 ROS와 연동이 좋다.

반응형