충돌 100 % 회피 구현


21

나는 게임 개발의 절대 초보자이며 충돌 회피 / 해결에 대해 알고있는 모든 것을 지난 주 에이 사이트에서 또는 이 사이트를 통해 배웠습니다 . 잘못된 가정 / 오해에 기초합니다. 나는 최선을 다하기 위해 노력했지만 그 주제는 여전히 나에게 소설이다.

차량

내 게임에는 자율적으로 움직이는 차량이 있습니다. 그것들은 3D 공간에 배치되며 각 차량마다 다른 여러 변수에 의해 모션이 제어됩니다. 여기서 관심있는 것은 주로 :

  • 앞으로 만 움직입니다.
  • 속도 그 최소 인 최소 및 최대하지만 사이에서 변할 수 없다 (심지어 가까운) 제로.
  • 속도에 의존 하는 조향 반경 (높은 속도, 큰 반경)
  • 최대 가속 2 개 (속도 감소 및 증가)

저의 목표는 100 % 정확한 충돌 방지 를위한 일종의 AI를 구현하는 것입니다 (즉, 차량이 절대로 충돌 하지 않을 것입니다 ).

디자인

  • AI "온보드" (즉, 자체 "충돌 방지 AI"를 갖는 각 차량, 결국 다른 차량에 메시지를 쿼리 및 / 또는 보내는) 를 갖는 아이디어를 더 선호 하지만 CA AI를 구현할 수도 있습니다. 중앙 레벨 (차량에 명령을 배포).
  • 대부분의 경우, 차량은 단순히 어떤 방향 으로든 서로를 피해야하지만 특정 상황에서는 충돌을 피하고 동일한 목표를 향해 가야합니다.

내가 지금까지 찾은 것

이 사이트의 다른 질문에서 찾은 많은 링크 에서이 링크를 특히 사용하는 것으로 나타났습니다.

  1. 풀 공 사이의 충돌
  2. 불충분 한 충돌 방지
  3. 큐잉

이 세 가지 링크가 여러 가지 방법으로 "내 눈을 뜨게"되었지만 내 경우에 해당 정보를 사용하는 방법은 즉시 명확하지 않습니다. 특히 기사 # 2는 충돌을 막기 위해 "시도"만합니다 (그러나 충돌은 때때로 발생합니다). 3 번 기사는 때때로 충돌을 막기 위해 차량을 정지시켜야합니다.

또한, 위에서 언급 한 충돌 방지 알고리즘 은 선형 속도"인스턴트 프로젝션"을 사용 하여 차량에 무언가가 있는지 확인합니다. 이것이 내 경우에 충분한 지 또는 더 현실적인 방식으로 내 위치를 투사 해야하는지 궁금합니다 (예 : 오른쪽으로 90 ° 스티어링으로 60 ° 인 경우 나머지 위치에 대한 내 위치를 계산해야합니다 커브의 30 °, 그리고 선형 모션 가정).

마지막으로 교착 상태가 특히 두렵습니다 . 다시 말해, 세계의 차량 밀도는 상당히 낮을 것입니다. 같은 수의 차량이 같은 지점으로 수렴하면 충돌 코스에 있다는 것을 알게되면 회피 조작이 불가능할 것입니다. 차량이 다른 차량과 충돌 경로에있게됩니다.

의문

"목표"에 도달하려면 어떻게해야합니까? 깊이있는 설명은 물론 대단히 감사하지만 외부 리소스에 대한 링크도 큰 도움이 될 것입니다 (이 문제의 첫 번째 사람은 아니지만 확실하지 않은 키워드를 사용하여 웹을 검색했을까요? )

당신의 도움에 미리 감사드립니다!


20
모든 차량을 정지 시키십시오. 100 % 회피
Martin Sojka

