2013-10-31 3 views
1

로봇이 특정 고도까지 풍선 비행을하는 방법/알고리즘을 찾고 있습니다. 로봇은 Raspberry Pi에 의해 제어되며 프로펠러가 있습니다. 프로펠러 속도는 여러 값으로 설정할 수 있습니다 (기술적으로 1024 개의 다른 전원 출력을 PWM을 사용합니다). 풍선에는 거리 센서가 아래로 향하게되어 있으므로 현재 높이를 초당 여러 번 얻을 수 있습니다. 저는 지금까지 높이를 지속적으로 측정하고 여행 할 높이를 기준으로 최대 속도로 설정하는 아이디어 만있었습니다. 이것은 최선의 선택처럼 보이지는 않지만 모든 전력 출력을 맞추는 방법을 알아낼 수는 없습니다.지정된 고도/고도까지 풍선 비행을하는 알고리즘

어떤 아이디어라도 환영합니다. Java를 사용하여 프로젝트를 코드화하지만 모든 고급 알고리즘/설명은 훌륭합니다!

들으,

매직

+0

Java를 사용 하시겠습니까? –

+0

@nipkon : 왜 Java를 사용하지 않습니까? 물론, C는 아마 R-Pi의 더 좋은 맛이지만 Java를 지원합니다. – Izmaki

답변

1

의사 코드입니다.

while(true){ 
    val height = getHeight(); // from sensor 

    // Get the difference between the current height and 
    // the TARGET height. Positive values mean too low 
    // while negative values mean too high 
    val offset = TARGET_VALUE - height; 

    // Set the power to some direct ratio of the offset 
    // When the baloon is at 0 height, the offset should 
    // be relatively high, so the power will be set 
    // high. If the offset is negative, the power will be 
    // set negative from the current power. 
    setPower(offset);// I'll leave it up to you to figure out the ratio 
} 
2

당신이 시도하고 정확하게 문제를 주위 재생할 수 있습니다 사용할 수있는 좋은 "게임"이 : Colobot (현재 오픈 소스 것 같다). Winged-grabber (또는 FPS 유형의 사람이라면 범인)를 만들고 고도 및 모터 컨트롤 만 사용하여 특정 목적지로 비행을 시도하십시오.

일반적으로 MadConan의 Pseudo-Code가 방법이지만, 주요 작업은 스마트 setPower 기능을 작성하는 데 있습니다. 결국에는 원하는 고도에 얼마나 가까운 지와 관련하여 힘을 줄이는 스무딩 기능이 필요하지만,이 기능의 정확한 값은 하드웨어와 최종 시스템의 무게에 따라 달라집니다.

설정이 얼마나 중요하고/또는 약하 느냐에 따라, 실행 중일 때 스무딩 기능을 조정할 기준으로 과소/오버 슈트를 사용하는 학습 시스템을 개발할 수 있습니다. 업/다운 바람과 같은 요소를 계산에 사용하십시오.

+0

좋은 설명. 내 알고리즘은이를 고려합니다 (대략). 얼마나 많은 측정/초가 수행되는지에 달려 있습니다. 풍선이 목표 값에 가까워지면 오프셋은 작아지고 작아 지므로 전력도 감소해야합니다. 나는 높이가 실제로 달성되지 않을 수도 있기 때문에 그렇게 단순하지는 않다는 것에 동의합니다. 다시 말하지만, 샘플링 빈도에 따라 다릅니다. – MadConan

+0

속도, 가속도 및 시간을 기준으로 현재 위치를 쉽게 보간 할 수 있으므로 샘플링이 문제가되지 않습니다. 센서는 단지 바람과 같은 외부 요인에 대한 가정에 대한 수정 일뿐입니다. 나는 그 게임을 시도해 볼 것을 강력히 제안한다. 처음에는 그렇게 봇을 제어하는 ​​것이 쉽지는 않다고 생각했지만 처음에는 (운좋게도 디지털) 충돌로 인해 다른 방법을 가르쳐주었습니다. ;) – TwoThe

+0

나는 그것이 항상 수직으로 생각하고 있었지만, 이제 생각해 보니 바람이 피칭을 일으키고, 센서를 땅에 비스듬하게 놓아서 실제 높이에서 큰 델타를 줄 것입니다. 따라서 전체 x, y 및 z 좌표 센서가 보정해야합니다. – MadConan