ajustes na projecao de trajetoria
This commit is contained in:
parent
0e852e69e2
commit
a912f319dd
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -3,32 +3,24 @@
|
|||
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\gpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\gpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
|
|
@ -38,76 +30,50 @@
|
|||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 2,
|
||||
"SelectedChildIndex": 0,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"Title": "frmOperacaoManual.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"ViewState": "AQIAAJsBAAAAAAAAAAAhwLIBAAB0AAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-05T23:21:24.81Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "GPSModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GPSModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\GPSModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GPSModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\GPSModel.cs",
|
||||
"ViewState": "AQIAAAQAAAAAAAAAAAAwwBIAAAA2AAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-05T23:20:53.781Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "MapasModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\MapasModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\MapasModel.cs",
|
||||
"ViewState": "AQIAAAQCAAAAAAAAAAD4vxECAAAQAAAA",
|
||||
"Title": "OperacaoMapaGPSModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"ViewState": "AQIAAAEBAAAAAAAAAAAuwBwBAABuAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-05T22:49:57.884Z",
|
||||
"WhenOpened": "2024-05-06T19:42:55.483Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"DocumentIndex": 4,
|
||||
"Title": "GPSService.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Services\\GPSService.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs",
|
||||
"RelativeToolTip": "AgroBase\\Services\\GPSService.cs",
|
||||
"ViewState": "AQIAAMwAAAAAAAAAAAAmwO0AAAAyAAAA",
|
||||
"ViewState": "AQIAAMAAAAAAAAAAAAAAANgAAAA0AAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-05T13:17:27.166Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"DocumentIndex": 1,
|
||||
"Title": "frmSimulacaoMapaGPS.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
|
||||
"ViewState": "AQIAABIAAAAAAAAAAAArwHEAAAAIAAAA",
|
||||
"ViewState": "AQIAALMAAAAAAAAAAIAywDkBAAAMAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-03T22:41:17.732Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 6,
|
||||
"DocumentIndex": 3,
|
||||
"Title": "frmSimulacaoMapaGPS.cs [Design]",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs",
|
||||
|
|
@ -119,15 +85,15 @@
|
|||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"Title": "OperacaoMapaGPSModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
|
||||
"ViewState": "AQIAAFMAAAAAAAAAAAAqwOMAAABFAAAA",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "MapasModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\MapasModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\MapasModel.cs",
|
||||
"ViewState": "AQIAADgAAAAAAAAAAIAywMYAAAAMAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-03T22:26:26.456Z",
|
||||
"WhenOpened": "2024-05-06T16:37:41.166Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@
|
|||
this.lblDirecao = new System.Windows.Forms.Label();
|
||||
this.lblStatus = new System.Windows.Forms.Label();
|
||||
this.gpbGPS = new System.Windows.Forms.GroupBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtAnguloControle = new System.Windows.Forms.TextBox();
|
||||
this.lblVelocidade = new System.Windows.Forms.Label();
|
||||
this.txtVelocidade = new System.Windows.Forms.TextBox();
|
||||
this.btnAcrescentarGPS = new System.Windows.Forms.Button();
|
||||
this.lblDistancia = new System.Windows.Forms.Label();
|
||||
this.txtDistanciaGPS = new System.Windows.Forms.TextBox();
|
||||
|
|
@ -62,10 +66,6 @@
|
|||
this.pnlOrientacaoTrajeto = new System.Windows.Forms.Panel();
|
||||
this.pnlSonar = new System.Windows.Forms.Panel();
|
||||
this.picSonar = new System.Windows.Forms.PictureBox();
|
||||
this.txtVelocidade = new System.Windows.Forms.TextBox();
|
||||
this.lblVelocidade = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtAnguloControle = new System.Windows.Forms.TextBox();
|
||||
this.pnlOpcoes.SuspendLayout();
|
||||
this.gpbSonar.SuspendLayout();
|
||||
this.gpbGPS.SuspendLayout();
|
||||
|
|
@ -311,6 +311,46 @@
|
|||
this.gpbGPS.TabStop = false;
|
||||
this.gpbGPS.Text = "GPS";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(304, 22);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(102, 16);
|
||||
this.label1.TabIndex = 27;
|
||||
this.label1.Text = "Angulo Controle";
|
||||
//
|
||||
// txtAnguloControle
|
||||
//
|
||||
this.txtAnguloControle.Enabled = false;
|
||||
this.txtAnguloControle.Location = new System.Drawing.Point(307, 41);
|
||||
this.txtAnguloControle.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.txtAnguloControle.Name = "txtAnguloControle";
|
||||
this.txtAnguloControle.Size = new System.Drawing.Size(71, 22);
|
||||
this.txtAnguloControle.TabIndex = 26;
|
||||
this.txtAnguloControle.Text = "0";
|
||||
this.txtAnguloControle.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// lblVelocidade
|
||||
//
|
||||
this.lblVelocidade.AutoSize = true;
|
||||
this.lblVelocidade.Location = new System.Drawing.Point(304, 64);
|
||||
this.lblVelocidade.Name = "lblVelocidade";
|
||||
this.lblVelocidade.Size = new System.Drawing.Size(77, 16);
|
||||
this.lblVelocidade.TabIndex = 25;
|
||||
this.lblVelocidade.Text = "Velocidade";
|
||||
//
|
||||
// txtVelocidade
|
||||
//
|
||||
this.txtVelocidade.Enabled = false;
|
||||
this.txtVelocidade.Location = new System.Drawing.Point(307, 85);
|
||||
this.txtVelocidade.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.txtVelocidade.Name = "txtVelocidade";
|
||||
this.txtVelocidade.Size = new System.Drawing.Size(71, 22);
|
||||
this.txtVelocidade.TabIndex = 24;
|
||||
this.txtVelocidade.Text = "0";
|
||||
this.txtVelocidade.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// btnAcrescentarGPS
|
||||
//
|
||||
this.btnAcrescentarGPS.Enabled = false;
|
||||
|
|
@ -388,7 +428,7 @@
|
|||
this.txtLongitude.Name = "txtLongitude";
|
||||
this.txtLongitude.Size = new System.Drawing.Size(179, 22);
|
||||
this.txtLongitude.TabIndex = 15;
|
||||
this.txtLongitude.Text = "-47.2639156835239";
|
||||
this.txtLongitude.Text = "-47.3815675";
|
||||
this.txtLongitude.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// txtLatitude
|
||||
|
|
@ -398,7 +438,7 @@
|
|||
this.txtLatitude.Name = "txtLatitude";
|
||||
this.txtLatitude.Size = new System.Drawing.Size(179, 22);
|
||||
this.txtLatitude.TabIndex = 14;
|
||||
this.txtLatitude.Text = "-22.3397915668518";
|
||||
this.txtLatitude.Text = "-22.2130615";
|
||||
this.txtLatitude.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// btnIniciarGPS
|
||||
|
|
@ -458,46 +498,6 @@
|
|||
this.picSonar.TabIndex = 0;
|
||||
this.picSonar.TabStop = false;
|
||||
//
|
||||
// txtVelocidade
|
||||
//
|
||||
this.txtVelocidade.Enabled = false;
|
||||
this.txtVelocidade.Location = new System.Drawing.Point(307, 85);
|
||||
this.txtVelocidade.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.txtVelocidade.Name = "txtVelocidade";
|
||||
this.txtVelocidade.Size = new System.Drawing.Size(71, 22);
|
||||
this.txtVelocidade.TabIndex = 24;
|
||||
this.txtVelocidade.Text = "0";
|
||||
this.txtVelocidade.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// lblVelocidade
|
||||
//
|
||||
this.lblVelocidade.AutoSize = true;
|
||||
this.lblVelocidade.Location = new System.Drawing.Point(304, 64);
|
||||
this.lblVelocidade.Name = "lblVelocidade";
|
||||
this.lblVelocidade.Size = new System.Drawing.Size(77, 16);
|
||||
this.lblVelocidade.TabIndex = 25;
|
||||
this.lblVelocidade.Text = "Velocidade";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(304, 22);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(102, 16);
|
||||
this.label1.TabIndex = 27;
|
||||
this.label1.Text = "Angulo Controle";
|
||||
//
|
||||
// txtAnguloControle
|
||||
//
|
||||
this.txtAnguloControle.Enabled = false;
|
||||
this.txtAnguloControle.Location = new System.Drawing.Point(307, 41);
|
||||
this.txtAnguloControle.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.txtAnguloControle.Name = "txtAnguloControle";
|
||||
this.txtAnguloControle.Size = new System.Drawing.Size(71, 22);
|
||||
this.txtAnguloControle.TabIndex = 26;
|
||||
this.txtAnguloControle.Text = "0";
|
||||
this.txtAnguloControle.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// frmSimulacaoMapaGPS
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
|
|
|
|||
|
|
@ -166,5 +166,12 @@ namespace AgroBase.Models
|
|||
Piscando = 2
|
||||
}
|
||||
|
||||
public enum TrajetoriaTipo
|
||||
{
|
||||
Rua = 0,
|
||||
Dinamica = 1,
|
||||
Geral = 2
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,5 @@ namespace AgroBase.Models
|
|||
public double Orientacao { get; set; }
|
||||
public int idxRua { get; set; } = -1;
|
||||
public DirecaoCarroRua DirecaoTrecho { get; set; } = DirecaoCarroRua.Parado;
|
||||
public bool Passado { get; set; } = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ namespace AgroBase.Models
|
|||
public List<GPSModel> TrajetoriaDinamica { get; set; } = new List<GPSModel>();
|
||||
public List<string> RuasPercorrer { get; set; } = new List<string>();
|
||||
public int IdxRuaAtual { get; set; } = 0;
|
||||
public int IdxUltimoPontoTrajetoria { get; set;} = 0;
|
||||
public int IdxUltimoPontoTrajetoriaDinamica { get; set;} = 0;
|
||||
public double DistanciaTotal { get; set; } = 0;
|
||||
public DirecaoCarroRua DirecaoCaminho
|
||||
{
|
||||
|
|
@ -34,7 +36,7 @@ namespace AgroBase.Models
|
|||
DirecaoCarroRua direcaoCaminho = DirecaoCarroRua.Parado;
|
||||
if (TrajetoriaDinamica.Any())
|
||||
{
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(TrajetoriaDinamica);
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(TrajetoriaDinamica, TrajetoriaTipo.Dinamica);
|
||||
int idxPontoMaisProximo = TrajetoriaDinamica.IndexOf(PontoMaisProximo);
|
||||
direcaoCaminho = TrajetoriaDinamica[idxPontoMaisProximo].DirecaoTrecho;
|
||||
}
|
||||
|
|
@ -72,7 +74,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
PontosRua.Reverse();
|
||||
}
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(Trajetoria[IdxRuaAtual]);
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(PontosRua, TrajetoriaTipo.Rua);
|
||||
int idx = PontosRua.IndexOf(PontoMaisProximo);
|
||||
foreach (var Ponto in PontosRua)
|
||||
{
|
||||
|
|
@ -164,8 +166,14 @@ namespace AgroBase.Models
|
|||
{
|
||||
if (TrajetoriaDinamica.Any())
|
||||
{
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(TrajetoriaDinamica);
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(TrajetoriaDinamica, TrajetoriaTipo.Dinamica);
|
||||
int idx = TrajetoriaDinamica.IndexOf(PontoMaisProximo);
|
||||
|
||||
if ((idx + 1) >= TrajetoriaDinamica.Count())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
double angulo = GPSService.CalcularOrientacao(TrajetoriaDinamica[idx], TrajetoriaDinamica[idx + 1]);
|
||||
if (angulo == 0)
|
||||
{
|
||||
|
|
@ -189,6 +197,11 @@ namespace AgroBase.Models
|
|||
{
|
||||
get
|
||||
{
|
||||
if (IdxRuaAtual >= Trajetoria.Count())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
double distancia = 0;
|
||||
|
||||
List<GPSModel> RuaEsquerda = new List<GPSModel>();
|
||||
|
|
@ -202,11 +215,12 @@ namespace AgroBase.Models
|
|||
{
|
||||
if (IdxRuaAtual > 0)
|
||||
{
|
||||
GPSModel pontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(Trajetoria[IdxRuaAtual - 1]);
|
||||
GPSModel pontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(Trajetoria[IdxRuaAtual - 1], TrajetoriaTipo.Geral);
|
||||
double distanciaP0 = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, pontoMaisProximo);
|
||||
if (distanciaP0 < Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.MargemLimiteEntradaRua)
|
||||
{
|
||||
RuaEsquerda = Trajetoria[IdxRuaAtual - 1];
|
||||
Trajetoria[IdxRuaAtual - 1].ForEach(x => RuaEsquerda.Add(x));
|
||||
RuaEsquerda.Reverse();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -228,6 +242,11 @@ namespace AgroBase.Models
|
|||
{
|
||||
get
|
||||
{
|
||||
if (IdxRuaAtual >= Trajetoria.Count())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
double distancia = 0;
|
||||
|
||||
List<GPSModel> RuaDireita = new List<GPSModel>();
|
||||
|
|
@ -235,13 +254,14 @@ namespace AgroBase.Models
|
|||
{
|
||||
if (DirecaoCaminho == DirecaoCarroRua.Volta)
|
||||
{
|
||||
RuaDireita = Trajetoria[IdxRuaAtual];
|
||||
Trajetoria[IdxRuaAtual].ForEach(x => RuaDireita.Add(x));
|
||||
RuaDireita.Reverse();
|
||||
}
|
||||
else if (DirecaoCaminho == DirecaoCarroRua.Ida)
|
||||
{
|
||||
if (IdxRuaAtual > 0)
|
||||
{
|
||||
GPSModel pontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(Trajetoria[IdxRuaAtual - 1]);
|
||||
GPSModel pontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(Trajetoria[IdxRuaAtual - 1], TrajetoriaTipo.Geral);
|
||||
double distanciaP0 = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, pontoMaisProximo);
|
||||
if (distanciaP0 < Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.MargemLimiteEntradaRua)
|
||||
{
|
||||
|
|
@ -448,7 +468,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
GPSModel pontoAtual = GPSService.UltimaLeitura;
|
||||
|
||||
GPSModel P0 = GPSService.PontoMaisProximoRuaProjetada(Rua);
|
||||
GPSModel P0 = GPSService.PontoMaisProximoRuaProjetada(Rua, TrajetoriaTipo.Geral);
|
||||
int idxP0 = Rua.IndexOf(P0);
|
||||
bool PontoProximo = idxP0 < Rua.Count() - 1;
|
||||
bool PontoAnterior = idxP0 > 0;
|
||||
|
|
@ -480,6 +500,14 @@ namespace AgroBase.Models
|
|||
double anguloProjetar = GPSService.CalcularOrientacao(RuaAtual.First(), RuaAtual.Skip(1).First()) + 90;
|
||||
|
||||
List<GPSModel> RuaProjetada = ProjetarRua(RuaAtual, distanciaEntreRuas, anguloProjetar);
|
||||
|
||||
if (Caminho.Any())
|
||||
{
|
||||
double dist0 = GPSService.DistanciaEntrePontos(Caminho[Caminho.Count() - 1], RuaProjetada[0]);
|
||||
double dist1 = GPSService.DistanciaEntrePontos(Caminho[Caminho.Count() - 1], RuaProjetada[RuaProjetada.Count() - 1]);
|
||||
direcaoRua = dist0 < dist1 ? DirecaoCarroRua.Ida : DirecaoCarroRua.Volta;
|
||||
}
|
||||
|
||||
RuaProjetada.ForEach(x =>
|
||||
{
|
||||
x.idxRua = i;
|
||||
|
|
@ -496,7 +524,7 @@ namespace AgroBase.Models
|
|||
|
||||
if (!Caminho.Any())
|
||||
{
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(RuaProjetada);
|
||||
GPSModel PontoMaisProximo = GPSService.PontoMaisProximoRuaProjetada(RuaProjetada, TrajetoriaTipo.Rua);
|
||||
int idxPontoMaisProximo = RuaProjetada.IndexOf(PontoMaisProximo);
|
||||
|
||||
GPSModel inicio = GPSService.UltimaLeitura;
|
||||
|
|
@ -506,7 +534,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
//_caminho.Add(PrimeiroPonto);
|
||||
List<GPSModel> _pontos = GPSService.InterpolarPontos(inicio, PrimeiroPonto, 1.0);
|
||||
if (GPSService.CompararDirecaoTrajeto(_pontos, RuaProjetada))
|
||||
if (_pontos.Count() == 1 || GPSService.CompararDirecaoTrajeto(_pontos, RuaProjetada))
|
||||
{
|
||||
_caminho.AddRange(_pontos);
|
||||
}
|
||||
|
|
@ -524,13 +552,22 @@ namespace AgroBase.Models
|
|||
_caminho.ForEach(x => x.DirecaoTrecho = direcaoRua);
|
||||
Caminho.AddRange(_caminho);
|
||||
|
||||
direcaoRua = direcaoRua == DirecaoCarroRua.Ida ? DirecaoCarroRua.Volta : DirecaoCarroRua.Ida;
|
||||
//direcaoRua = direcaoRua == DirecaoCarroRua.Ida ? DirecaoCarroRua.Volta : DirecaoCarroRua.Ida;
|
||||
}
|
||||
else
|
||||
{
|
||||
List<GPSModel> _caminho = new List<GPSModel>();
|
||||
double distancia = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, PrimeiroPonto);
|
||||
if (distancia > Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.MargemLimiteEntradaRua * 2)
|
||||
// Verifica se a distância entre o ultimo ponto da rua anterior e o primeiro ponto da nova rua é curto o bastante para gerar a curva de manobra
|
||||
double distancia = GPSService.DistanciaEntrePontos(Caminho[Caminho.Count() - 1], PrimeiroPonto);
|
||||
bool distanciaMinima = distancia < Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.MargemLimiteEntradaRua * 2;
|
||||
|
||||
// Verifica se o angulo formado entre a rua anterior e a rua atual é grande o bastante para gerar a curva de manobra
|
||||
double anguloEntreRuas = GPSService.CalcularOrientacao(Caminho[Caminho.Count() - 1], PrimeiroPonto);
|
||||
double anguloFinalRuaAnterior = GPSService.CalcularOrientacao(Caminho[Caminho.Count() - 2], Caminho[Caminho.Count() - 1]);
|
||||
double difAngulo = anguloFinalRuaAnterior - anguloEntreRuas;
|
||||
bool anguloMinimo = difAngulo >= -45 && difAngulo <= 45;
|
||||
|
||||
if (distanciaMinima && !anguloMinimo)
|
||||
{
|
||||
GPSModel P0 = CalcularPontoControle(Caminho.Last(), PrimeiroPonto, distanciaEntreRuas * 2);
|
||||
List<GPSModel> CurvaConexao = GerarCurvaConexao(Caminho.Last(), PrimeiroPonto, P0, 6);
|
||||
|
|
@ -548,7 +585,7 @@ namespace AgroBase.Models
|
|||
_caminho.ForEach(x => x.DirecaoTrecho = x.DirecaoTrecho != DirecaoCarroRua.Manobra ? direcaoRua : x.DirecaoTrecho);
|
||||
Caminho.AddRange(_caminho);
|
||||
|
||||
direcaoRua = direcaoRua == DirecaoCarroRua.Ida ? DirecaoCarroRua.Volta : DirecaoCarroRua.Ida;
|
||||
//direcaoRua = direcaoRua == DirecaoCarroRua.Ida ? DirecaoCarroRua.Volta : DirecaoCarroRua.Ida;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -563,6 +600,7 @@ namespace AgroBase.Models
|
|||
TrajetoriaDinamica.Add(x);
|
||||
}
|
||||
});
|
||||
Variaveis.OperacaoEmAndamento.Mapa.IdxUltimoPontoTrajetoriaDinamica = 0;
|
||||
|
||||
if (Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.DesvioNecessario)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
using AgroBase.Forms.Operacoes;
|
||||
using AgroBase.Models.Modules;
|
||||
using AgroBase.Services;
|
||||
using CefSharp.DevTools.Database;
|
||||
using Emgu.CV.ML;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -35,8 +38,6 @@ namespace AgroBase.Models.Operacoes
|
|||
StatusCarroMapa.CaminhandoRua,
|
||||
StatusCarroMapa.SaindoRua
|
||||
};
|
||||
public double PesoOrientacaoDentroRua { get; } = 0.3;
|
||||
public double PesoLateralDentroRua { get; } = 0.7;
|
||||
|
||||
|
||||
public void AtualizarDadosControle()
|
||||
|
|
@ -235,16 +236,15 @@ namespace AgroBase.Models.Operacoes
|
|||
|
||||
Sensoriamento.AnguloDif = erroOrientacao;
|
||||
|
||||
|
||||
// Calcule o erro lateral baseado nas distâncias
|
||||
double erroLateral = Variaveis.OperacaoEmAndamento.Mapa.DistanciaEsquerda - Variaveis.OperacaoEmAndamento.Mapa.DistanciaDireita;
|
||||
|
||||
double erroPosicaoLateral = erroLateral * (StatusDentroRua.Contains(statusCarroRua) ? 10 : 1);
|
||||
|
||||
|
||||
// Combina os erros. Ajuste os pesos conforme necessário para o seu caso específico.
|
||||
double pesoOrientacao = erroPosicaoLateral == 0 ? 1 : StatusDentroRua.Contains(statusCarroRua) ? PesoOrientacaoDentroRua : 1 - PesoOrientacaoDentroRua;
|
||||
double pesoPosicaoLateral = erroPosicaoLateral == 0 ? 0 : StatusDentroRua.Contains(statusCarroRua) ? PesoLateralDentroRua : 1 - PesoLateralDentroRua;
|
||||
double erroCombinado = (erroOrientacao * pesoOrientacao) + (erroPosicaoLateral * pesoPosicaoLateral);
|
||||
|
||||
double erroCombinado = CalcularErroCombinado(erroLateral, erroOrientacao, anguloCarro, statusCarroRua);
|
||||
|
||||
|
||||
|
||||
// Atualiza o PID com o erro combinado
|
||||
if (statusCarroRua != StatusCarroMapa.Parado)
|
||||
|
|
@ -277,6 +277,61 @@ namespace AgroBase.Models.Operacoes
|
|||
|
||||
}
|
||||
|
||||
private double CalcularErroCombinado(double erroLateral, double erroOrientacao, double anguloCarro, StatusCarroMapa statusCarroRua)
|
||||
{
|
||||
bool carroDentroRua = StatusDentroRua.Contains(statusCarroRua);
|
||||
|
||||
// Manter o erro lateral sempre com duas casas decimais
|
||||
double multiplicadorErroLateral = erroLateral < 1 ? 10 : erroLateral > 10 && erroLateral < 100 ? 0 : erroLateral > 100 ? 0.1 : 1;
|
||||
double erroPosicaoLateral =
|
||||
Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Count() == 1 ? 0 :
|
||||
(erroLateral * (carroDentroRua ? multiplicadorErroLateral : 1));
|
||||
|
||||
double PesoLateralDentroRua = erroPosicaoLateral / 10;
|
||||
if (PesoLateralDentroRua > 1)
|
||||
{
|
||||
PesoLateralDentroRua = 1;
|
||||
}
|
||||
if (PesoLateralDentroRua < 0)
|
||||
{
|
||||
PesoLateralDentroRua *= -1;
|
||||
}
|
||||
double PesoOrientacaoDentroRua = 1 - PesoLateralDentroRua;
|
||||
|
||||
// Combina os erros. Ajuste os pesos conforme necessário para o seu caso específico.
|
||||
/*double pesoOrientacao = erroPosicaoLateral == 0 ? 1 : carroDentroRua ? PesoOrientacaoDentroRua : 1 - PesoOrientacaoDentroRua;
|
||||
double pesoPosicaoLateral = erroPosicaoLateral == 0 ? 0 : carroDentroRua ? PesoLateralDentroRua : 1 - PesoLateralDentroRua;*/
|
||||
double erroCombinado = (erroOrientacao * PesoOrientacaoDentroRua) + (erroPosicaoLateral * PesoLateralDentroRua);
|
||||
|
||||
|
||||
Direcao direcaoVirar = erroCombinado < anguloCarro ? Direcao.Esquerda : Direcao.Direita;
|
||||
double erroComparar = erroCombinado < 0 ? erroCombinado * -1 : erroCombinado;
|
||||
if (erroCombinado > 30 && false)
|
||||
{
|
||||
if (direcaoVirar == Direcao.Esquerda && Variaveis.OperacaoEmAndamento.Mapa.DistanciaEsquerda > Variaveis.OperacaoEmAndamento.Mapa.DistanciaDireita)
|
||||
{
|
||||
erroCombinado -= 360;
|
||||
/*if (erroCombinado < 0)
|
||||
{
|
||||
erroCombinado *= -1;
|
||||
}*/
|
||||
}
|
||||
else if (direcaoVirar == Direcao.Direita && Variaveis.OperacaoEmAndamento.Mapa.DistanciaDireita > Variaveis.OperacaoEmAndamento.Mapa.DistanciaEsquerda)
|
||||
{
|
||||
erroCombinado -= 360;
|
||||
/*if (erroCombinado < 0)
|
||||
{
|
||||
erroCombinado *= -1;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
direcaoVirar = erroCombinado < anguloCarro ? Direcao.Esquerda : Direcao.Direita;
|
||||
|
||||
|
||||
return erroCombinado;
|
||||
}
|
||||
|
||||
public void CalculaDadosMovimentacaoAutonoma()
|
||||
{
|
||||
var statusAtual = ReferencialRuaGPS.StatusAtual;
|
||||
|
|
@ -399,6 +454,7 @@ namespace AgroBase.Models.Operacoes
|
|||
if (GPSService.CompararDirecaoTrajeto(trechoCarro, trechoCaminho))
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual++;
|
||||
Variaveis.OperacaoEmAndamento.Mapa.IdxUltimoPontoTrajetoria = 0;
|
||||
ManobraConcluida = true;
|
||||
etapaAtual = StatusCarroMapa.Direcionando;
|
||||
Variaveis.OperacaoEmAndamento.Mapa.TrajetoriaDinamica.Clear();
|
||||
|
|
@ -408,67 +464,74 @@ namespace AgroBase.Models.Operacoes
|
|||
// Se o robô não estiver dentro da entrelinha de cana
|
||||
else if (!dentroDaRua)
|
||||
{
|
||||
// Está próximo o bastante e alinhado para entrar na rua
|
||||
if (NaMargemEntradaRua)
|
||||
if (Variaveis.OperacaoEmAndamento.Mapa.TrajetoriaDinamica.Count() <= 3)
|
||||
{
|
||||
DirecaoCarroRua direcao = Direcao;
|
||||
// Está mais próximo do ponto inicial da rota, e a direção do carro é IDA ou então PARADO, logo está entrando na rua, do começo para o final
|
||||
if (ExtremoMaisProximo == 0 && (direcao == DirecaoCarroRua.Ida || direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusCarroMapa.SaindoRua)
|
||||
etapaAtual = StatusCarroMapa.Parado;
|
||||
Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual++;
|
||||
}
|
||||
else
|
||||
{// Está próximo o bastante e alinhado para entrar na rua
|
||||
if (NaMargemEntradaRua)
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.EntrandoRua;
|
||||
}
|
||||
// Está mais próximo do ponto final da rota, e a direção do carro é VOLTA ou então PARADO, logo está entrando na rua, do final para o começo
|
||||
else if (ExtremoMaisProximo == 1 && (direcao == DirecaoCarroRua.Volta || direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusCarroMapa.SaindoRua)
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.EntrandoRua;
|
||||
}
|
||||
// Está mais próximo ao ponto final da rua, e a direção do carro é IDA, mas a rua será iniciada no sentido VOLTA, então para o carro para que ele vire e entre na rua
|
||||
/*else if (ExtremoMaisProximo == 1 && (direcao == DirecaoCarroRua.Ida && Variaveis.OperacaoEmAndamento.DirecaoCaminho == DirecaoCarroRua.Volta))
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Manobrando;
|
||||
}
|
||||
else if (ExtremoMaisProximo == 0 && (direcao == DirecaoCarroRua.Volta && Variaveis.OperacaoEmAndamento.DirecaoCaminho == DirecaoCarroRua.Ida))
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Manobrando;
|
||||
}*/
|
||||
// Robô não está entrando na rua do começo para o fim, nem do fim para o começo
|
||||
else
|
||||
{
|
||||
// Se a etapa anterior era CaminhandoRua, ou seja, robô estava na rua e agora não está mais, então esta saindo da rua
|
||||
if (_EtapaAtual == StatusCarroMapa.CaminhandoRua)
|
||||
DirecaoCarroRua direcao = Direcao;
|
||||
// Está mais próximo do ponto inicial da rota, e a direção do carro é IDA ou então PARADO, logo está entrando na rua, do começo para o final
|
||||
if (ExtremoMaisProximo == 0 && (direcao == DirecaoCarroRua.Ida || direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusCarroMapa.SaindoRua)
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.SaindoRua;
|
||||
etapaAtual = StatusCarroMapa.EntrandoRua;
|
||||
}
|
||||
// Se a etapa anterior não for CaminhandoRua, então significa que ele já iniciou a etapa de sair da rua
|
||||
// Está mais próximo do ponto final da rota, e a direção do carro é VOLTA ou então PARADO, logo está entrando na rua, do final para o começo
|
||||
else if (ExtremoMaisProximo == 1 && (direcao == DirecaoCarroRua.Volta || direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusCarroMapa.SaindoRua)
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.EntrandoRua;
|
||||
}
|
||||
// Está mais próximo ao ponto final da rua, e a direção do carro é IDA, mas a rua será iniciada no sentido VOLTA, então para o carro para que ele vire e entre na rua
|
||||
/*else if (ExtremoMaisProximo == 1 && (direcao == DirecaoCarroRua.Ida && Variaveis.OperacaoEmAndamento.DirecaoCaminho == DirecaoCarroRua.Volta))
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Manobrando;
|
||||
}
|
||||
else if (ExtremoMaisProximo == 0 && (direcao == DirecaoCarroRua.Volta && Variaveis.OperacaoEmAndamento.DirecaoCaminho == DirecaoCarroRua.Ida))
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Manobrando;
|
||||
}*/
|
||||
// Robô não está entrando na rua do começo para o fim, nem do fim para o começo
|
||||
else
|
||||
{
|
||||
/*// Ainda tem ruas a serem percorridas, logo, o robô precisa realizar a manobra para seguir para a próxima rua
|
||||
// Se a etapa anterior era CaminhandoRua, ou seja, robô estava na rua e agora não está mais, então esta saindo da rua
|
||||
if (_EtapaAtual == StatusCarroMapa.CaminhandoRua)
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.SaindoRua;
|
||||
}
|
||||
// Se a etapa anterior não for CaminhandoRua, então significa que ele já iniciou a etapa de sair da rua
|
||||
else
|
||||
{
|
||||
/*// Ainda tem ruas a serem percorridas, logo, o robô precisa realizar a manobra para seguir para a próxima rua
|
||||
if (!Variaveis.OperacaoEmAndamento.OpMapaGPS.Concluido)
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Manobrando;
|
||||
ManobraConcluida = false;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
// Estará se direcionando para o ponto inicial
|
||||
else
|
||||
{
|
||||
// Saiu da margem de saída da rua
|
||||
if (_EtapaAtual == StatusCarroMapa.SaindoRua)
|
||||
{
|
||||
// Ainda tem ruas a serem percorridas, logo, o robô precisa realizar a manobra para seguir para a próxima rua
|
||||
if (!Variaveis.OperacaoEmAndamento.OpMapaGPS.Concluido)
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Manobrando;
|
||||
ManobraConcluida = false;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Estará se direcionando para o ponto inicial
|
||||
else
|
||||
{
|
||||
// Saiu da margem de saída da rua
|
||||
if (_EtapaAtual == StatusCarroMapa.SaindoRua)
|
||||
{
|
||||
// Ainda tem ruas a serem percorridas, logo, o robô precisa realizar a manobra para seguir para a próxima rua
|
||||
if (!Variaveis.OperacaoEmAndamento.OpMapaGPS.Concluido)
|
||||
// Não está na margem de entrada ou saída da rua, então está em estado de direcionamento até a rua da operação
|
||||
else
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Manobrando;
|
||||
ManobraConcluida = false;
|
||||
etapaAtual = StatusCarroMapa.Direcionando;
|
||||
}
|
||||
}
|
||||
// Não está na margem de entrada ou saída da rua, então está em estado de direcionamento até a rua da operação
|
||||
else
|
||||
{
|
||||
etapaAtual = StatusCarroMapa.Direcionando;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Se o robô estiver dentro da entrelinha da cana
|
||||
|
|
@ -796,7 +859,7 @@ namespace AgroBase.Models.Operacoes
|
|||
{
|
||||
NaMargem = true;
|
||||
}
|
||||
else if (DistanciaFinal <= (MargemLimiteEntradaRua * 2) && _EtapaAtual == StatusCarroMapa.CaminhandoRua)
|
||||
else if (DistanciaFinal <= (MargemLimiteEntradaRua * 2) && (_EtapaAtual == StatusCarroMapa.CaminhandoRua || _EtapaAtual == StatusCarroMapa.SaindoRua))
|
||||
{
|
||||
NaMargem = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import sys
|
|||
import folium
|
||||
import requests
|
||||
import re
|
||||
import shutil
|
||||
|
||||
def internet_disponivel():
|
||||
"""Verifica se há conexão com a internet."""
|
||||
|
|
@ -48,6 +49,14 @@ else:
|
|||
bounds = folium.GeoJson(geojson_data).get_bounds()
|
||||
center = [(bounds[0][0] + bounds[1][0]) / 2, (bounds[0][1] + bounds[1][1]) / 2]
|
||||
|
||||
# Adicionando um ID sequencial a cada Feature
|
||||
for idx, feature in enumerate(geojson_data["features"]):
|
||||
# Adicionar uma propriedade 'id' para cada Feature começando do índice zero
|
||||
feature['id'] = idx
|
||||
|
||||
# Copiando o arquivo JSON para a pasta de saída
|
||||
shutil.copy(pathFiles + fileName + '.json', pastaSaida + outputName)
|
||||
|
||||
# Verificar se há conexão com a internet
|
||||
if internet_disponivel():
|
||||
m = folium.Map(location=center, zoom_start=12)
|
||||
|
|
|
|||
|
|
@ -216,17 +216,32 @@ namespace AgroBase.Services
|
|||
|
||||
public static double CalcularDiferencaAngulo(double anguloVariavel, double anguloRef)
|
||||
{
|
||||
// Calcula a diferença entre o ângulo do carro e o ângulo da rua
|
||||
// Calcula a diferença entre o ângulo variável e o ângulo de referência
|
||||
double diferenca = anguloVariavel - anguloRef;
|
||||
|
||||
// Normaliza a diferença para estar entre -180 e 180 graus
|
||||
diferenca = ((diferenca + 180) % 360) - 180;
|
||||
|
||||
// Se a diferença ainda estiver fora do intervalo, ajuste manualmente
|
||||
if (diferenca > 180)
|
||||
{
|
||||
diferenca -= 360;
|
||||
}
|
||||
else if (diferenca < -180)
|
||||
{
|
||||
diferenca += 360;
|
||||
}
|
||||
|
||||
return diferenca;
|
||||
}
|
||||
|
||||
public static GPSModel PontoMaisProximoRuaProjetada(List<GPSModel> RuaProjetada)
|
||||
public static GPSModel PontoMaisProximoRuaProjetada(List<GPSModel> RuaProjetada, TrajetoriaTipo trajetoriaTipo)
|
||||
{
|
||||
int idxUltimoPonto =
|
||||
trajetoriaTipo == TrajetoriaTipo.Rua ? Variaveis.OperacaoEmAndamento.Mapa.IdxUltimoPontoTrajetoria :
|
||||
trajetoriaTipo == TrajetoriaTipo.Dinamica ? Variaveis.OperacaoEmAndamento.Mapa.IdxUltimoPontoTrajetoriaDinamica :
|
||||
0;
|
||||
|
||||
// Verifica se a lista está vazia
|
||||
if (RuaProjetada == null || RuaProjetada.Count == 0)
|
||||
{
|
||||
|
|
@ -234,25 +249,75 @@ namespace AgroBase.Services
|
|||
}
|
||||
|
||||
// Inicializa variáveis
|
||||
GPSModel pontoMaisProximo = RuaProjetada[0];
|
||||
GPSModel pontoMaisProximo = RuaProjetada[idxUltimoPonto];
|
||||
double menorDistancia = double.MaxValue;
|
||||
|
||||
GPSModel posicaoAtual = UltimaLeitura;
|
||||
GPSModel posicaoAnterior = PenultimaLeitura;
|
||||
bool seAproximandoAnterior = false;
|
||||
|
||||
// Itera sobre os pontos da rua projetada
|
||||
foreach (var ponto in RuaProjetada)
|
||||
foreach (var ponto in RuaProjetada.Skip(idxUltimoPonto))
|
||||
{
|
||||
int idxPonto = RuaProjetada.IndexOf(ponto);
|
||||
double distanciaAtual = DistanciaEntrePontos(posicaoAtual, ponto);
|
||||
double distanciaAnterior = DistanciaEntrePontos(posicaoAnterior, ponto);
|
||||
bool seAproximando = distanciaAtual < distanciaAnterior;
|
||||
if (distanciaAtual <= menorDistancia)
|
||||
{
|
||||
ponto.Passado = true;
|
||||
menorDistancia = distanciaAtual;
|
||||
|
||||
if (!seAproximando)
|
||||
{
|
||||
pontoMaisProximo = ponto;
|
||||
|
||||
if (idxPonto > idxUltimoPonto)
|
||||
{
|
||||
idxUltimoPonto = idxPonto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*else if (distanciaAnterior < distanciaAtual && RuaProjetada.Count() > (idxPonto + 1))
|
||||
{
|
||||
idxPonto++;
|
||||
pontoMaisProximo = RuaProjetada[idxPonto];
|
||||
idxUltimoPonto = idxPonto;
|
||||
}*/
|
||||
|
||||
if (seAproximando && !seAproximandoAnterior)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (distanciaAnterior < distanciaAtual)
|
||||
{
|
||||
/*menorDistancia = distanciaAnterior;
|
||||
pontoMaisProximo = ponto;
|
||||
if (idxPonto > idxUltimoPonto)
|
||||
{
|
||||
idxUltimoPonto = idxPonto;
|
||||
}*/
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
seAproximandoAnterior = seAproximando;
|
||||
}
|
||||
|
||||
switch (trajetoriaTipo)
|
||||
{
|
||||
case TrajetoriaTipo.Rua:
|
||||
Variaveis.OperacaoEmAndamento.Mapa.IdxUltimoPontoTrajetoria = idxUltimoPonto;
|
||||
break;
|
||||
case TrajetoriaTipo.Dinamica:
|
||||
Variaveis.OperacaoEmAndamento.Mapa.IdxUltimoPontoTrajetoriaDinamica = idxUltimoPonto;
|
||||
break;
|
||||
}
|
||||
|
||||
return pontoMaisProximo;
|
||||
|
|
@ -363,7 +428,7 @@ namespace AgroBase.Services
|
|||
|
||||
public static bool CompararDirecaoTrajeto(List<GPSModel> Trecho1, List<GPSModel> Trecho2)
|
||||
{
|
||||
double MargemErroAngulo = 45;
|
||||
double MargemErroAngulo = 90;
|
||||
double anguloTrecho1 = CalcularOrientacao(Trecho1[0], Trecho1[Trecho1.Count - 1]);
|
||||
double anguloTrecho2 = CalcularOrientacao(Trecho2[0], Trecho2[Trecho2.Count - 1]);
|
||||
|
||||
|
|
@ -377,6 +442,20 @@ namespace AgroBase.Services
|
|||
}
|
||||
}
|
||||
|
||||
public static bool CompararDirecaoPontos(double anguloP1, double anguloP2)
|
||||
{
|
||||
double MargemErroAngulo = 45;
|
||||
|
||||
if ((anguloP1 + MargemErroAngulo) >= anguloP2 && (anguloP1 - MargemErroAngulo) <= anguloP2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static GPSModel ProjetarPontoDeslocado(GPSModel pontoOriginal, double distancia, double angulo)
|
||||
{
|
||||
// Convertendo ângulo em radianos
|
||||
|
|
@ -437,14 +516,20 @@ namespace AgroBase.Services
|
|||
{
|
||||
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua.Add(new List<GPSModel>());
|
||||
}
|
||||
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].Add(Variaveis.OperacaoEmAndamento.GPSTrajetoria[Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count - 1]);
|
||||
if (Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count > 1)
|
||||
|
||||
if (Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual < Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua.Count())
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].Add(Variaveis.OperacaoEmAndamento.GPSTrajetoria[Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count - 1]);
|
||||
|
||||
if (Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida.Count - 1 < Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida.Add(0);
|
||||
}
|
||||
Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual] += GPSService.DistanciaEntrePontos(Variaveis.OperacaoEmAndamento.GPSTrajetoria[Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count - 1], Variaveis.OperacaoEmAndamento.GPSTrajetoria[Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count - 2]);
|
||||
|
||||
if (Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count > 1)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual] += GPSService.DistanciaEntrePontos(Variaveis.OperacaoEmAndamento.GPSTrajetoria[Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count - 1], Variaveis.OperacaoEmAndamento.GPSTrajetoria[Variaveis.OperacaoEmAndamento.GPSTrajetoria.Count - 2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
[{"Latitude":-22.213619833333333,"Longitude":-47.381514666666668,"DataHora":"2024-05-06T14:28:44","Altitude":628.0,"Velocidade":0.042596,"NumeroSatelites":9,"PrecisaoHorizontal":0.92,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0,"Passado":false}]
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,173 @@
|
|||
{
|
||||
"type":"FeatureCollection",
|
||||
"features":
|
||||
[
|
||||
{
|
||||
"type":"Feature",
|
||||
"properties":
|
||||
{
|
||||
"Id":1517,
|
||||
"Name":"Projeto",
|
||||
"Length":177.10312422025854,
|
||||
"Dist1":0.0,
|
||||
"Dist2":0.0
|
||||
},
|
||||
"geometry":
|
||||
{
|
||||
"type":"LineString",
|
||||
"coordinates":
|
||||
[
|
||||
[-47.381460333333337,-22.213097666666666],
|
||||
[-47.381451666666663,-22.213100666666666],
|
||||
[-47.381444166666668,-22.213106166666666],
|
||||
[-47.38143516666667,-22.213113333333332],
|
||||
[-47.381428333333332,-22.213121833333332],
|
||||
[-47.3814215,-22.213131],
|
||||
[-47.3814145,-22.21314],
|
||||
[-47.381409,-22.213149],
|
||||
[-47.381404666666668,-22.2131585],
|
||||
[-47.381399666666667,-22.213167],
|
||||
[-47.381392833333337,-22.213175666666668],
|
||||
[-47.381385166666668,-22.213183333333333],
|
||||
[-47.381378,-22.213191333333334],
|
||||
[-47.381371666666666,-22.2131995],
|
||||
[-47.381365333333335,-22.213207833333332],
|
||||
[-47.381358,-22.213216],
|
||||
[-47.38135066666667,-22.213224333333333],
|
||||
[-47.381343,-22.213232666666666],
|
||||
[-47.381343,-22.213232666666666],
|
||||
[-47.381335666666665,-22.213241666666665],
|
||||
[-47.381328833333335,-22.213251833333334],
|
||||
[-47.381322166666664,-22.2132625],
|
||||
[-47.381316666666663,-22.213272666666668],
|
||||
[-47.3813115,-22.213282333333332],
|
||||
[-47.3813075,-22.213294],
|
||||
[-47.38130566666667,-22.213304],
|
||||
[-47.381304166666666,-22.213316166666665],
|
||||
[-47.3813055,-22.213326666666667],
|
||||
[-47.381308166666663,-22.213337166666665],
|
||||
[-47.381312166666667,-22.213348],
|
||||
[-47.381316666666663,-22.213359333333333],
|
||||
[-47.381321666666665,-22.213369],
|
||||
[-47.381327166666665,-22.2133785],
|
||||
[-47.381334,-22.213387],
|
||||
[-47.381341,-22.213394833333332],
|
||||
[-47.381348,-22.213402666666667],
|
||||
[-47.381354666666667,-22.213411333333333],
|
||||
[-47.381361,-22.21342],
|
||||
[-47.38136733333333,-22.2134285],
|
||||
[-47.381373,-22.213437],
|
||||
[-47.381379666666668,-22.213445],
|
||||
[-47.381386166666665,-22.213453333333334],
|
||||
[-47.381391833333332,-22.213462666666668],
|
||||
[-47.381397833333331,-22.213473],
|
||||
[-47.381403333333331,-22.213483166666666],
|
||||
[-47.38140966666667,-22.2134925],
|
||||
[-47.381416,-22.213502333333334],
|
||||
[-47.381422,-22.213515],
|
||||
[-47.3814285,-22.213525833333332],
|
||||
[-47.381434166666665,-22.213535166666666],
|
||||
[-47.38144033333333,-22.213545666666668],
|
||||
[-47.3814465,-22.213554333333335],
|
||||
[-47.381453333333333,-22.213565333333332],
|
||||
[-47.381460333333337,-22.213575333333335],
|
||||
[-47.381468,-22.213585333333334],
|
||||
[-47.381475666666667,-22.213595833333333],
|
||||
[-47.381483166666669,-22.213605833333332],
|
||||
[-47.381491,-22.213616],
|
||||
[-47.381499833333336,-22.213626],
|
||||
[-47.381509666666666,-22.2136325],
|
||||
[-47.381520833333333,-22.213639666666666],
|
||||
[-47.381520833333333,-22.213639666666666],
|
||||
[-47.381532166666666,-22.213644833333333],
|
||||
[-47.381544,-22.213646833333332],
|
||||
[-47.381556,-22.213649833333335],
|
||||
[-47.381567666666669,-22.2136535],
|
||||
[-47.381579666666667,-22.213656166666667],
|
||||
[-47.381591333333333,-22.213658166666665],
|
||||
[-47.381603666666663,-22.213657],
|
||||
[-47.381615,-22.213655666666668],
|
||||
[-47.381624833333333,-22.213657666666666],
|
||||
[-47.38163183333333,-22.213662333333332],
|
||||
[-47.3816385,-22.213668666666667],
|
||||
[-47.381642333333332,-22.213676166666666],
|
||||
[-47.381641833333333,-22.213685],
|
||||
[-47.381639,-22.2136935],
|
||||
[-47.3816335,-22.213702],
|
||||
[-47.3816255,-22.213709666666666],
|
||||
[-47.38161516666667,-22.213713333333335],
|
||||
[-47.381603833333337,-22.213713666666667],
|
||||
[-47.381593833333334,-22.213711333333332],
|
||||
[-47.381582333333334,-22.213707166666666],
|
||||
[-47.381571833333332,-22.213700666666668],
|
||||
[-47.381563166666666,-22.213693],
|
||||
[-47.381555333333331,-22.213684666666666],
|
||||
[-47.38154766666667,-22.213676],
|
||||
[-47.3815405,-22.213668166666668],
|
||||
[-47.3815325,-22.213659833333335],
|
||||
[-47.381525833333335,-22.2136515],
|
||||
[-47.381519166666664,-22.2136415],
|
||||
[-47.381512166666667,-22.213632333333333],
|
||||
[-47.381512166666667,-22.213632333333333],
|
||||
[-47.381505333333337,-22.213623833333333],
|
||||
[-47.381498166666667,-22.213615166666667],
|
||||
[-47.381491,-22.2136065],
|
||||
[-47.381483666666668,-22.213597833333335],
|
||||
[-47.381476666666664,-22.213588333333334],
|
||||
[-47.381470166666666,-22.213578833333333],
|
||||
[-47.38146316666667,-22.213569833333334],
|
||||
[-47.381456666666665,-22.213561666666667],
|
||||
[-47.381450166666667,-22.213552],
|
||||
[-47.381444166666668,-22.213542],
|
||||
[-47.381438,-22.213531833333334],
|
||||
[-47.38143216666667,-22.213521833333335],
|
||||
[-47.38142666666667,-22.213512166666668],
|
||||
[-47.381420666666664,-22.213502833333333],
|
||||
[-47.381414833333331,-22.213493333333332],
|
||||
[-47.381408666666665,-22.2134835],
|
||||
[-47.381402833333333,-22.213473333333333],
|
||||
[-47.381396666666667,-22.213462666666668],
|
||||
[-47.381390666666668,-22.213452333333333],
|
||||
[-47.381384666666669,-22.213443166666668],
|
||||
[-47.381378166666664,-22.213434666666668],
|
||||
[-47.381371833333333,-22.213426],
|
||||
[-47.381366333333332,-22.213415666666666],
|
||||
[-47.3813605,-22.213405333333334],
|
||||
[-47.3813545,-22.213394833333332],
|
||||
[-47.3813485,-22.213384833333333],
|
||||
[-47.381342666666669,-22.213374666666667],
|
||||
[-47.381337,-22.213364666666667],
|
||||
[-47.381332166666667,-22.213354166666665],
|
||||
[-47.3813275,-22.213343166666668],
|
||||
[-47.381323833333333,-22.213332666666666],
|
||||
[-47.381322,-22.213321666666666],
|
||||
[-47.381321166666666,-22.2133105],
|
||||
[-47.381321166666666,-22.213299166666665],
|
||||
[-47.381322166666664,-22.213287666666666],
|
||||
[-47.381323833333333,-22.213276666666665],
|
||||
[-47.381327166666665,-22.2132655],
|
||||
[-47.381331833333334,-22.2132545],
|
||||
[-47.381338666666664,-22.213245],
|
||||
[-47.381345333333336,-22.213235333333333],
|
||||
[-47.381352166666666,-22.2132265],
|
||||
[-47.3813585,-22.213218666666666],
|
||||
[-47.381365666666667,-22.213209],
|
||||
[-47.381373666666668,-22.213200333333333],
|
||||
[-47.38138133333333,-22.213191666666667],
|
||||
[-47.3813885,-22.213183333333333],
|
||||
[-47.3813955,-22.213174666666667],
|
||||
[-47.381402833333333,-22.2131665],
|
||||
[-47.381410166666669,-22.213157833333334],
|
||||
[-47.381418333333336,-22.213150166666665],
|
||||
[-47.381426833333336,-22.213141833333335],
|
||||
[-47.381434166666665,-22.213133],
|
||||
[-47.381440166666664,-22.213124166666667],
|
||||
[-47.381446833333335,-22.213115333333334],
|
||||
[-47.381455,-22.213107833333332],
|
||||
[-47.3814645,-22.213102833333334],
|
||||
[-47.381473833333331,-22.213100333333333]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
{
|
||||
"type":"FeatureCollection",
|
||||
"features":
|
||||
[
|
||||
{
|
||||
"type":"Feature",
|
||||
"properties":
|
||||
{
|
||||
"Id":"1517",
|
||||
"Name":"Projeto",
|
||||
"Length":69.0588486447104,
|
||||
"Dist1":0.0,"Dist2":0.0
|
||||
},
|
||||
"geometry":
|
||||
{
|
||||
"id":null,
|
||||
"type":"LineString",
|
||||
"coordinates":
|
||||
[
|
||||
[-47.381499166666664,-22.213093166666667],
|
||||
[-47.38149416666667,-22.213095833333334],
|
||||
[-47.3814855,-22.213100166666667],
|
||||
[-47.381475,-22.213104333333334],
|
||||
[-47.381464,-22.213109166666666],
|
||||
[-47.381453333333333,-22.213116333333332],
|
||||
[-47.381445,-22.2131235],
|
||||
[-47.381438,-22.213131833333332],
|
||||
[-47.38143216666667,-22.213141],
|
||||
[-47.38142633333333,-22.21315],
|
||||
[-47.381419166666667,-22.213158333333332],
|
||||
[-47.381412,-22.213166833333332],
|
||||
[-47.381405,-22.213175666666668],
|
||||
[-47.381397166666666,-22.213185],
|
||||
[-47.381389666666664,-22.213194333333334],
|
||||
[-47.381382666666667,-22.213204],
|
||||
[-47.381375833333337,-22.213213],
|
||||
[-47.381367833333336,-22.2132225],
|
||||
[-47.3813595,-22.213232],
|
||||
[-47.381352,-22.213241833333335],
|
||||
[-47.3813465,-22.213252833333332],
|
||||
[-47.38134183333333,-22.213264],
|
||||
[-47.381337,-22.213274666666667],
|
||||
[-47.381332666666665,-22.213284833333333],
|
||||
[-47.381329166666667,-22.213295666666667],
|
||||
[-47.381327166666665,-22.213306833333334],
|
||||
[-47.381327333333331,-22.213317666666665],
|
||||
[-47.381330166666665,-22.213328166666667],
|
||||
[-47.381334333333335,-22.213338666666665],
|
||||
[-47.3813385,-22.213349333333333],
|
||||
[-47.381343166666667,-22.213360333333334],
|
||||
[-47.381349,-22.213370833333332],
|
||||
[-47.381354833333333,-22.213380666666666],
|
||||
[-47.381360833333332,-22.213391],
|
||||
[-47.38136733333333,-22.213401166666667],
|
||||
[-47.3813745,-22.213410333333332],
|
||||
[-47.381381166666664,-22.213420833333334],
|
||||
[-47.381387666666669,-22.213431833333335],
|
||||
[-47.381394333333333,-22.213442666666666],
|
||||
[-47.381400333333332,-22.2134535],
|
||||
[-47.381406666666663,-22.213464333333334],
|
||||
[-47.3814135,-22.213474833333333],
|
||||
[-47.381421166666669,-22.213484833333332],
|
||||
[-47.3814275,-22.213496],
|
||||
[-47.381435333333336,-22.213505666666666],
|
||||
[-47.381442833333331,-22.213515666666666],
|
||||
[-47.38145,-22.2135265],
|
||||
[-47.3814565,-22.213537833333334],
|
||||
[-47.38146283333333,-22.213548833333334],
|
||||
[-47.3814695,-22.213559],
|
||||
[-47.381478166666668,-22.213569166666666],
|
||||
[-47.381487666666665,-22.213578],
|
||||
[-47.381495166666667,-22.213587],
|
||||
[-47.381502,-22.213596333333335],
|
||||
[-47.381507666666664,-22.213604333333333]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type":"Feature",
|
||||
"properties":
|
||||
{
|
||||
"Id":"1517",
|
||||
"Name":"Projeto",
|
||||
"Length":79.155642202986542,
|
||||
"Dist1":0.0,"Dist2":0.0
|
||||
},
|
||||
"geometry":
|
||||
{
|
||||
"id":null,
|
||||
"type":"LineString",
|
||||
"coordinates":
|
||||
[
|
||||
[-47.381513166666664,-22.213679],
|
||||
[-47.381491333333337,-22.213692833333333],
|
||||
[-47.381484666666665,-22.213698166666667],
|
||||
[-47.381481666666666,-22.213699833333333],
|
||||
[-47.381481166666667,-22.2136995],
|
||||
[-47.381477333333336,-22.213695666666666],
|
||||
[-47.381470833333331,-22.2136885],
|
||||
[-47.381464666666666,-22.2136795],
|
||||
[-47.3814595,-22.213669333333332],
|
||||
[-47.381454166666664,-22.213659833333335],
|
||||
[-47.381449,-22.213650333333334],
|
||||
[-47.381442833333331,-22.213640666666667],
|
||||
[-47.381437,-22.2136315],
|
||||
[-47.381431166666665,-22.213622166666667],
|
||||
[-47.381425833333331,-22.213612166666667],
|
||||
[-47.381420333333331,-22.2136015],
|
||||
[-47.381414333333332,-22.2135915],
|
||||
[-47.381408666666665,-22.213581333333334],
|
||||
[-47.381402666666666,-22.213571666666667],
|
||||
[-47.381396333333335,-22.213562],
|
||||
[-47.381391166666667,-22.213552166666666],
|
||||
[-47.381384833333335,-22.2135415],
|
||||
[-47.38137833333333,-22.213531166666666],
|
||||
[-47.381372,-22.2135225],
|
||||
[-47.3813655,-22.213513166666665],
|
||||
[-47.381358333333331,-22.213503666666668],
|
||||
[-47.381351,-22.213494333333333],
|
||||
[-47.381344166666665,-22.213485666666667],
|
||||
[-47.381337333333335,-22.213476],
|
||||
[-47.381331,-22.213465833333334],
|
||||
[-47.38132516666667,-22.213455333333332],
|
||||
[-47.381318666666665,-22.213445],
|
||||
[-47.3813125,-22.213434833333334],
|
||||
[-47.381305,-22.213425],
|
||||
[-47.3812975,-22.213415],
|
||||
[-47.381290166666666,-22.2134045],
|
||||
[-47.381284,-22.213394],
|
||||
[-47.381277166666663,-22.2133835],
|
||||
[-47.381271166666664,-22.213373166666667],
|
||||
[-47.381265,-22.213363333333334],
|
||||
[-47.381257833333336,-22.213354166666665],
|
||||
[-47.381250333333334,-22.213345666666665],
|
||||
[-47.381245333333332,-22.213336666666667],
|
||||
[-47.38124366666667,-22.213326666666667],
|
||||
[-47.381246,-22.213314833333332],
|
||||
[-47.3812515,-22.213303833333335],
|
||||
[-47.381257833333336,-22.213293333333333],
|
||||
[-47.381263333333337,-22.213282666666668],
|
||||
[-47.381268333333331,-22.213272],
|
||||
[-47.381273166666666,-22.213261833333334],
|
||||
[-47.381278333333334,-22.213252],
|
||||
[-47.381285666666663,-22.213243333333335],
|
||||
[-47.381294166666663,-22.213234833333335],
|
||||
[-47.381302333333331,-22.213226166666665],
|
||||
[-47.381310333333332,-22.213217],
|
||||
[-47.381318666666665,-22.213207833333332],
|
||||
[-47.381327333333331,-22.213199666666668],
|
||||
[-47.38133633333333,-22.213190833333332],
|
||||
[-47.381346,-22.2131815],
|
||||
[-47.381355333333332,-22.213172],
|
||||
[-47.381364833333336,-22.213162333333333],
|
||||
[-47.381373833333335,-22.213152333333333],
|
||||
[-47.3813835,-22.213143],
|
||||
[-47.381392666666663,-22.213134333333333]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"Id":1517,"Name":"Projeto","Length":2.1950901896934623,"Dist1":0.0,"Dist2":0.0},"geometry":{"id":null,"type":"LineString","coordinates":[[-47.38163183333333,-22.213156666666666],[-47.381633,-22.213156],[-47.381632833333335,-22.213156666666666],[-47.3816325,-22.213156833333333],[-47.381634166666664,-22.213156],[-47.381636666666665,-22.213154166666666],[-47.3816335,-22.213157333333335],[-47.381628333333332,-22.2131615],[-47.381627833333333,-22.213162666666666],[-47.381627166666668,-22.213163166666668]]}}]}
|
||||
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"Id":"1517","Name":"Projeto","Length":79.155642202986542,"Dist1":0.0,"Dist2":0.0},"geometry":{"id":null,"type":"LineString","coordinates":[[-47.381513166666664,-22.213679],[-47.381501666666665,-22.2136855],[-47.381491333333337,-22.213692833333333],[-47.381484666666665,-22.213698166666667],[-47.381481666666666,-22.213699833333333],[-47.381481166666667,-22.2136995],[-47.381477333333336,-22.213695666666666],[-47.381470833333331,-22.2136885],[-47.381464666666666,-22.2136795],[-47.3814595,-22.213669333333332],[-47.381454166666664,-22.213659833333335],[-47.381449,-22.213650333333334],[-47.381442833333331,-22.213640666666667],[-47.381437,-22.2136315],[-47.381431166666665,-22.213622166666667],[-47.381425833333331,-22.213612166666667],[-47.381420333333331,-22.2136015],[-47.381414333333332,-22.2135915],[-47.381408666666665,-22.213581333333334],[-47.381402666666666,-22.213571666666667],[-47.381396333333335,-22.213562],[-47.381391166666667,-22.213552166666666],[-47.381384833333335,-22.2135415],[-47.38137833333333,-22.213531166666666],[-47.381372,-22.2135225],[-47.3813655,-22.213513166666665],[-47.381358333333331,-22.213503666666668],[-47.381351,-22.213494333333333],[-47.381344166666665,-22.213485666666667],[-47.381337333333335,-22.213476],[-47.381331,-22.213465833333334],[-47.38132516666667,-22.213455333333332],[-47.381318666666665,-22.213445],[-47.3813125,-22.213434833333334],[-47.381305,-22.213425],[-47.3812975,-22.213415],[-47.381290166666666,-22.2134045],[-47.381284,-22.213394],[-47.381277166666663,-22.2133835],[-47.381271166666664,-22.213373166666667],[-47.381265,-22.213363333333334],[-47.381257833333336,-22.213354166666665],[-47.381250333333334,-22.213345666666665],[-47.381245333333332,-22.213336666666667],[-47.38124366666667,-22.213326666666667],[-47.381246,-22.213314833333332],[-47.3812515,-22.213303833333335],[-47.381257833333336,-22.213293333333333],[-47.381263333333337,-22.213282666666668],[-47.381268333333331,-22.213272],[-47.381273166666666,-22.213261833333334],[-47.381278333333334,-22.213252],[-47.381285666666663,-22.213243333333335],[-47.381294166666663,-22.213234833333335],[-47.381302333333331,-22.213226166666665],[-47.381310333333332,-22.213217],[-47.381318666666665,-22.213207833333332],[-47.381327333333331,-22.213199666666668],[-47.38133633333333,-22.213190833333332],[-47.381346,-22.2131815],[-47.381355333333332,-22.213172],[-47.381364833333336,-22.213162333333333],[-47.381373833333335,-22.213152333333333],[-47.3813835,-22.213143],[-47.381392666666663,-22.213134333333333]]}}]}
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_cc542e997f50a5c3413836621529b149 {
|
||||
#map_4c3508b94c9767bf327ad97283d0bde0 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
|
|
@ -39,14 +39,14 @@
|
|||
<body>
|
||||
|
||||
|
||||
<div class="folium-map" id="map_cc542e997f50a5c3413836621529b149" ></div>
|
||||
<div class="folium-map" id="map_4c3508b94c9767bf327ad97283d0bde0" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
|
||||
var map_cc542e997f50a5c3413836621529b149 = L.map(
|
||||
"map_cc542e997f50a5c3413836621529b149",
|
||||
var map_4c3508b94c9767bf327ad97283d0bde0 = L.map(
|
||||
"map_4c3508b94c9767bf327ad97283d0bde0",
|
||||
{
|
||||
center: [0.0, 0.0],
|
||||
crs: L.CRS.EPSG3857,
|
||||
|
|
@ -59,15 +59,6 @@
|
|||
|
||||
|
||||
|
||||
|
||||
var tile_layer_d17ce14d549a3fb1bcc02c6ad6d0ca1f = L.tileLayer(
|
||||
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
);
|
||||
|
||||
|
||||
tile_layer_d17ce14d549a3fb1bcc02c6ad6d0ca1f.addTo(map_cc542e997f50a5c3413836621529b149);
|
||||
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
|
@ -87,7 +78,7 @@
|
|||
}
|
||||
trajeto_json_add({"features": []});
|
||||
|
||||
trajeto_json.addTo(map_cc542e997f50a5c3413836621529b149);
|
||||
trajeto_json.addTo(map_4c3508b94c9767bf327ad97283d0bde0);
|
||||
|
||||
function adicionarGeometria(novaGeometria) {
|
||||
trajeto_json.addData(novaGeometria);
|
||||
|
|
@ -145,7 +136,7 @@
|
|||
|
||||
var marcadorDinamico = L.marker([0, 0], {
|
||||
icon: customIcon
|
||||
}).addTo(map_cc542e997f50a5c3413836621529b149);
|
||||
}).addTo(map_4c3508b94c9767bf327ad97283d0bde0);
|
||||
|
||||
// Conectar ao broker MQTT
|
||||
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
|
||||
|
|
@ -184,7 +175,7 @@
|
|||
marcadorDinamico.setRotationAngle(angulo);
|
||||
|
||||
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||||
map_cc542e997f50a5c3413836621529b149.setView(novaPosicao, map_cc542e997f50a5c3413836621529b149.getZoom());
|
||||
map_4c3508b94c9767bf327ad97283d0bde0.setView(novaPosicao, map_4c3508b94c9767bf327ad97283d0bde0.getZoom());
|
||||
});
|
||||
|
||||
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -4,6 +4,7 @@ import sys
|
|||
import folium
|
||||
import requests
|
||||
import re
|
||||
import shutil
|
||||
|
||||
def internet_disponivel():
|
||||
"""Verifica se há conexão com a internet."""
|
||||
|
|
@ -48,6 +49,14 @@ else:
|
|||
bounds = folium.GeoJson(geojson_data).get_bounds()
|
||||
center = [(bounds[0][0] + bounds[1][0]) / 2, (bounds[0][1] + bounds[1][1]) / 2]
|
||||
|
||||
# Adicionando um ID sequencial a cada Feature
|
||||
for idx, feature in enumerate(geojson_data["features"]):
|
||||
# Adicionar uma propriedade 'id' para cada Feature começando do índice zero
|
||||
feature['id'] = idx
|
||||
|
||||
# Copiando o arquivo JSON para a pasta de saída
|
||||
shutil.copy(pathFiles + fileName + '.json', pastaSaida + outputName)
|
||||
|
||||
# Verificar se há conexão com a internet
|
||||
if internet_disponivel():
|
||||
m = folium.Map(location=center, zoom_start=12)
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -441,4 +441,4 @@ C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Models\deeplabv3pl
|
|||
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.exe.config
|
||||
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.exe
|
||||
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\Debug\AgroBase.pdb
|
||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CopyComplete
|
||||
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.Up2Date
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue