Follow the leader
Inheritance: MissionPlanner.Swarm.Swarm
        public FormationControl()
        {
            InitializeComponent();

            SwarmInterface = new Formation();

            bindingSource1.DataSource = MainV2.Comports;

            CMB_mavs.DataSource = bindingSource1;

            updateicons();

            this.MouseWheel += new MouseEventHandler(FollowLeaderControl_MouseWheel);

            MessageBox.Show("this is beta, use at own risk");
        }
        public FormationControl()
        {
            InitializeComponent();

            SwarmInterface = new Formation();

            bindingSource1.DataSource = MainV2.Comports;

            CMB_mavs.DataSource = bindingSource1;

            updateicons();

            this.MouseWheel += new MouseEventHandler(FollowLeaderControl_MouseWheel);

            MessageBox.Show("this is beta, use at own risk");
        }
        public FormationControl()
        {
            InitializeComponent();

            SwarmInterface = new Formation();

            bindingSource1.DataSource = MainV2.Comports;

            CMB_mavs.DataSource = bindingSource1;

            updateicons();

            this.MouseWheel += new MouseEventHandler(FollowLeaderControl_MouseWheel);

            MessageBox.Show("this is beta, use at own risk");

            MissionPlanner.Utilities.Tracking.AddPage(this.GetType().ToString(), this.Text);
        }
        public FormationControl()
        {
            InitializeComponent();

            SwarmInterface = new Formation();

            bindingSource1.DataSource = MainV2.Comports;

            CMB_mavs.DataSource = bindingSource1;

            updateicons();

            this.MouseWheel += new MouseEventHandler(FollowLeaderControl_MouseWheel);

            MessageBox.Show("this is beta, use at own risk");

            MissionPlanner.Utilities.Tracking.AddPage(this.GetType().ToString(), this.Text);
        }
        public FormationControl()
        {
            InitializeComponent();

            SwarmInterface = new Formation();

            TopMost = true;

            Dictionary <String, MAVState> mavStates = new Dictionary <string, MAVState>();

            foreach (var port in MainV2.Comports)
            {
                foreach (var mav in port.MAVlist)
                {
                    mavStates.Add(port.BaseStream.PortName + " " + mav.sysid + " " + mav.compid, mav);
                }
            }

            if (mavStates.Count == 0)
            {
                return;
            }

            bindingSource1.DataSource = mavStates;

            CMB_mavs.DataSource    = bindingSource1;
            CMB_mavs.ValueMember   = "Value";
            CMB_mavs.DisplayMember = "Key";

            updateicons();

            this.MouseWheel += new MouseEventHandler(FollowLeaderControl_MouseWheel);

            MessageBox.Show("this is beta, use at own risk");

            MissionPlanner.Utilities.Tracking.AddPage(this.GetType().ToString(), this.Text);
        }
Example #6
0
        private void myButton1_Click(object sender, EventArgs e)
        {
            Formation formation = new Formation();

            double[] b = { 126.633247, 45.629651, 3 };

            formation.CollectStartCoords(b);
            formation.StartUTMCoords = formation.GEOsToUTMs(formation.StartGEOCoords, formation.StartGEOCoords[0]);
            formation.BuildEndCoords(0, 20, 3);
            formation.EndGEOCoords = formation.UTMsToGEOs(formation.EndUTMCoords, formation.StartGEOCoords[0]);
            /*
            label3.Text = a.endGEOCoords[0][0] + " " + a.endGEOCoords[0][1] + " " + a.endGEOCoords[0][2] + "";
            MessageBox.Show(a.endGEOCoords[0][0] + " " + a.endGEOCoords[0][1] + " " + a.endGEOCoords[0][2] + "");
            */

            //设计完线路在执行该对策之前,对对策队列“查重”,若有重复,则弃用该队列,执行最简单的贪心算法,保证无失事
            {

            }

            int[] wingRoute = formation.DesignPath(MainV2.Comports.Count);
            int[] formationRoute = new int[wingRoute.Length + 1];//i存储初始编队编号,formationRoute[i]对应目的编号,相对于wingRoute,多了个长机(0位置)
            for (int i = 0; i < wingRoute.Length; i++)
            {
                for (int j = 0; j < wingRoute.Length; j++)
                {
                    if (wingRoute[j] == i)
                        formationRoute[i + 1] = j + 1;
                }
            }

            //任务list添加任务、坐标list添加坐标,编制任务list
            planList.Add(BuildTaskList("guide"));
            planList.Add(BuildTaskList(formationRoute, MAVLink.MAV_CMD.WAYPOINT, formation.EndGEOCoords, WPStyle.OnlyHigher));
            planList.Add(BuildTaskList(formationRoute, MAVLink.MAV_CMD.WAYPOINT, formation.EndGEOCoords, WPStyle.WayPoint));
            planList.Add(BuildTaskList(formationRoute, MAVLink.MAV_CMD.WAYPOINT, formation.EndGEOCoords, WPStyle.KeepLevel));

            //开启执行线程,每当任务规划列表内完成某一段任务时才继续执行下一任务            
            while (planList.Count > 0)
            {
                //开启监测线程
                Thread checkThread = new Thread(new ThreadStart(CheckState));
                Thread doTaskThread = new Thread(new ParameterizedThreadStart(DoPlan));
                checkThread.Start();
                doTaskThread.Start(planList[0]);
                checkThread.Join();//在监测线程完成任务即编队任务完成时才继续执行下一任务点
            }
            
        }