1

我正在寻找一种使机器人气球飞到一定高度的方法/算法。该机器人由 Raspberry Pi 控制并带有螺旋桨。螺旋桨速度可以设置为多个值(它使用 PWM,因此技术上可以提供 1024 种不同的功率输出)。气球有一个指向下方的距离传感器,因此每秒可以多次获取当前高度。到目前为止,我唯一的想法是不断测量高度并根据剩余的行驶高度设置为最大速度。虽然这似乎不是最好的选择,但无法弄清楚如何适应所有电源输出。

任何想法都会受到欢迎。我正在使用 Java 对项目进行编码,但任何高级算法/描述都会很棒!

谢谢,

魔法

4

2 回答 2

2

有一个很棒的“游戏”可以让你尝试解决这个问题:Colobot(现在似乎是开源的)。创建一个捕翼机(或射击者,如果你更喜欢 FPS 类型的人)并尝试仅使用高度和电机控制让它飞到特定目的地。

一般来说,MadConan 的 Pseudo-Code 是可行的方法,但主要任务在于编写一个智能 setPower 函数。最后,您需要一些平滑功能来降低与您与所需高度的接近程度相关的功率,但是该功能的确切值完全取决于您的硬件和最终系统的重量。

根据您的设置最终的价值和/或脆弱程度,您可能需要开发一个学习系统,该系统以欠/超调为基础,在运行时调整平滑功能。确保在计算中考虑上风/下风等因素。

于 2013-10-31T13:01:29.623 回答
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
}
于 2013-10-31T12:49:18.770 回答