5장 ROS 도구 활용하기
1. RQT(QT-based framework for GUI development for ROS)
1. 1 Graph
현재 ROS상의 노드와 메세지간의 정보를 그래프형식으로 보여준다.
터틀심 노드 실행
rosrun turtlesim turtlesim_node터틀심 원격조종 노드 실행
rosrun turtlesim turtle_teleop_key노드 그래프 생성
rqt_graph
2. Plot
메세지의 값에 대해 plot을 그리게 해준다.
rosrun turtlesim turtlesim_noderosrun turtlesim turtle_teleop_keypose 메세지 plotting
rqt_plot /turtle1/pose/
터틀심 노드의 pose 메세지 값
터틀심 노드의 pose - time plot
3. Rosbag
메세지를 기록, 저장, 재생할 수 있게 해준다.
원하는 디렉토리에 다음 명령어를 실행하면 rosbag 파일이 기록된다. (ctrl+c로 기록을 종료할 수 있다.)
rosbag파일의 정보를 보여준다.
rosbag 파일을 재생한다.(기록된 메세지를 시간순서대로 퍼블리시한다.)
rosbag 파일을 2배속도로 재생한다.
특정 메세지만 저장할 수 있다.(subset 파일에 저장된다.)
참고자료 : http://wiki.ros.org/rosbag/Tutorials/Recording%20and%20playing%20back%20data
4. Custom plugins
그 외 유용한 RQT plugin
Easy Message Publisher : 현재 토픽 리스트에 올라온 토픽 메세지를 GUI상에서 메뉴얼로 퍼블리싱 가능하게 해준다.
Topic Monitor : 현재 토픽들의 값과 통신 속도를 실시간으로 모니터링 할 수 있다.
5. Own plugins
자신만의 GUI와 기능을 갖는 plugin을 개발해 RQT상에서 사용할 수 있다. 참고자료 : http://wiki.ros.org/rqt/Tutorials/Writing%20a%20Python%20Plugin
Rviz(ROS-visualization)
1. IMU 센서
2. Kinect
참고자료 : https://m.blog.naver.com/rmlee/221471760129 , 이상우님
3. Simulation
로봇의 오도메트리, TF, 센서 정보 등을 실시간 시각화를 통해 3D 시뮬레이션을 할 수 있다.
Rviz에 가상의 터틀봇3를 불러온다.
터틀봇3 원격 조종 키 실행한다.
터틀봇3의 노드 그래프
터틀봇3의 TF Tree
터틀봇3의 오도메트리 실시간 정보
(원격 조종 키를 사용하면 오도메트리를 시각화해서 볼 수 있고 값을 rostopic echo를 통해 실시간으로 확인할 수 있다.)
4. SLAM(Simultaneous Localization And Mapping)
SLAM을 할 때 지도의 작성과정을 시각적으로 보여준다.
가상 환경 불러오기
터틀봇3 SLAM 실행
터틀봇3 원격 조종 키
SLAM이 끝난 뒤 완성된 Map
Map 저장
저장된 Map
가상 내비게이션 with Gazebo
- map 사

