ajuste de controle direcional

This commit is contained in:
Diego Freitas 2024-12-18 10:47:03 -03:00
parent 0787973169
commit 8d97ffc51f
17 changed files with 124 additions and 95 deletions

Binary file not shown.

View File

@ -3,44 +3,44 @@
"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\\ultrasonica05model.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\ultrasonica05model.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\\modules\\movimentacaounificadomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\movimentacaounificadomodel.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\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomodel.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\\generaljoystick.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\generaljoystick.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\\models\\variaveis.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\\variaveis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\variaveis.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\\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\\pidmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\pidmodel.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\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomodel.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\\ultrasonica05model.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\ultrasonica05model.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\\models\\pidmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\pidmodel.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}"
}
],
"DocumentGroupContainers": [
@ -50,63 +50,76 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 3,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"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": "AQIAAMMCAAAAAAAAAAAswDYDAAAZAAAA",
"DocumentIndex": 2,
"Title": "GeneralJoystick.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GeneralJoystick.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\GeneralJoystick.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GeneralJoystick.cs",
"RelativeToolTip": "AgroBase\\Models\\GeneralJoystick.cs",
"ViewState": "AQIAAFkCAAAAAAAAAAAmwC0CAAARAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-18T10:21:04.899Z",
"WhenOpened": "2024-12-18T13:02:20.66Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"DocumentIndex": 0,
"Title": "MovimentacaoUnificadoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"ViewState": "AQIAAFEEAAAAAAAAAAA0wNsEAAAUAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-18T12:25:31.449Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "Variaveis.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Variaveis.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Variaveis.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Variaveis.cs",
"RelativeToolTip": "AgroBase\\Models\\Variaveis.cs",
"ViewState": "AQIAAC8AAAAAAAAAAAA8wEsAAAA5AAAA",
"ViewState": "AQIAAC8AAAAAAAAAAAAywE0AAAAsAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-18T10:12:52.226Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"DocumentIndex": 4,
"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": "AQIAADwAAAAAAAAAAAAgwJ4AAABuAAAA",
"ViewState": "AQIAAD0AAAAAAAAAAAAUwJ4AAABuAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-18T10:08:22.722Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"DocumentIndex": 8,
"Title": "UltrasonicA05Model.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\UltrasonicA05Model.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\UltrasonicA05Model.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\UltrasonicA05Model.cs",
"RelativeToolTip": "AgroBase\\Models\\UltrasonicA05Model.cs",
"ViewState": "AQIAAH8AAAAAAAAAAAAuwLYAAAAiAAAA",
"ViewState": "AQIAAEUAAAAAAAAAAAAYwLYAAAAiAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-17T23:45:03.654Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"DocumentIndex": 9,
"Title": "MapasModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\MapasModel.cs",
@ -114,68 +127,56 @@
"RelativeToolTip": "AgroBase\\Models\\MapasModel.cs",
"ViewState": "AQIAAEgAAAAAAAAAAAAAwHUBAABxAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-17T22:49:46.935Z",
"EditorCaption": ""
"WhenOpened": "2024-12-17T22:49:46.935Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "frmSimulacaoMapaGPS.cs [Design]",
"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 [Design]",
"RelativeToolTip": "AgroBase\\Forms\\frmSimulacaoMapaGPS.cs [Design]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-17T22:35:46.496Z",
"EditorCaption": " [Design]"
},
{
"$type": "Document",
"DocumentIndex": 9,
"DocumentIndex": 6,
"Title": "PIDModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\PIDModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\PIDModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\PIDModel.cs",
"RelativeToolTip": "AgroBase\\Models\\PIDModel.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAqwAsAAAAYAAAA",
"ViewState": "AQIAAA4AAAAAAAAAAAA8wBgAAAAMAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-17T21:24:50.059Z"
"WhenOpened": "2024-12-17T21:24:50.059Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"DocumentIndex": 7,
"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": "AQIAAAAAAAAAAAAAAAAAALAAAABhAAAA",
"ViewState": "AQIAADoAAAAAAAAAAAAiwKgAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-17T20:31:58.828Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 7,
"DocumentIndex": 1,
"Title": "OperacaoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ViewState": "AQIAACIBAAAAAAAAAAAzwE4DAAAhAAAA",
"ViewState": "AQIAAKgEAAAAAAAAAAAewL4EAAAMAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-17T20:14:20.606Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"DocumentIndex": 3,
"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": "AQIAACgAAAAAAAAAAAAowD8AAABfAAAA",
"ViewState": "AQIAAAsAAAAAAAAAAAAkwM4AAABAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-17T16:03:54.404Z",
"EditorCaption": ""

View File

@ -182,7 +182,7 @@ namespace AgroBase.Forms
}
double velocidade = FuncoesMatematicas.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_SP);
double velocidade = FuncoesMatematicas.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.SimulacaoRpmControle);
double velocidadeMs = FuncoesMatematicas.ConverteKmhParaMs(velocidade);
txtVelocidade.Text = velocidade.ToString("0.00");
@ -302,7 +302,7 @@ namespace AgroBase.Forms
{
try
{
double angulo = Variaveis.OperacaoEmAndamento.Controle.Angulo;
double angulo = Variaveis.OperacaoEmAndamento.SimulacaoAnguloControle;
DesenharInclinacao((Panel)sender, e, (float)angulo, 90);
}
catch { }
@ -380,10 +380,12 @@ namespace AgroBase.Forms
int errosConsiderar = int.Parse(txtQtdErro.Text);
double anguloControle = Variaveis.OperacaoEmAndamento.SimulacaoAnguloControle;
if (calc)
{
double anguloAtual = double.Parse(txtAnguloGPS.Text);
double novoAngulo = (anguloAtual + Variaveis.OperacaoEmAndamento.Controle.Angulo) % 360;
double novoAngulo = (anguloAtual + anguloControle) % 360;
if (historicoAngulosCarro.Count >= (errosConsiderar + 1))
historicoAngulosCarro.Dequeue(); // Remove o valor mais antigo
@ -399,7 +401,6 @@ namespace AgroBase.Forms
txtAnguloGPS.Text = anguloCarro.ToString("0.00");
}
double anguloControle = Variaveis.OperacaoEmAndamento.Controle.Angulo;
if (historicoAngulosControle.Count >= errosConsiderar && errosConsiderar > 0)
historicoAngulosControle.Dequeue(); // Remove o valor mais antigo

View File

@ -132,7 +132,7 @@ namespace AgroBase.Models
DrawTrajectory(g, TrajetoriaRobo, centerX, centerY, Color.Orange, Pens.OrangeRed);
// Desenha a posição atual do robô (ponto vermelho)
float PxToCm = DrawRobot(g, centerX, centerY, Color.Red, Color.Red, (float)VariaveisEquipamento.LarguraEsquerda, (float)VariaveisEquipamento.LarguraDireita, (float)VariaveisEquipamento.LarguraEsquerda, (float)VariaveisEquipamento.LarguraDireita, AnguloCarro);
float PxToCm = DrawRobot(g, centerX, centerY, Color.Red, Color.Red, (float)VariaveisEquipamento.LarguraEsquerda, (float)VariaveisEquipamento.LarguraDireita, (float)VariaveisEquipamento.ComprimentoFrente, (float)VariaveisEquipamento.ComprimentoTras, AnguloCarro);
if (obstaculoDetectado != null)
{
@ -194,21 +194,22 @@ namespace AgroBase.Models
GPSModel posicaoRobo = GPSService.UltimaLeitura;
// Ajustar o ângulo base para cálculo dos pontos
int agPlus = Convert.ToInt32(135 + angle);
// Calcular os pontos laterais considerando zoom em latitude e longitude
(float xET, float yET) = CalcularPontosLateraisRobo(posicaoRobo, larguraEsquerda, comprimentoTras, x, y, agPlus + 90);
(float xDT, float yDT) = CalcularPontosLateraisRobo(posicaoRobo, larguraDireita, comprimentoTras, x, y, agPlus + 0);
(float xEF, float yEF) = CalcularPontosLateraisRobo(posicaoRobo, larguraEsquerda, comprimentoFrente, x, y, agPlus + 180);
(float xDF, float yDF) = CalcularPontosLateraisRobo(posicaoRobo, larguraDireita, comprimentoFrente, x, y, agPlus + 270);
// Calcular os cantos do retângulo considerando o ângulo
// Calcular os cantos do retângulo usando os pontos calculados
PointF[] corners = new PointF[4];
// Cantos do retângulo com as novas medidas
corners[0] = new PointF(xET, yET); // Superior esquerdo
corners[1] = new PointF(xDT, yDT); // Superior direito
corners[2] = new PointF(xDF, yDF); // Inferior direito
corners[3] = new PointF(xEF, yEF); // Inferior esquerdo
corners[2] = new PointF(xDF, yDF); // Inferior direito
corners[3] = new PointF(xEF, yEF); // Inferior esquerdo
// Desenhar o contorno do robô
using (Pen pen = new Pen(borderColor, 2))
@ -217,8 +218,9 @@ namespace AgroBase.Models
}
// Desenhar a linha indicando a frente do robô (do ponto central para a frente)
DrawFrontLine(g, x, y, xDF, yDF, xEF, yEF, borderColor);
DrawFrontLine(g, x, y, corners[2].X, corners[2].Y, corners[3].X, corners[3].Y, borderColor);
// Calcular a relação pixel para cm baseado na largura total
float PxToCm = Math.Abs(xET - xDT) / (larguraDireita + larguraEsquerda);
return PxToCm;

View File

@ -836,10 +836,12 @@ namespace AgroBase.Models.Modules
public void EnviarComandoControle(Direcao DirecaoAtual)
{
var simulando = Variaveis.OperacaoEmAndamento.Simulando;
bool Freado = DirecaoAtual == Direcao.EmFreio;
(bool AtuarServo, int AnguloFreio) = ConfigFreio.AtualizarDadosFreio(Freado, 0, -1, 5);
if (Comandar && BLD_Inicializado)
if ((Comandar && BLD_Inicializado) || simulando)
{
if (AlarmeSensores || AlarmeMotor)
{
@ -873,6 +875,12 @@ namespace AgroBase.Models.Modules
ComandoLigado = RPM_SP > 0;
Variaveis.OperacaoEmAndamento.SimulacaoRpmControle = (RPM_SP / VariaveisEquipamento.RelacaoRPM);
if (simulando)
{
return;
}
switch (DirecaoAtual)
{
case Direcao.Frente:
@ -1186,7 +1194,9 @@ namespace AgroBase.Models.Modules
public void EnviarComandoControle(Direcao Direcao, bool Forcar = false)
{
if (MKS_Inicializado && (Comandar || Forcar))
var simulando = Variaveis.OperacaoEmAndamento.Simulando;
if ((MKS_Inicializado && (Comandar || Forcar)) || simulando)
{
// Se o motor estiver nao utilizado mas nao estiver no angulo zero
if (!Comandar)
@ -1219,12 +1229,19 @@ namespace AgroBase.Models.Modules
AnguloTipoMovimento != -1 ? AnguloTipoMovimento :
Variaveis.OperacaoEmAndamento.Controle.Angulo;
Variaveis.OperacaoEmAndamento.SimulacaoAnguloControle = Angulo_SP;
int mx = Sentido_SP == Sentido.Antihorario ? -1 : 1;
Angulo_SP = Math.Abs(Angulo_SP) * mx;
}
if (true || !AtingiuAnguloSP)
if (simulando)
{
return;
}
if (!AtingiuAnguloSP)
{
MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoMovimento(EnderecoByte, Angulo_SP, Velocidade, Sentido_SP));
UltimoComandoEnviado = DateTime.Now;

View File

@ -268,6 +268,8 @@ namespace AgroBase.Models
}
public bool Iniciado { get; set; }
public bool Simulando { get; set; } = false;
public double SimulacaoAnguloControle { get; set; } = 0;
public double SimulacaoRpmControle { get; set; } = 0;
public bool Finalizando { get; set; } = false;
public long TimestampInicio { get; set; }
public long TimestampFim { get; set; }
@ -1210,7 +1212,7 @@ namespace AgroBase.Models
_ControleAnterior.PercentualVelocidadeSP = _Controle.PercentualVelocidadeSP;
}
if (ControleDir != null && Convert.ToInt32(_Controle.Angulo) != Convert.ToInt32(_ControleAnterior.Angulo) && (Agora - ControleDir.UltimoComando).TotalMilliseconds > ControleDir.DelayEnvioComando)
if (ControleDir != null && (Agora - ControleDir.UltimoComando).TotalMilliseconds > ControleDir.DelayEnvioComando) // && Convert.ToInt32(_Controle.Angulo) != Convert.ToInt32(_ControleAnterior.Angulo)
{
// Enviar comando DIR
var Protocolos = EnviarProtocoloComando(Variaveis.OperacaoEmAndamento.DispMvd, T_Code.Dir, ForcarEnvio);
@ -1276,6 +1278,8 @@ namespace AgroBase.Models
_Controle.Direcao = Direcao.Frente;
}
}
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(Mod => Mod.MovMotor.EnviarComandoControle(_Controle.Direcao));
}
else if (Tipo == T_Code.Dir)
{
@ -1301,14 +1305,16 @@ namespace AgroBase.Models
_Controle.Direcao = Direcao.Direita;
}
}
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(Mod => Mod.DirMotor.EnviarComandoControle(_Controle.Direcao));
}
GeneralJoystick.EnviaComandoMotor(
/*GeneralJoystick.EnviaComandoMotor(
_Controle.Direcao == Direcao.Frente ? Keys.Up :
_Controle.Direcao == Direcao.Tras ? Keys.Down :
_Controle.Direcao == Direcao.Esquerda ? Keys.Left :
_Controle.Direcao == Direcao.Direita ? Keys.Right :
Keys.Escape, Tipo, ForcarEnvio);
Keys.Escape, Tipo, ForcarEnvio);*/
Protocolos = new List<string>()
{

View File

@ -74,6 +74,8 @@ namespace AgroBase.Models
{
public static double LarguraEsquerda { get; } = 60;
public static double LarguraDireita { get; } = 25;
public static double ComprimentoFrente { get; } = 35;
public static double ComprimentoTras { get; } = 90;
public static double LarguraEquipamentoMm
{
get

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,7 @@
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1 {
#map_a779083cfab5ca134b2c00aa027920d3 {
position: relative;
width: 100.0%;
height: 100.0%;
@ -39,14 +39,14 @@
<body>
<div class="folium-map" id="map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1" ></div>
<div class="folium-map" id="map_a779083cfab5ca134b2c00aa027920d3" ></div>
</body>
<script>
var map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1 = L.map(
"map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1",
var map_a779083cfab5ca134b2c00aa027920d3 = L.map(
"map_a779083cfab5ca134b2c00aa027920d3",
{
center: [-22.213100083333334, -47.38141841666666],
crs: L.CRS.EPSG3857,
@ -60,13 +60,13 @@
var tile_layer_b1319f46ace58751b7062db8f25f20b3 = L.tileLayer(
var tile_layer_e0351f36649211e16b896b17b0d8af80 = 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_b1319f46ace58751b7062db8f25f20b3.addTo(map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1);
tile_layer_e0351f36649211e16b896b17b0d8af80.addTo(map_a779083cfab5ca134b2c00aa027920d3);
@ -82,7 +82,7 @@
}*/
});
}
function geo_json_cfc16ab3eb25dd8ad7693622d16294d9_onEachFeature(feature, layer) {
function geo_json_90589de6d7080724b8f3a12abd506554_onEachFeature(feature, layer) {
layer.on({
click: function(e) {
@ -118,20 +118,20 @@
}*/
});
};
var geo_json_cfc16ab3eb25dd8ad7693622d16294d9 = L.geoJson(null, {
onEachFeature: geo_json_cfc16ab3eb25dd8ad7693622d16294d9_onEachFeature,
var geo_json_90589de6d7080724b8f3a12abd506554 = L.geoJson(null, {
onEachFeature: geo_json_90589de6d7080724b8f3a12abd506554_onEachFeature,
});
function geo_json_cfc16ab3eb25dd8ad7693622d16294d9_add (data) {
geo_json_cfc16ab3eb25dd8ad7693622d16294d9
function geo_json_90589de6d7080724b8f3a12abd506554_add (data) {
geo_json_90589de6d7080724b8f3a12abd506554
.addData(data);
}
geo_json_cfc16ab3eb25dd8ad7693622d16294d9_add({"features": [{"geometry": {"coordinates": [[-47.38149533333333, -22.213068166666666], [-47.38146916666667, -22.213091333333335], [-47.38141825, -22.213137833333334], [-47.3813925, -22.213161666666668], [-47.381369666666664, -22.2131845]], "id": null, "type": "LineString"}, "id": 0, "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": "1", "Length": 21.332976190943135, "Name": "Projeto"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.38134016666667, -22.213175666666668], [-47.38137533333333, -22.213137166666666], [-47.38140933333333, -22.213102666666668], [-47.381453666666665, -22.213058166666666], [-47.38149666666666, -22.213015666666667]], "id": null, "type": "LineString"}, "id": 1, "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": "2", "Length": 24.045328359726675, "Name": "Projeto"}, "type": "Feature"}], "type": "FeatureCollection"});
geo_json_90589de6d7080724b8f3a12abd506554_add({"features": [{"geometry": {"coordinates": [[-47.38149533333333, -22.213068166666666], [-47.38146916666667, -22.213091333333335], [-47.38141825, -22.213137833333334], [-47.3813925, -22.213161666666668], [-47.381369666666664, -22.2131845]], "id": null, "type": "LineString"}, "id": 0, "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": "1", "Length": 21.332976190943135, "Name": "Projeto"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.38134016666667, -22.213175666666668], [-47.38137533333333, -22.213137166666666], [-47.38140933333333, -22.213102666666668], [-47.381453666666665, -22.213058166666666], [-47.38149666666666, -22.213015666666667]], "id": null, "type": "LineString"}, "id": 1, "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": "2", "Length": 24.045328359726675, "Name": "Projeto"}, "type": "Feature"}], "type": "FeatureCollection"});
geo_json_cfc16ab3eb25dd8ad7693622d16294d9.addTo(map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1);
geo_json_90589de6d7080724b8f3a12abd506554.addTo(map_a779083cfab5ca134b2c00aa027920d3);
</script>
@ -152,7 +152,7 @@
}
trajeto_json_add({"features": []});
trajeto_json.addTo(map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1);
trajeto_json.addTo(map_a779083cfab5ca134b2c00aa027920d3);
function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria);
@ -210,7 +210,7 @@
}
trajeto_dinamico_json_add({"features": []});
trajeto_dinamico_json.addTo(map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1);
trajeto_dinamico_json.addTo(map_a779083cfab5ca134b2c00aa027920d3);
function adicionarGeometriaDinamica(novaGeometria) {
trajeto_dinamico_json.addData(novaGeometria);
@ -263,9 +263,9 @@
var marcadorEquipamento = L.marker([0, 0], {
icon: customIcon
}).addTo(map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1);
}).addTo(map_a779083cfab5ca134b2c00aa027920d3);
var marcadorBase = L.marker([0, 0], {}).addTo(map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1);
var marcadorBase = L.marker([0, 0], {}).addTo(map_a779083cfab5ca134b2c00aa027920d3);
var icon = L.AwesomeMarkers.icon(
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
);
@ -347,7 +347,7 @@
}
if (foco) {
map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1.setView(novaPosicao, map_7ac81ec61e6e9fdf3f2a0f6fe49b98f1.getZoom());
map_a779083cfab5ca134b2c00aa027920d3.setView(novaPosicao, map_a779083cfab5ca134b2c00aa027920d3.getZoom());
}
}
@ -364,7 +364,7 @@
function atualizarSelecaoRuas(selecionadas) {
selecionadas = JSON.parse(selecionadas);
RuasSelecionadas = Array.isArray(selecionadas) ? [...selecionadas] : [];
geo_json_cfc16ab3eb25dd8ad7693622d16294d9.eachLayer(function (layer) {
geo_json_90589de6d7080724b8f3a12abd506554.eachLayer(function (layer) {
if (RuasSelecionadas.includes(parseInt(layer.feature.id))) {
layer.setStyle({ color: 'blue' });
} else {