ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Processing Algorithm] Autonomous Agents 자율 주행 02 봅시다
    카테고리 없음 2020. 2. 28. 18:02

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


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


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


    >


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


    댓글

Designed by Tistory.