2010-01-15 5 views
12

저는 Microsoft 웹 개발 배경을 가진 소프트웨어 개발자입니다. 순수한 흥미와 음모의 문제로서, 자율 차량이나 자동차 기술 (적응 형 순항 제어,자가 주차 등)을 만드는 것에 대해 더 많이 배우고 싶습니다.Darpa Grand Challenge/Autonomous vehicles

여기이 기술을 가진 경험이 있거나 유용한 책, 웹 사이트, 개발 프레임 워크, 오픈 소스 프로젝트 등이 있습니까?

감사합니다.

*** 편집 - 나는 이메일을 통해 다양한 DARPA 팀에서 가져온 몇 가지 답변을 포함 : *

코넬에서 아론 쓴 :

체크 아웃 http://code.google.com/p/cornell-urban-challenge/

스탠포드에서 마이크 쓴 :

로보틱스로 들어가는 관점에서 오픈 소스는 두 개 있습니다. 조사 할만한 가치가있는 웹상의 로봇 도구 키트 (Player/Stage, CARMEN, Willow Garages 로봇 OS, 마이크로 소프트 로봇 툴킷). 그러나 이는 교통 수단과 관련이 없습니다. 서로 다른 DARPA 팀이 자율 운전에 어떻게 접근했는지에 관한 과학 논문이 많이 있습니다. 이를 위해 저널 오브 필드 (Field of Journal) 로보틱스를 제안합니다. 그들은 챌린지의 두 가지 과제 인 Grand 챌린지 과 도시 챌린지의 두 가지 문제를 다뤘습니다. 마지막으로, 다른 대회가있을 경우 근처의 팀을 찾고 자원 봉사를하십시오. 두 종족 모두 우리는 에 대학 출신이 아닌 두 사람을두고 있었지만 은 열심히 일해서 기꺼이 기여했습니다.

은 오쉬 코쉬에서 요한은 이렇게 기록 등 책에 대한

, 여기에서 시작 : http://www.amazon.com/s/ref=nb_sb_ss_i_3_5?url=search-alias%3Daps&field-keywords=darpa+urban+challenge&sprefix=DARPA

같은 Google 학술 검색과 웹, 문학의 많은, 또한이다 백서의 가장 비록 당신 찾을 것입니다 "researchy", 그리고 코딩 측면에 너무 많이 다이빙하지 않습니다. IEEE 지능형 교통 시스템 학회에 합류하는 것이 좋습니다. 모든 종류의 연구 및 적용 기술에 관한 백서를 발표합니다.

우리는 센서 처리를 위해 Linux 컴퓨터에서 C++를 사용했으며 자율 프로그래밍을 위해 Windows 컴퓨터에서 C#을 사용했습니다.

본인은 사용하지 않았지만 스탠포드 대학의 일부 사용자가 SDK에 연결할 수 있습니다. http://kartorobotics.com/

행운을 빈다!

+0

나는 DARPA GC에 있었고 나는이 책에 대해 몰랐다! 저기 돈이야! –

답변

3

센서 데이터 (XBOX의 경우 Project Natal과 같음) 및 A.I. 지형 특징을 감지하고 주로 C 및 인라인 어셈블러를 사용하여 베이지안 필터로 분류하는 신경망입니다. 물론 GPS와 그 모든 것이 있지만 GPS는 군사용 GPS조차도 실시간 의사 결정을위한 쓰레기입니다.나는 Intel's OpenCV library과 같은 얼굴 인식 코드와 VoxForge과 같은 음성 인식을 시각적 인 물체 감지 (공간적)와 기계 학습 (확률 적 모델)을 다룬다. Arduino 구조에 대한 지식은 차량을 제어하는 ​​마이크로 모터의 물리적 동작에 명령을 전달하는 간단한 코딩을 허용합니다. 그 후 그것은 단지 디버깅 톤입니다.

2