2
그들이 서로에 대해 멈 추면 충분합니다. 즉, 모두 정확히 같은 속도로 같은 방향으로 움직입니다. 더 큰 문제는 가능한 모든 구성에 대해 100 % 속도로 알고리즘을 수행하는 것이 (아마도) 불가능하다는 것입니다. 예를 들어, 최소 거리에서 서로 0이 아닌 매우 큰 회전 반경을 가진 두 대의 차량이 서로 최대 속도로 비행하는 것을 고려하십시오.
Martin Sojka

12
@mac-이 알고리즘을 개발할 때 명심해야 할 것은 게임이라는 것입니다. 이 문제를 해결하기 위해 너무 많은 시간을 보내고 있다면 잘못된 문제를 해결하려고 한 것일 수 있습니다. 어려운 상황, 특히 플레이어가 볼 수없는 상황을 감지하면 속임수-차량 이동 또는 취급 규칙 위반 어떤 차량 취급 규칙이 지루해 보이는지 확인하십시오. 옳은 것보다 재미있는 것이 더 중요합니다.
Flip

3
@mac 글쎄, 아마도 A *와 함께 글로벌 컨트롤러를 사용할 것입니다. 이 솔루션에서 멀리 떨어져 있기를 원하지만 차량에 대한 전체적인 시각을 가지고 있으며 경로를 미리 계산할 수 있으므로 더 의미가 있습니다. 또한 차량에 우선 순위를두고 싶을 수도 있습니다 (목표에 가장 가까운 것이 우선 순위가 높기 때문에 경로가 변경되지 않고 다른 경로로 경로가 변경됨).
Jonathan Connell

6
@Flip 비행 시뮬레이터는 여전히 게임으로 간주되지만 '속임수'인 경우이를 실현 한 모든 플레이어의 게임이 중단됩니다.
Jonathan Connell

답변:


5

플록 킹 알고리즘 을 조사 했습니까 ? 내가 당신의 설명을 볼 때 그것이 저에게 떠오르는 것입니다. 이것에 대한 많은 기사가 있습니다 . 여기 내가 좋아하는 것이 있습니다. 아마도 응집력과 같은 무리의 모든 측면을 사용하지는 않을 것입니다. 정렬 및 분리와 같은 대부분의 측면은 충돌을 피하는 데 도움이되는 정렬 및 분리와 같이 수행하려는 작업에 유용합니다. 당신은 무리와는 조금 다른 결과로 끝날 것이지만, 시작하는 데 도움이 될 것입니다.

행운을 빕니다!


2
여기서 관련 검색어는 Boids 입니다. 그러나 나는 이것이 OP가 찾고있는 것이라고 생각하지 않습니다. 그가 자동차를 모든 방향으로 가고 싶어하는 것처럼 들립니다.
BlueRaja-대니 Pflughoeft

무리는 여전히 서로 충돌을 피하는 AI에 관한 것입니다.
Matt Jensen

OP는 안정적인 충돌 방지를 요구합니다. 힘 기반 모델은 엄격한 구속 조건을 포함하지 않기 때문에 무리는 보장하지 않습니다. 무리를 짓는 것이 주제에 들어가기위한 좋은 진입 점이지만, 그에 대한 해답은 놓치게됩니다. 대신 OP에서 "속도 장애물"을 찾아 보라고 제안합니다.
Tobias Gurdan 2016 년

@TobiasGurdan 더 적합한 답변이 있으면 답변을 작성해야합니다.
MichaelHouse

3

접근 방식은 다음과 같습니다. 모든 차량에는 짧은 경로의 차량이 있으며 끝에 차량의 속도가 느려지고 루프로 진입합니다. 이러한 경로는 겹치지 않을 수 있습니다. 차량 속도가 느려지는 지점에 도달 할 때마다 기존 경로와 겹치지 않는 새 경로를 생성하려고합니다. 그것이 가능하지 않은 것으로 밝혀지면 차량은 주어진 경로를 계속 유지하고 새로운 경로를 주기적으로 재 시도합니다.

