로봇의 오도메트리, TF, 센서 정보 등을 실시간 시각화를 통해 3D 시뮬레이션을 할 수 있다.
Rviz에 가상의 터틀봇3를 불러온다.
터틀봇3 원격 조종 키 실행한다.
image.png
터틀봇3의 노드 그래프
터틀봇3의 TF Tree
터틀봇3의 오도메트리 실시간 정보
(원격 조종 키를 사용하면 오도메트리를 시각화해서 볼 수 있고 값을 rostopic echo를 통해 실시간으로 확인할 수 있다.)
4. SLAM(Simultaneous Localization And Mapping)
SLAM을 할 때 지도의 작성과정을 시각적으로 보여준다.
가상 환경 불러오기
image.png
터틀봇3 SLAM 실행
image.png
터틀봇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로부터의 위치
Jointjoint : 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 링크 관계정보 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로 가져오기