5. URDF
Unified Robot Description Format : ROS에서 사용되는 로봇 기술(Description) 형식 * URDF(Unified Robot Description Format) vs SDF(Simulation Description Format)
URDF는 하나의 robot 모델에 대해 기술하는 양식. 시뮬레이션 world 상에서 robot의 pose를 결정할 수 없다.
SDF는 world 상에서 여러개의 robot 모델에 대해 pose를 정의할 수 있으며 모델←→센서←→ World 의 관계에 대한 속성 정의도 가능하다.
쉽게 말해 서빙 로봇 서비스가 있는 매장에서 URDF는 서빙 로봇 하나의 도면!, SDF는 매장 전체 시스템의 도면!
1) URDF turtial 1 - URDF 이해하기
Link
link : 모델 상의 하나의 Body(바퀴, 링크, 실린더, 구 등)
visual : link 요소의 시각화 (.dae, .stl 지원)
collision : link 요소 간의 충돌을 확인하기 위한 geometry (.dae, .stl 지원)
inertial : link의 동적 속성 기술(질량, 관성 모멘트 등)
origin : link 모델 중심의 joint로부터의 위치
Joint
joint : link간의 구속관계 표현parent/child : link 간 구속관계에서 부모/자식 관계type : 관계의 종류(prismatic, revolute, continuous 등)axis : joint 축의 방향limit : joint의 이동가능 범위 제한origin : joint의 원점으로부터의 위치sensor : plugin을 통해 가상 world로부터의 센서 데이터를 취득material : link의 소재, 색상 등을 결정plugin : 모델을 제어하기 위한 controller 등 다른 플랫폼과 토픽/프레임을 공유하기 위한 수단
URDF 작성연습을 위해 시각화는 urdf_tutorial의 launch를 사용한다.
urdf_tutorial의 urdf 디렉토리에 다음 파일을 작성한다.
URDF 기본구조
Rviz에 URDF로 작성한 모델을 시각화한다.
URDF로 작성한 모바일 로봇 모델
Joint 컨트롤러
2) URDF tutotial 2 - 나의 모델 불러와 Rviz에 시각화하기
새로운 URDF 작성
stl파일 불러오는 URDF
예제 stl파일 가져오기(urdf 디렉토리에 저장)
Rviz로 시각화
3) URDF tutorial 3 - 3D모델에 물리적 특성 입히기
참고자료(관성 텐서 구하기) : https://en.wikipedia.org/wiki/List_of_moments_of_inertia#List_of_3D_inertia_tensors
물리적 특성(collision, inertial) 반영된 URDF
Rviz로 시각화
4) URDF tutorial 4 - URDF Check
URDF Check tool 다운로드
URDF 링크 정합성 체크
URDF 링크 관계정보
URDF 링크 관계정보 시각화
URDF 링크 관계정보 pdf로 저장
URDF 링크 관계정보 시각화
5) URDF tutorial 4 - Xacro 이용하여 URDF 쉽게 작성하기
Xacro(XML Macro)를 사용한 URDF 작성
Xacro 실행하기 위해 반드시 추가해야하는 Command
6. URDF tutorial 7 - SDF Converter
6. manipulator (TBU)
Gazebo
1. URDF로 만든 3D 모델 Gazebo에 불러오기
URDF를 Gazebo 환경으로 불러오기 위해선 다음과 같은 작업이 필요하다.1) Gazebo plugin 추가2) 몇 가지 추가 정보 URDF에 입력(joint limit, transmission 정보, 물리 계수)3) Controller configuration 작성4) Launch file 작성 1) Gazebo plugin 추가
URDF 마지막 부분에 다음의 gazebo plugin 추가
2) 몇 가지 추가 정보 URDF에 입력(joint limit, transmission 정보, 물리 계수)
joints 수정 및 transmission 추가
최종 수정된 URDF
3) Controller configuration 작성
urdf_tutorial 디렉토리에 config 디렉토리를 생성하여 controller config 문서 생성(.yaml)
joints.yaml
caster.yaml
diffdrive.yaml
4) Launch file 작성
gazebo_launch를 이용하기 위해 해당 launch파일을 urdf_tutorial/launch로 가져오기
우리가 만든 모델을 Gazebo와 Rviz에서 사용하기 위한 launch 파일 작성
2. SDF로 만든 3D 모델 Gazebo에 불러오기
https://github.com/modulabs/gazebo-tutorial/wiki/Make-a-Mobile-Robot SDF를 Gazebo 환경으로 불러오기 위해선 다음과 같은 작업이 필요하다.1) 모델 directory 설정2) 모델의 구조 생성3) Gazebo에서 모델 불러오기 1) 모델 directory 설정
모델 폴더를 생성
모델 config 파일을 생성
config 파일에 다음 코드를 작성
SDF 파일을 생성
SDF 파일에 다음 코드를 작성
2) 모델의 구조 생성
SDF 파일을 실행
모델의 static을 설정
static이 true이면 물리엔진의 영향을 받지 않고 false이면 물리엔진의 영향을 받음
모델에 사각형 베이스 추가
모델에 구 형상의 바퀴 추가
모델에 왼쪽 바퀴 추가
모델의 왼쪽 바퀴를 오른쪽으로 복사
static을 false로 설정, 왼쪽, 오른쪽 바퀴에 hinge 추가
3) Gazebo에서 모델 불러오기
Gazebo 실행
모델 Insert
Gazebo 실행 후 GUI 인터페이스 왼쪽 상단의 Insert 탭 클릭
'My Robot' 모델 클릭
메인 화면에서 모델을 배치할 위치에 마우스를 위치시키고 클릭
모델 작동 테스트
화면 오른쪽 작은 점 3개 버튼을 클릭한 상태로 마우스를 왼쪽으로 이동시켜 Joints 탭 활성화
'left_wheel_hinge'와 'right_wheel_hinge'를 각각 0.1N 씩 포스 입력
모델이 움직이는 모습을 확인 할 수 있음
Last updated
Was this helpful?