码迷,mamicode.com
首页 > 其他好文 > 详细

Mission Planner地面站中坐标是如何实时更新的

时间:2017-10-10 22:00:42      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:nbsp   坐标   时间   ssi   bind   als   ica   backward   代码   


在 MainV2.comPort.MAV.cs. 中存放着飞控当前信息。把鼠标放到 cs 上会出现一个CurrentState类的简释。

在CurrentState.cs中有部分代码揭示了答案。

public float alt
        {
            get { return (_alt - altoffsethome)*multiplierdist; }
            set
            {
                // check update rate, and ensure time hasnt gone backwards                
                _alt = value;

                if ((datetime - lastalt).TotalSeconds >= 0.2 && oldalt != alt || lastalt > datetime)
                {
                    climbrate = (alt - oldalt)/(float) (datetime - lastalt).TotalSeconds;
                    verticalspeed = (alt - oldalt)/(float) (datetime - lastalt).TotalSeconds;
                    if (float.IsInfinity(_verticalspeed))
                        _verticalspeed = 0;
                    lastalt = datetime;
                    oldalt = alt;
                }
            }
        }

更直观的

 public void UpdateCurrentSettings(System.Windows.Forms.BindingSource bs, bool updatenow,
            MAVLinkInterface mavinterface, MAVState MAV)
        {
            lock (this)
            {
                if (DateTime.Now > lastupdate.AddMilliseconds(50) || updatenow) // 20 hz
                {
                    lastupdate = DateTime.Now;

……

也就是说,Mission Planner 是以时间偏差作为更新的标准的。

 

Mission Planner地面站中坐标是如何实时更新的

标签:nbsp   坐标   时间   ssi   bind   als   ica   backward   代码   

原文地址:http://www.cnblogs.com/-Yrqm/p/7647592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!