ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Processing Algorithm] Autonomous Agents 자율 주행 02 ~처럼
    카테고리 없음 2020. 2. 20. 19:41

    자율 주행 Part.2도착 행동 ​ 이전 포스팅에서 자율 주행에 대한 간단한 원리를 포스팅했습니다.이전에 포스팅했던 이야기의 코드에서는 class가 목표지점에 도달했을 때 멈추는 움직임이 보이지 않습니다. 이번 포스팅은 목표에 가까워질수록 속도를 줄이고 마지막에는 멈추는 비결, 즉 도착행동에 대한 이야기를 포스팅한다.이전에 포스팅했던 코드에서 Class인 Vehicle은 고차원의 목표를 가지고 있습니다.첫 프레임:가능한 한 빨리 목표를 찾아 나서지 않으면!2번 프레임:가능한 펜팔이고 목표를 찾아 나서야 한다구!3번 프레임:가능한 펜팔이고 목표를 찾아 나서야 한다구!4번 프레임:가능한 펜팔이고 목표를 찾아 나서야 한다구!5번 프레임:가능한 펜팔이고 목표를 찾아 나서야 한다구!계속 이런 목표를 가진 Vehicle클래스의 목표를 더 수정하고 드릴까요.첫 프레임:아직 멀었잖아! 최대한 빨리 목표를 찾아 나서야 한다!2번 프레임: 멀잖아! 최대한 빨리 목표를 찾아 나서야 한다!3번 프레임: 하지만 조금 멀잖아?!빨리 목표를 찾아 나서야 한다!4번 프레임:조금 가까워지고 있으니까 좀 천천히 접근하라!5번 프레임:곧 도착이다! 가능한 한 천천히 접근하자 6번 프레임:도착했답니다 정지! 이런 목적을 갖도록 스토리입니다.자! 그러면 코드를 수정해야 하는 순서다.(코딩은 이전의 포스팅에 사용한 코드를 이용할 것이다.) 위의 코드는 별도의 arrive 함수를 만드는 것으로 한다.​


    위의 코드에서 중요하게 생각해야 할 부분은 if문입니다.Vehicle의 좌표와 목적지 간의 거리인 float d가 일 00보다 작으면 작아지는 만큼 속도를 map함수로 환산하고(최대 속도 한 00, 최소 속도 0)desired치에 넣어 주는 것입니다.책에는 "desired.mult(m);"라는 말로 자신이 있고, 예제를 다운받아 실행하면 "desired.setMag(maxspeed);"라는 코드로 작성되어 있습니다.결과적으로는 두 코드 모두 desired의 값을 다운시키는 역할을 하는데 거리에 따른 값인 m을 desired에 곱해 수를 내리는 것보다 setMag를 이용해서 벡터의 길이를 환산된 m값으로 대체하는 것이 더 효과적일 것입니다.위의 단어를 입력한 후 voiddraw(){}에서 arrive를 호출하도록 합시다.


    이전 코드와 다르다면 seek 코드가 사라져 버렸습니다.​


    >


    코딩을 실행하면 위의 이미지와 함께 원하는 가운데 멈춰있는 Vehicle을 볼 수 있습니다.


    댓글

Designed by Tistory.