루프로 이어지는 경로가 서로 겹치게하고 충돌이 발생하지 않는다고 판단 할 수있는 루프를 허용함으로써 트래픽을 더 엄격하게 허용하도록 방법을 개선 할 수 있습니다.


0

이 반경 안에 다른 차량이 있으면 원하는대로 적절한 방식으로 멀리 이동하십시오 : 1) 반대쪽 벡터로 이동, 2) 느리게, 3) 속도 등

다른 차량의 벡터가 똑바로 앞이나 뒤에 있지 않은 경우 : 멀리 이동하십시오. 그렇지 않으면 똑바로 진행하십시오. 그렇지 않으면 : 속도를 높이십시오.


0

저의 목표는 100 % 정확한 충돌 방지를위한 AI를 구현하는 것입니다 (즉, 차량이 절대 충돌하지 않을 것입니다).

이것이 가능하다면 지금까지 전세계 모든 항공기에 투입되었을 것입니다.

나는 '자율적 인'측면을 완화하고 2 대 이상의 차량 간의 예상 충돌을 해결하는 기능을 갖는 것이 좋습니다. 여행 할 임의의 새로운 방향을 선택하고 문제가 해결되는지 확인하는 것만 큼 순진 할 수 있지만 중요한 것은 두 차량에 맞는 합의에 도달했을 때만 함수가 반환된다는 것입니다.

또한 가까운 시일 내에 충돌 할 것으로 예상되는 모든 차량은 앞과 같은 거리를 유지하면서 속도를 낮추는 것이 좋습니다. 이렇게하면 실제와 마찬가지로 충돌을 피할 수있는 기회가 더 많아집니다.


그는 우주의 규칙을 설계하고 있기 때문에 가능합니다. 현실 세계는 분명히 더 복잡하지만, 실제 항공기는 수많은 충돌 방지 기술을 사용
한다고 확신합니다

0

그것은 나에게 소리 군중 시뮬레이션 당신이 달성하려는 것과 가장 관련 주제 일 수 있습니다. UNC의 GAMMA 그룹에는 살펴볼 가치가있는 주제에 대한 많은 작업이 있습니다. 그들의 설명 :

크라우드 및 멀티 에이전트 시뮬레이션은 하나의 환경에서 각각 상호 작용하는 많은 사람, 생물 또는 기타 캐릭터를 시뮬레이션하는 프로세스입니다. 이 행위자들은 목표로 이동하고 환경과 상호 작용하며 서로에게 반응해야합니다. 군중 시뮬레이션은 건축 계획 개선, 교육 환경 및 가상 현실 개선, 게임 및 영화 에서 인공 지능 (AI) 캐릭터 구동 등 많은 용도로 사용 됩니다. 우리 그룹은 빠른, 보장, 충돌 방지, 실시간 경로 및 모션 계획, 군중 흐름 및 지시 된 행동을 포함하여 군중 시뮬레이션에서 많은 문제를 해결했습니다 .

http://gamma.cs.unc.edu/research/crowds/


-1

100 % 회피 방법은 없다고 생각하지만 차량에 전 세계 정보가있는 경우 각 차량을 길이에 따라 속도에 따라 상자에 넣고 해당 상자에서 충돌 검사를 수행 할 수 있습니다. 실제로 충돌이 발생하면 충격의 임박 (또는 두 상자 사이의 충돌 영역)에 따라 강도가 떨어지고 천천히 다우십시오 (단, 회피 작업 중에는 상자의 길이를 동일하게 유지하십시오).

차량이 전체 정보를 보유하지 않으면 분명히 작동하지 않지만이 경우 100 % 회피를 보장하지 않습니다 (이미 말한 것처럼 평행 이동 제외)

여기에 설명 된 일부 방법 , 특히이 방법이 유용 할 것입니다. 정렬되지 않은 충돌 회피 조향 동작

문안 인사


1
원래 질문을 읽었습니까? 당신이 추천 한 그 링크는 이미 질문에 있습니다 ...
bummzack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.