높은 수준의 자료를 보려면 GPS World의 자료실을 확인하십시오. Urban and Grand Challenges를위한 기사를 찾으려면 "DARPA"를 검색하십시오.

9

나는 모든 레벨 (기계, 전자 및 소프트웨어)에서 자율 로버와 함께 작업하며 많은 작업이 필요합니다.

기계적 수준에서 자동화를 허용하려면 모바일 플랫폼을 만들거나 개조해야합니다. 토론을 구현하기 위해 내 프로젝트 중 하나에 내 경험을 게시 할 것입니다.

내 프로젝트는 작은 (100cc) 가솔린 ATV를 기반으로합니다. 기계적인 단계에서 자동화를위한 모든 장치를 받기 위해 ATV를 준비해야했습니다. 예를 들어, 핸들 바를 자르고 풀리를 설치하고 서보 모터를 설치하기 위해 금속 브래킷을 만들고 핸들 바 축에 전위차계를 설치하여 조향 제어 루프를 닫습니다.

그런 다음 자동화를 위해 모터를 지정해야합니다 . 예를 들어, 여러 상황에서 ATV를 조종하기 위해 우리가 (사람이) 핸들 바에 적용하는 힘이 무엇인지, 그리고 조향의 각 속도는 무엇인지 결정하기 위해 필드 테스트를해야했습니다. 그 정보로, 당신은 운동의 종류를 모방 수있는 모터와 기어 박스를 찾아야합니다.

그런 다음 컨트롤을 위해 전자 장치를 한 층 위에 올립니다. 우리는 선반에서 모터 컨트롤러를 구매하기로 결정했습니다. 기본적으로 기준 속도 또는 (우리의 경우) 서보 모터의 기준 위치를 포함하는 명령 (종종 직렬 명령)을 제공합니다. 분명히 우리는 몇 가지 모터를 제어해야했습니다. 스티어링, 프론트 브레이크, 리어 브레이크, 기어 시프 팅, 스로틀.

그런 다음 모터 컨트롤러를 제어하기 위해 온보드 컴퓨터에서 실행되는 소프트웨어를 생성했습니다. 이 시점에서 우리는 WiFi를 통해 원격 컴퓨터를 사용하여 운전할 수 있지만 아직 자율적이지는 않은 이동 로봇을 가지고있었습니다.

다음 단계에서는 센서의 신호를 설치, 수집 및 처리하고있었습니다. 우리는 2 개의 GPS 장치, 가속도계, 자이로 스코프 및 자력계를 가지고있었습니다. 우리는이 모든 센서로부터 입력을 받아 위치 벡터 (오일러 각), 동적 벡터 (속도, 가속도) 및 기준 프레임 (맵)이 주어진 현재 위치 추정치를 생성했습니다. 요즘에는 온도 보상 및 칼만 (Kalman) 필터 설계와 같은 것들로 우리 스스로 작업하고 걱정할 필요없이 통합 된 IMU (inertial measurement unit)를 구입할 것입니다.

이러한 작업을 모두 마쳤 으면 사전 정의 된 목표 (예 : A 지점에서 B 지점으로 이동)가 주어지면 모든 정보를 처리하고 작동 시스템에 결과를 제공해야합니다. 우리는 C#에서 구현 된 Behavior Based Robotics를 사용했습니다. 이러한 작은 동작을 여러 단계로 프로그래밍 할 수 있습니다. 예를 들어 배터리 레벨이 임계 값 이하로 떨어지면 알람을 울리는 BehBatteryLow와 같은 동작을 만듭니다. BehAvoidObstacle 또는 BehNavigateToWaypoint와 같은 상위 수준 동작에 포함될 수있는 저수준 동작입니다. 행동이 상충 될 수 있으므로 Arbiters와 같은 것이 필요합니다.

Ronald C. Arkin의 "Behavior Based Robotics"는 좋은 출발점이지만 내 게시물의 일부 키워드로 인터넷 검색을하면 흥미로운 장소도있을 수 있습니다.

환호성과 행운!