본문 바로가기

ROS

[ROS] Move Base (2) Velocity & Acceleration

Velocity와 Acceleration에 대한 이해의 필요성

local planner가 global path와 odom, local costmap을 가지고 cmd_vel을 준다. 여기서 cmd_vel은 로봇의 linear velocity와 angular velocity가 합쳐진 형태이다.

여기서 로봇이 낼 수 있는 최대 linear velocity와 angular velocity가 존재 할 것이고, 이와는 별개로 로봇이 제어 가능한 초대 linear velocity와 angular velocity가 존재한다. 또한, 로봇이 가속할 수 있는 정도 또한 알고 있어야 한다. (갑자기 멈춰있는 로봇에게 0.1초안에 1 m/s로 움직이라 하는 건 말이 안된다.)

navigation에서는 이러한 constraint를 모두 이해하고 있는 상태에서 robot control에게 cmd_vel을 내려 줘야 상식적으로 맞는 절차이다. 에초에 robot control 영역에서 안되는 영역을 책임져 달라하고 안된다고 탓하는ㅡ건 말이 안된다.

이러한 constraint를 지키기 위해 move base에는 다음과 같은 parameter들이 존재한다.

Move base parameters

  • min_vel_x
    • 로봇의 x축 방향 (non-holonomic robot 기준 직진)으로 최소 속력
      • 로봇이 제어 가능한 최소 속도이다.
  • min_vel_y
    • 로봇의 y축 방향으로의 최소 속력이다.
      • non-holonomic robot은 y축 방향으로 진행이 불가능 하기 때문에 0으로 설정해야 한다.
  • max_vel_x
    • 로봇의 x축 방향으로의 최대 속력
      • 로봇이 제어 가능한 최고 속도이다.
  • max_vel_y
    • 로봇의 y축 방향으로의 최대 속력이다.
      • non-holonomic robot은 0으로 세팅하자.
  • acc_lim_x
    • 로봇의 x축 방향으로의 최대 가속도(절대값)이다.
      • 최소는 없다(0이 최소다...)
  • acc_lim_y
    • 로봇의 y축 방향으로의 최대 가속도이다.
      • non-holonomic robot은 역시나 0
  • min_vel_theta
    • 로봇이 회전할 때 최소 속도이다.
  • max_vel_theta
    • 로봇이 회전할 때 최대 속도이다.

 

이러한 값들을 로봇 제어하는 팀에게 요청을 하여 값을 받아 내거나, 아니면 직접 telop를 이용해 로봇을 움직이면서 측정할 수 있다. telop를 이용하면, 로봇의 odom데이터를 가지고 로봇의 속도를 계산해서 로봇이 최대로 움직일 수 있는 속도와 가속도를 측정하면 된다.

'ROS' 카테고리의 다른 글

[ROS] Move Base (4) Global Planner 개념  (0) 2022.02.21
[ROS] Move Base (3) Move Base Code 분석  (0) 2022.02.21
[ROS] Move Base (1) Navigation Stack  (2) 2022.02.18
[ROS] XmlRpc 사용법  (0) 2022.02.14
[ROS] plugin 사용법  (0) 2022.02.14