试飞相对航点,单架飞机成功
LED修改完成,待验证
This commit is contained in:
parent
b3ae2ed818
commit
c471dc560a
@ -73,13 +73,13 @@ namespace Plane.FormationCreator.Formation
|
||||
|
||||
|
||||
//同一个任务每一架飞机的FlytoTime和LoiterTime保持统一
|
||||
private int _FlytoTime = 123;
|
||||
private int _FlytoTime = 10;
|
||||
public int FlytoTime
|
||||
{
|
||||
get { return _FlytoTime; }
|
||||
set { Set(nameof(FlytoTime), ref _FlytoTime, value); }
|
||||
}
|
||||
private int _LoiterTime = 321;
|
||||
private int _LoiterTime = 10;
|
||||
public int LoiterTime
|
||||
{
|
||||
get { return _LoiterTime; }
|
||||
|
@ -396,6 +396,9 @@ namespace Plane.FormationCreator.Formation
|
||||
newSingleCopterInfo = FlightTaskSingleCopterInfo.CreateForFlyToTask(
|
||||
copter, new LatLng((double)singleCopterInfoObj.latOffset,
|
||||
(double)singleCopterInfoObj.lngOffset), (float)singleCopterInfoObj.targetAlt);
|
||||
|
||||
var jsonArray = singleCopterInfoObj.ledInfos as Newtonsoft.Json.Linq.JArray;
|
||||
newSingleCopterInfo.LEDInfos = jsonArray.ToObject<ObservableCollection<LEDInfo>>();
|
||||
|
||||
}
|
||||
else
|
||||
@ -654,7 +657,8 @@ namespace Plane.FormationCreator.Formation
|
||||
latOffset = offset.Lat,
|
||||
lngOffset = offset.Lng,
|
||||
targetAlt = info.TargetAlt,
|
||||
showLED = info.FlytoShowLED,
|
||||
//showLED = info.FlytoShowLED,
|
||||
ledInfos = info.LEDInfos
|
||||
};
|
||||
})
|
||||
};
|
||||
|
@ -58,20 +58,7 @@ namespace Plane.FormationCreator.Formation
|
||||
}
|
||||
*/
|
||||
|
||||
//设置飞机航点中灯光
|
||||
private ICommand _ModiFlytoLEDCommand;
|
||||
public ICommand ModiFlytoLEDCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ModiFlytoLEDCommand ?? (_ModiFlytoLEDCommand = new RelayCommand<double>(async =>
|
||||
{
|
||||
//Alert.Show("灯光控制");
|
||||
Views.modiLED LEDConfig = new Views.modiLED();
|
||||
LEDConfig.ShowDialog();
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -111,6 +111,7 @@
|
||||
<Compile Include="Converters\HeartbeatCountToBrushConverter.cs" />
|
||||
<Compile Include="Formation\AppMode.cs" />
|
||||
<Compile Include="Formation\Copter.cs" />
|
||||
<Compile Include="Formation\FlightTaskSingleCopterInfo_LED.cs" />
|
||||
<Compile Include="Formation\FlightTaskSingleCopterInfo_LoiterTime.cs" />
|
||||
<Compile Include="Formation\FlightTaskSingleCopterInfo_ReturnToLand.cs" />
|
||||
<Compile Include="Formation\FlightTaskSingleCopterInfo_SimpleCircle.cs" />
|
||||
@ -173,9 +174,6 @@
|
||||
<Compile Include="Views\ModifyTaskView.xaml.cs">
|
||||
<DependentUpon>ModifyTaskView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ModiLEDWindow.xaml.cs">
|
||||
<DependentUpon>ModiLEDWindow.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\TaskBarView.xaml.cs">
|
||||
<DependentUpon>TaskBarView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -279,10 +277,6 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\ModiLEDWindow.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\TaskBarView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
|
@ -17,6 +17,7 @@ using System.Windows.Input;
|
||||
using Plane.Communication;
|
||||
using Microsoft.Win32;
|
||||
using Plane.Util;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace Plane.FormationCreator.ViewModels
|
||||
{
|
||||
@ -577,17 +578,28 @@ namespace Plane.FormationCreator.ViewModels
|
||||
{
|
||||
return _MissionStartCommand ?? (_MissionStartCommand = new RelayCommand(async () =>
|
||||
{
|
||||
FlightTaskManager _flightTaskManager = ServiceLocator.Current.GetInstance<FlightTaskManager>();
|
||||
if (_flightTaskManager.OriginLat == 0 && _flightTaskManager.OriginLng == 0)
|
||||
{
|
||||
Alert.Show("作为参照的原点未设置,无法开始任务!", "提示");
|
||||
return;
|
||||
}
|
||||
int utchour = DateTime.UtcNow.AddSeconds(5).Hour;
|
||||
int utcminute = DateTime.UtcNow.AddSeconds(5).Minute;
|
||||
int utcsecond = DateTime.UtcNow.AddSeconds(5).Second;
|
||||
|
||||
foreach (var vcopter in _copterManager.Copters)
|
||||
{
|
||||
|
||||
await vcopter.MissionStartAsync(utchour,
|
||||
utcminute,
|
||||
utcsecond,
|
||||
110.23456,
|
||||
40.23432);
|
||||
_flightTaskManager.OriginLng,
|
||||
_flightTaskManager.OriginLat
|
||||
//110.23456,
|
||||
//40.23432
|
||||
|
||||
);
|
||||
}
|
||||
}));
|
||||
}
|
||||
@ -635,7 +647,8 @@ namespace Plane.FormationCreator.ViewModels
|
||||
{
|
||||
|
||||
///写航线开始
|
||||
var missions = new IMission[taskcount]; //不要起飞任务但增加一个起飞后低空航点,见起飞任务,再增加一个降落低空航点,见降落部分
|
||||
//var missions = new IMission[taskcount]; //不要起飞任务但增加一个起飞后低空航点,见起飞任务,再增加一个降落低空航点,见降落部分
|
||||
var missions =new List<IMission>();
|
||||
int missindex = 0;
|
||||
|
||||
for (int j = 0; j < _flightTaskManager.Tasks.Count; j++)
|
||||
@ -647,12 +660,13 @@ namespace Plane.FormationCreator.ViewModels
|
||||
//计算起飞需要的时间,5秒是上升加速和最后稳定时间
|
||||
int takeofftime = (int)(_flightTaskManager.Tasks[j + 1].SingleCopterInfos[i].TargetAlt / 2.5 + 5);
|
||||
|
||||
missions[missindex++] = Mission.CreateTakeoffMission(
|
||||
1,//1,
|
||||
5,//takeofftime,
|
||||
missions.Add(Mission.CreateTakeoffMission(
|
||||
1,//1,
|
||||
5,//takeofftime,
|
||||
_flightTaskManager.Tasks[j + 1].SingleCopterInfos[i].TargetLat - _flightTaskManager.OriginLat,
|
||||
_flightTaskManager.Tasks[j + 1].SingleCopterInfos[i].TargetLng - _flightTaskManager.OriginLng,
|
||||
_flightTaskManager.Tasks[j+1].SingleCopterInfos[i].TargetAlt);
|
||||
_flightTaskManager.Tasks[j + 1].SingleCopterInfos[i].TargetLng - _flightTaskManager.OriginLng,
|
||||
_flightTaskManager.Tasks[j + 1].SingleCopterInfos[i].TargetAlt)
|
||||
);
|
||||
|
||||
//要起飞任务
|
||||
|
||||
@ -660,25 +674,42 @@ namespace Plane.FormationCreator.ViewModels
|
||||
|
||||
case FlightTaskType.FlyTo:
|
||||
|
||||
missions[missindex++] = Mission.CreateWaypointMission(
|
||||
//5,//_flightTaskManager.Tasks[j].SingleCopterInfos[i].LoiterTime,
|
||||
//5,// _flightTaskManager.Tasks[j].SingleCopterInfos[i].FlytoTime,
|
||||
_flightTaskManager.Tasks[j].LoiterTime,
|
||||
_flightTaskManager.Tasks[j].FlytoTime,
|
||||
_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLat - _flightTaskManager.OriginLat,
|
||||
_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLng - _flightTaskManager.OriginLng,
|
||||
_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetAlt);
|
||||
missions.Add(Mission.CreateWaypointMission(
|
||||
//5,//_flightTaskManager.Tasks[j].SingleCopterInfos[i].LoiterTime,
|
||||
//5,// _flightTaskManager.Tasks[j].SingleCopterInfos[i].FlytoTime,
|
||||
_flightTaskManager.Tasks[j].LoiterTime,
|
||||
_flightTaskManager.Tasks[j].FlytoTime,
|
||||
_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLat - _flightTaskManager.OriginLat,
|
||||
_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLng - _flightTaskManager.OriginLng,
|
||||
//_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLat,
|
||||
//_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLng,
|
||||
_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetAlt)
|
||||
);
|
||||
foreach(LEDInfo ledInfo in _flightTaskManager.Tasks[j].SingleCopterInfos[i].LEDInfos)
|
||||
{
|
||||
Color color = (Color)ColorConverter.ConvertFromString("#" + ledInfo.LEDRGB);
|
||||
IMission LEDMission = Mission.CreateLEDControlMission(
|
||||
ledInfo.Delay,
|
||||
ledInfo.LEDMode,
|
||||
ledInfo.LEDRate,
|
||||
0, //ledInfo.LEDTimes,
|
||||
color.R,
|
||||
color.G,
|
||||
color.B
|
||||
);
|
||||
missions.Add(LEDMission);
|
||||
}
|
||||
break;
|
||||
case FlightTaskType.Loiter:
|
||||
// missions[missindex++] = Mission.CreateWaypointMission(10,10,_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLat,
|
||||
// _flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLng, _flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetAlt);
|
||||
// missions[missindex++] = Mission.CreateWaypointMission(10,10,_flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLat,
|
||||
// _flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetLng, _flightTaskManager.Tasks[j].SingleCopterInfos[i].TargetAlt);
|
||||
break;
|
||||
case FlightTaskType.ReturnToLand:
|
||||
//降落低空航点
|
||||
// missions[missindex++] = Mission.CreateWaypointMission(_flightTaskManager.Tasks[j - 1].SingleCopterInfos[i].TargetLat,
|
||||
// _flightTaskManager.Tasks[j - 1].SingleCopterInfos[i].TargetLng, 3);
|
||||
// missions[missindex++] = Mission.CreateWaypointMission(_flightTaskManager.Tasks[j - 1].SingleCopterInfos[i].TargetLat,
|
||||
// _flightTaskManager.Tasks[j - 1].SingleCopterInfos[i].TargetLng, 3);
|
||||
//返航
|
||||
missions[missindex++] = Mission.CreateReturnToLaunchMission();
|
||||
missions.Add(Mission.CreateReturnToLaunchMission());
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -728,6 +728,7 @@ public ICommand VerticlAlignmentCommand
|
||||
WGS84,
|
||||
}
|
||||
|
||||
|
||||
//水平旋转
|
||||
private ICommand _LevelRotateCommand;
|
||||
public ICommand LevelRotateCommand
|
||||
|
@ -214,11 +214,61 @@
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="灯光控制: " />
|
||||
<Button Content="设置"
|
||||
<Button Content="添加"
|
||||
Grid.Column="1"
|
||||
Margin="0,5,5,0"
|
||||
Command="{Binding ModiFlytoLEDCommand}" />
|
||||
Command="{Binding AddLEDCommand}" />
|
||||
<ItemsControl Name="LEDItems"
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="2"
|
||||
Height="Auto"
|
||||
MaxHeight="200"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
||||
ItemsSource="{Binding Path= LEDInfos}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<StackPanel Orientation="Vertical" />
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Margin="0,8,0,0" Orientation="Horizontal" >
|
||||
<TextBlock Text="类型" Margin="0,0,0,0" VerticalAlignment="Center" ></TextBlock>
|
||||
<ComboBox MinWidth="80" Margin="5,0,0,0" Foreground="White" VerticalContentAlignment="Center"
|
||||
SelectedIndex="{Binding Path=LEDMode}">
|
||||
<ComboBoxItem Content="常亮" Foreground="White" />
|
||||
<ComboBoxItem Content="闪烁" Foreground="White"/>
|
||||
<ComboBoxItem Content="随机" Foreground="White"/>
|
||||
</ComboBox>
|
||||
|
||||
<TextBlock Text="时间" Margin="12,0,0,0" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox MinWidth="40" MaxWidth="50" Margin="5,0,0,0"
|
||||
Text="{Binding Delay, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<TextBlock Text="频率" Margin="12,0,0,0" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox MinWidth="40" MaxWidth="50" Margin="5,0,0,0"
|
||||
Text="{Binding Path=LEDRate, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<TextBlock Text="颜色" Margin="12,0,0,0" VerticalAlignment="Center"></TextBlock>
|
||||
<TextBox Margin="5,0,0,0"
|
||||
Text="{Binding LEDRGB, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<Button Content="删除" Margin="12,0,0,0"
|
||||
Command="{Binding RemoveLEDCommand}"/>
|
||||
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
|
||||
|
||||
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
<Separator Grid.Row="3" />
|
||||
<Grid Grid.Row="4"
|
||||
|
Loading…
Reference in New Issue
Block a user