余松灿 发表于 2019-7-29 19:34:10

无人机定点悬停,这样可行吗?

用遥控器控制无人机时,根据目标位置和当前无人机的位置,不断调整油门和控制左右的遥杆,使无人机基本实现定点悬停(控制效果主要看个人技术),如果能知道无人机的三维坐标,通过算法直接调整调整油门和控制左右的遥杆对应变量的赋值,能否实现自动定位悬停?

JY-MCU 发表于 2019-7-29 19:50:15

无人机当不碰遥控器的时候就是悬停

zgxcom123 发表于 2019-7-29 19:55:31

其实问题的关键就是如何实时、准确的获取自己的当前位置。
GPS是米级别的误差,陀螺仪本身有偏置、温漂还会受到震动影响,气压计受温度和气流影响

如何将不同传感器的数据融合到一起,这是个学问
一旦知道自己的位置,就像你说的,控制4个电机就行了,当然,这还是一门学问

余松灿 发表于 2019-7-29 20:04:10

JY-MCU 发表于 2019-7-29 19:50
无人机当不碰遥控器的时候就是悬停

我的无人机没有像超声波传感器或者气压计这类可测高的传感器,所以不能实现定高

余松灿 发表于 2019-7-29 20:07:26

zgxcom123 发表于 2019-7-29 19:55
其实问题的关键就是如何实时、准确的获取自己的当前位置。
GPS是米级别的误差,陀螺仪本身有偏置、温漂还会 ...

那么关键是实现三维定位,如果在定位实现的前提下,那我的这个想法或者做法是可实现的。可否这样理解?

Himem 发表于 2019-7-29 20:08:52

记得是要加光流传感器,或UWB之类的辅助站

余松灿 发表于 2019-7-29 20:12:12

Himem 发表于 2019-7-29 20:08
记得是要加光流传感器,或UWB之类的辅助站

看到一些论文用光流传感器实现无人机悬停

ttoto 发表于 2019-7-29 20:21:12

这个已经很容易了。开源飞控做的很好了。

余松灿 发表于 2019-7-29 20:22:33

ttoto 发表于 2019-7-29 20:21
这个已经很容易了。开源飞控做的很好了。

能否给个链接

网络攻城师 发表于 2019-7-29 20:28:19

那个几百架飞行器组成图案的不就是定点吗?

余松灿 发表于 2019-7-29 20:31:03

网络攻城师 发表于 2019-7-29 20:28
那个几百架飞行器组成图案的不就是定点吗?

没错,但是不知道是怎么实现的。

网络攻城师 发表于 2019-7-29 20:37:34

余松灿 发表于 2019-7-29 20:31
没错,但是不知道是怎么实现的。

他们有自己的算法吧,不是一般的飞控,每架飞行器相互握手协议?超声波测距?GPS补偿?我也不懂

便宜飞控也就50元起,淘宝一大把,里面就是陀螺仪,能保持平稳,因为四轴多轴,斜了就会飞走,便宜的也能自己静止不动。

还有先进点的带GPS补偿的。比如大疆的,300元起,你要是做什么试验可以买来试试,也有很多开源的飞控

网络攻城师 发表于 2019-7-29 20:39:49

外国好多试验,用预先放置好的多点摄像头检测反馈,在房间里,可以飞各种特技。很炫酷,一个响指,呼拉一群飞行器在你身后,帅的一比{:lol:}

余松灿 发表于 2019-7-29 20:43:25

网络攻城师 发表于 2019-7-29 20:37
他们有自己的算法吧,不是一般的飞控,每架飞行器相互握手协议?超声波测距?GPS补偿?我也不懂

便宜飞 ...

我买的飞控188,不能悬停{:titter:} 。起飞之后左右飘。

网络攻城师 发表于 2019-7-29 20:50:18

余松灿 发表于 2019-7-29 20:43
我买的飞控188,不能悬停 。起飞之后左右飘。

你没校准吧?要放平,自检校准啥的,各家都不一样。。你问问卖家,188元不算最差,微风时也不至于乱漂

好几年前玩过四轴,现在不玩了,到处禁飞{:sweat:}

余松灿 发表于 2019-7-29 20:57:45

网络攻城师 发表于 2019-7-29 20:50
你没校准吧?要放平,自检校准啥的,各家都不一样。。你问问卖家,188元不算最差,微风时也不至于乱漂

...

看来我没买到靠谱的飞控{:titter:} 。它程序是由校准的,而且通过遥控器按键再次校准。卖家告诉如果飞不稳通过遥控器按键调整,比如起飞往前飘,就用按键按几下,再试飞再调整。。。。。。

ttoto 发表于 2019-7-29 21:02:46

余松灿 发表于 2019-7-29 20:22
能否给个链接

pixhawk + pxflow

余松灿 发表于 2019-8-2 11:10:24

网络攻城师 发表于 2019-7-29 20:50
你没校准吧?要放平,自检校准啥的,各家都不一样。。你问问卖家,188元不算最差,微风时也不至于乱漂

...

在初始化的过程中会调用如下的函数,这个就是校准吧?
void MpuGetOffset(void) //校准
{
        int32_t buffer={0};
        int16_t i;
        uint8_t k=30;
        const int8_t MAX_GYRO_QUIET = 5;//限制前后两次陀螺仪输出的偏差范围
        const int8_t MIN_GYRO_QUIET = -5;       
/*         wait for calm down                                                                    */
        int16_t LastGyro = {0};
        int16_t ErrorGyro;       
        /*         set offset initial to zero                    */
       
        memset(MpuOffset,0,12);
        MpuOffset = 8192;   //set offset from the 8192因为Z轴静止时也是有值的。
        //在获取参考值时禁止系统调度时钟,即获取到陀螺仪加速度计的参考值之后再开始大循环
       
        //在校准过程中关闭TIM3
        TIM_ITConfig(//使能或者失能指定的TIM中断
                TIM3, //TIM2
                TIM_IT_Update ,
                DISABLE//使能
                );       
        while(k--)//30次前后两次输出的偏差都在范围内
        {
                do
                {
                        delay_ms(10);
                        MpuGetData();
                        for(i=0;i<3;i++)
                        {
                                ErrorGyro = pMpu - LastGyro;
                                LastGyro = pMpu;       
                        }                       
                }while ((ErrorGyro >MAX_GYRO_QUIET )|| (ErrorGyro < MIN_GYRO_QUIET)
                                        ||(ErrorGyro > MAX_GYRO_QUIET )|| (ErrorGyro < MIN_GYRO_QUIET)
                                        ||(ErrorGyro > MAX_GYRO_QUIET )|| (ErrorGyro < MIN_GYRO_QUIET)
                                                );//不在限制范围内则一直循环
        }       

/*   throw first 100group data and make 256 group average as offset      */       
        for(i=0;i<356;i++)//一共获取356次,舍弃前100次,用后256次的平均值作为参考值
        {               
                MpuGetData();
                if(100 <= i)
                {
                        uint8_t k;
                        for(k=0;k<6;k++)
                        {
                                buffer += pMpu;
                        }
                }
        }

        for(i=0;i<6;i++)
        {
                MpuOffset = buffer>>8;
        }
        TIM_ITConfig(//使能或者失能指定的TIM中断
                TIM3, //TIM2
                TIM_IT_Update ,
                ENABLE//使能
                );
}
页: [1]
查看完整版本: 无人机定点悬停,这样可行吗?