F1tenth Tutorial-01,02

Hyun Ho An·2024년 1월 10일

F1tenth-Lecture 정리

목록 보기
1/2

원래는 논문을 통해서 Autonomous RaceCar의 아키텍처부터 공부를 하려하였으나, F1tenth에서 제공하는 강의에서 많은 정보들을 얻을 수 있을 것같아 실습과 같이 진행할 수 있어 먼저 강의를 수강하고 정리하려한다.

[Tutorial01 - Using Simulation]

Contents

  • What is simulation
  • Why use?

첫번째 튜토리얼은 이게 끝이다....

1. 시뮬레이션이 뭔가?

  • C++과 RViz를 이용하여 ROS로 구성된 2D 시뮬레이터
  • Laser scan과 odometry로 Mation과 Collision 구현
  • Manual Control

2. 왜 시뮬레이션을 사용하는가?

  • More portable
  • Faster Setup
  • Faster prototyping
  • Safer Driving
  • Sim to Real

[Tutirial02 - Working with Simulator]

Contents

  • Setup of Ros Node
  • How to add new motion planner in sim
  • Combining planner for more complex racing Strategies

4번째의 Planner를 Combine한다는 것이 이해가 안되었는데 이 후 LAB1에서 다루게 된다.

1. Ros Review

Ros에는 세가지 구성요소가 있는데, Node와 Topic, Messaged이다.
튜토리얼에서는

  • Node: 다른 노드와 통신이 가능한 파일
  • Topic: 노드는 토픽에 메시지를 주고 받을 수 있다.
  • Message: Topic을 통해 Ros data를 통신하는 것.

이라고 설명하였는데 말이 조금 어려운 것 같아 이전에 공부했던 아주 기초적인 TurtleSim으로 다시 설명하자면,

[Node]

Node는 소스 코드를 실행했을때 생성되는 것이다.
ex) 거북이를 띄어주는 창, 거북이를 키보드로 조작할 수 있게 하는 노드

[Topic]

위 예시의 노드를 실행하면 실행하면 키보드로 거북이를 조작하고, 거북이가 화면에서 움직이게 된다.
키보드의 입력을 주는 여기서 말하는 'Topic'이 자연스럽게 필요하게 된다.
Topic은 Node에서 생성되는 정보라고 말하는 것이 쉬울 것같다.

먼저, 아래와 같이 시스템이 동작할 것이다.
/Teleop_turtle(Node) -> /turtle1/cmd_vel(Topic) -> /Turtle_sim(Node)
이러한 토픽의 정보는 여러 Node에서 사용될 수 있다.
ex)/laser_scan 토픽은 Slam에서도 사용되고, Obstacle aviod에서도 사용될 수 있다.

[Message]

위를 이해하였다면 Message는 아주 쉽게 이해가 될 것이다.
이는 Topic에서 생성되는 말 그대로 'Message'이다.
위의 예시와 같이 키보드를 조작하는 토픽의 메세지이면, x,y,z의 이동에 관한 Message일 것이다.

[Publisher, Subscriber]

여기서 조금 더 설명하면 Publisher와 Subscriber의 개념이다.

  • Publisher는 Node에서 Topic을 생성하는 친구
  • Subscriber는 Topic에서 Message를 전달받아 기능을 수행하는 친구

Simulation

노드와 토픽, 메세지를 이해했다면 시뮬레이션을 살펴보겠다.

위의 그림은 F1tenth Lecture에서 제공하는 사진이다.
여기서 위에서 설명한대로 Begavior Controller, Joystic 등등 노드가 보이고,
이러한 노드들이 /mux,/joy와 같은 토픽을 생성해 Mux에 Massage를 전달한다.

처음에 Mux가 뭔지 몰랐는데, 이것은 많은 Planner의 입력이 들어오면 하나의 출력을 선택하게 된다.
Mux가 선택하게되는 기준은 Behavior Controller에서 Listen하여, 하나의 drive message를 Publish하게 된다.

이 시뮬레이션은 Bicycle model dynamic으로 구성되었고,
Collision이 발생하면 어떠한 massage도 mux에서 허용되지 않는다.

※Bicycle model※
이전에 논문에서 공부한 경험이 있는 Bicycle model이다.

위는 Bicycle model의 샘플 사진이다. 이러한 형식으로 네 개의 바퀴가 존재하는 차량이지만, 중간에 두개의 바퀴로 가정하여 모델링한 것이다.
이렇게 모델링을 함으로써, ackerman steering에 대한 계산이 없어지므로 굉장히 단순해진다.

▶Future Work
위에서 Planenr Combine에 대해서 궁금증이 있다고 언급하였는데, 이는 LAB1,2에 설명이 있어서 학습 후에 정리하도록 하겠다.

profile
한국해양대학교/인공지능공학부

0개의 댓글