ajustes camera worker

This commit is contained in:
Diego Freitas 2025-09-18 09:52:31 -03:00
parent bc6667e8c2
commit dc65a1ce5f
46 changed files with 137 additions and 89 deletions

Binary file not shown.

View File

@ -89,6 +89,17 @@ namespace AgroBase.Services
RtsEnable = true RtsEnable = true
}; };
_PortaCAN.Open(); _PortaCAN.Open();
_PortaCAN.ErrorReceived += (s, e) => { IsConnected = false; ReabrirPortaSegura(); };
_PortaCAN.PinChanged += (s, e) => {
// Se perder DSR/CD ou receber BREAK, considere desconexão
if (e.EventType == SerialPinChange.Break ||
e.EventType == SerialPinChange.CDChanged ||
e.EventType == SerialPinChange.DsrChanged)
{
IsConnected = false;
ReabrirPortaSegura();
}
};
EnviarComando("C\r"); // fecha CAN (estado conhecido) EnviarComando("C\r"); // fecha CAN (estado conhecido)
Thread.Sleep(50); Thread.Sleep(50);
@ -476,6 +487,19 @@ namespace AgroBase.Services
private void VerificaSaudeConexao() private void VerificaSaudeConexao()
{ {
DateTime Agora = DateTime.Now; DateTime Agora = DateTime.Now;
// Porta sumiu do SO?
var portas = SerialPort.GetPortNames();
var portaExiste = !string.IsNullOrEmpty(_portName) && portas.Contains(_portName, StringComparer.OrdinalIgnoreCase);
if (!portaExiste || _PortaCAN == null || !_PortaCAN.IsOpen)
{
IsConnected = false;
// peça uma varredura geral (vai tentar outros nomes de COM):
Task.Run(() => SerialService.RealizarVarreduraPortasUSB());
return;
}
if (IsConnected && ((Agora - UltimoTx).TotalSeconds > 10 || (Agora - UltimoRx).TotalSeconds > 10)) if (IsConnected && ((Agora - UltimoTx).TotalSeconds > 10 || (Agora - UltimoRx).TotalSeconds > 10))
{ {
UltimoRx = Agora; UltimoRx = Agora;
@ -498,7 +522,7 @@ namespace AgroBase.Services
SerialCANBuffer.Clear(); SerialCANBuffer.Clear();
FramesRecebidos = new ConcurrentQueue<string>(); FramesRecebidos = new ConcurrentQueue<string>();
_roteadores.Clear(); //_roteadores.Clear();
_ultimoIdEnviado = null; _ultimoIdEnviado = null;
if (_PortaCAN?.IsOpen == true) if (_PortaCAN?.IsOpen == true)
@ -606,7 +630,11 @@ namespace AgroBase.Services
EnviarComando(ComandoBitRate(_bitRate)); Thread.Sleep(50); EnviarComando(ComandoBitRate(_bitRate)); Thread.Sleep(50);
EnviarComando("O\r"); Thread.Sleep(50); EnviarComando("O\r"); Thread.Sleep(50);
} }
catch { /* log */ } catch
{
IsConnected = false;
return;
}
} }
tmrEnviarCAN?.Start(); tmrEnviarCAN?.Start();

View File

@ -221,7 +221,9 @@ namespace AgroBase.Services
} }
} }
if (!Variaveis.IsAgroMonitor && CanManager.UseCanSerial && !CanManager.CanService.Iniciado) if (Variaveis.IsAgroMonitor) continue;
if (CanManager.UseCanSerial && !CanManager.CanService.Iniciado)
{ {
AtualizarConsole($"{PortaCom} - Procurando dispositivos no barramento CAN"); AtualizarConsole($"{PortaCom} - Procurando dispositivos no barramento CAN");
bool dispositivoCan = await ProcurarDispositivosCAN(_Porta); bool dispositivoCan = await ProcurarDispositivosCAN(_Porta);
@ -445,7 +447,6 @@ namespace AgroBase.Services
} }
} }
//if (!CanManager.CanService.Iniciado && CanManager.UseCanSerial)
if (CanManager.UseCanSerial && !CanManager.CanService.Iniciado) if (CanManager.UseCanSerial && !CanManager.CanService.Iniciado)
{ {
CanManager.CanService.Fechar(); CanManager.CanService.Fechar();

View File

@ -29,5 +29,5 @@
"top_topics_and_observing_domains": [ ] "top_topics_and_observing_domains": [ ]
} ], } ],
"hex_encoded_hmac_key": "40F346D3248C3AFDF2BEE1FE496DBD32F7CED6E5AE98B881ABC421AA7E7B5642", "hex_encoded_hmac_key": "40F346D3248C3AFDF2BEE1FE496DBD32F7CED6E5AE98B881ABC421AA7E7B5642",
"next_scheduled_calculation_time": "13403030306182806" "next_scheduled_calculation_time": "13403030306182881"
} }

View File

@ -1,3 +1,3 @@
2025/09/17-15:12:39.370 5024 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001 2025/09/17-16:42:43.823 5848 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
2025/09/17-15:12:39.379 5024 Recovering log #3 2025/09/17-16:42:43.832 5848 Recovering log #3
2025/09/17-15:12:39.382 5024 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log 2025/09/17-16:42:43.835 5848 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log

View File

@ -1,3 +1,3 @@
2025/09/17-14:18:37.212 4ffc Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001 2025/09/17-16:20:23.484 57e4 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
2025/09/17-14:18:37.221 4ffc Recovering log #3 2025/09/17-16:20:23.493 57e4 Recovering log #3
2025/09/17-14:18:37.224 4ffc Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log 2025/09/17-16:20:23.496 57e4 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log

View File

@ -1 +1 @@
{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13402692759854060","port":443,"protocol_str":"quic"}],"anonymization":["DAAAAAcAAABmaWxlOi8vAA==",false,0],"network_stats":{"srtt":37977},"server":"https://tile.openstreetmap.org","supports_spdy":true}],"supports_quic":{"address":"2804:d78:67d:1400:5011:1759:4b8a:6d1a","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G","CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G","CAYSABiAgICA+P////8B":"Offline"}}} {"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13402698942753276","port":443,"protocol_str":"quic"}],"anonymization":["DAAAAAcAAABmaWxlOi8vAA==",false,0],"network_stats":{"srtt":65448},"server":"https://tile.openstreetmap.org","supports_spdy":true}],"supports_quic":{"address":"2804:d78:67d:1400:2446:e381:e2d0:7901","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G","CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G","CAYSABiAgICA+P////8B":"Offline"}}}

View File

@ -1 +1 @@
{"sts":[{"expiry":1789574554.859671,"host":"bWGAftl61rqoc0YzqPncsLvQQh/iC2Bdp3ejUeGC83w=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1758038554.859674}],"version":2} {"sts":[{"expiry":1789674166.889444,"host":"bWGAftl61rqoc0YzqPncsLvQQh/iC2Bdp3ejUeGC83w=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1758138166.889448}],"version":2}

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,3 @@
2025/09/17-15:14:15.816 5024 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001 2025/09/17-17:13:27.654 5848 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
2025/09/17-15:14:15.817 5024 Recovering log #3 2025/09/17-17:13:27.656 5848 Recovering log #3
2025/09/17-15:14:15.820 5024 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log 2025/09/17-17:13:27.659 5848 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log

View File

@ -1,3 +1,3 @@
2025/09/17-14:21:30.033 4ffc Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001 2025/09/17-16:23:13.740 57e4 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
2025/09/17-14:21:30.034 4ffc Recovering log #3 2025/09/17-16:23:13.742 57e4 Recovering log #3
2025/09/17-14:21:30.037 4ffc Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log 2025/09/17-16:23:13.745 57e4 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log

View File

@ -1,3 +1,3 @@
2025/09/17-15:12:39.298 5a8 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001 2025/09/17-16:42:43.748 5280 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
2025/09/17-15:12:39.300 5a8 Recovering log #7 2025/09/17-16:42:43.750 5280 Recovering log #7
2025/09/17-15:12:39.300 5a8 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000007.log 2025/09/17-16:42:43.750 5280 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000007.log

View File

@ -1,3 +1,3 @@
2025/09/17-14:18:37.135 16a8 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001 2025/09/17-16:20:23.401 23a8 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
2025/09/17-14:18:37.138 16a8 Recovering log #7 2025/09/17-16:20:23.404 23a8 Recovering log #7
2025/09/17-14:18:37.139 16a8 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000007.log 2025/09/17-16:20:23.404 23a8 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000007.log

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"Id":"1","Name":"CidadeJardimTerreno2","Length":14.558011415731592,"Dist1":14.558011415731592,"Dist2":0.0},"geometry":{"id":"0","type":"LineString","coordinates":[[-47.395205344,-22.172559531333334],[-47.395212610166666,-22.172614638833334],[-47.395219157,-22.172656417833334],[-47.395223544833335,-22.1726892105],[-47.395224140984432,-22.172693691611649],[-47.395225326538004,-22.172702654611555]]}},{"type":"Feature","properties":{"Id":"2","Name":"CidadeJardimTerreno2","Length":14.771318274761821,"Dist1":14.558011415731592,"Dist2":0.0},"geometry":{"id":"1","type":"LineString","coordinates":[[-47.395210902333332,-22.172708800833334],[-47.395206943666665,-22.172679811],[-47.395202420666664,-22.1726491015],[-47.395198865666664,-22.172615782833333],[-47.395193255833334,-22.172577132833332],[-47.395192610024395,-22.172572657695412],[-47.395191325698136,-22.172563706509337]]}},{"type":"Feature","properties":{"Id":"3","Name":"CidadeJardimTerreno2","Length":14.827915524386164,"Dist1":14.558011415731592,"Dist2":0.0},"geometry":{"id":"2","type":"LineString","coordinates":[[-47.3951762925,-22.172561603],[-47.395180824166665,-22.172591686166665],[-47.395185745333336,-22.172623080166666],[-47.395190433,-22.172656367166667],[-47.395195199,-22.172693641833334],[-47.395195769044363,-22.172698125891035],[-47.395196902671593,-22.172707094716973]]}},{"type":"Feature","properties":{"Id":"4","Name":"CidadeJardimTerreno2","Length":14.785159385903514,"Dist1":14.558011415731592,"Dist2":0.0},"geometry":{"id":"3","type":"LineString","coordinates":[[-47.395182932166669,-22.1727127985],[-47.39517819266667,-22.172680514833335],[-47.3951732595,-22.172646752833334],[-47.395168805166669,-22.1726149155],[-47.395163812333337,-22.172581167166665],[-47.395163154299318,-22.172576693573966],[-47.395161845655842,-22.172567745443878]]}},{"type":"Feature","properties":{"Id":"5","Name":"CidadeJardimTerreno2","Length":14.801176921912329,"Dist1":14.558011415731592,"Dist2":0.0},"geometry":{"id":"4","type":"LineString","coordinates":[[-47.395147317833334,-22.172566031],[-47.395151503166666,-22.172595452333333],[-47.3951561855,-22.172628011166665],[-47.395161598666668,-22.172663757333332],[-47.395166727166668,-22.172697770833334],[-47.395167397572706,-22.172702242832194],[-47.39516873082615,-22.172711187810091]]}}]} {"type":"FeatureCollection","features":[{"type":"Feature","properties":{"Id":"1","Name":"17_09_2025_16_23_46_Manual","Length":0.10535308505573193,"Dist1":0.0,"Dist2":0.0},"geometry":{"id":null,"type":"LineString","coordinates":[[-47.395164402166664,-22.172536673833335],[-47.395164384166669,-22.172536670166668],[-47.395164400166664,-22.172536647833333],[-47.395164414666667,-22.172536662],[-47.395164414,-22.172536667333333],[-47.395164362333333,-22.172536672333333],[-47.395164362,-22.172536658],[-47.395164382333334,-22.172536655833333],[-47.395164369833331,-22.172536653],[-47.395164349666665,-22.172536647833333],[-47.395164320666666,-22.172536655333332],[-47.3951643375,-22.172536647833333],[-47.395164314,-22.172536663666666],[-47.395164304833337,-22.172536667166668],[-47.39516431483333,-22.172536683333334],[-47.395164358166667,-22.172536652166666],[-47.395164285666667,-22.1725366695],[-47.395164334166665,-22.172536637166665],[-47.395164342333331,-22.172536639833332],[-47.395164348833333,-22.172536645666668],[-47.3951643655,-22.172536641666667],[-47.395164359666666,-22.172536643],[-47.39516436,-22.1725366385],[-47.395164356333332,-22.17253662],[-47.395164362666669,-22.172536630666666],[-47.3951643595,-22.172536636833332],[-47.395164391,-22.172536642666667],[-47.395164402333336,-22.172536634833332],[-47.3951644125,-22.172536635333334],[-47.395164407166668,-22.172536637333334],[-47.395164393499996,-22.172536626333333],[-47.3951643785,-22.1725366185],[-47.395164386,-22.172536641666667],[-47.395164404333336,-22.17253662],[-47.395164397333332,-22.172536616333332],[-47.395164391,-22.172536615],[-47.395164387333331,-22.172536646],[-47.395164375666667,-22.172536636833332],[-47.39516437733333,-22.172536646333334],[-47.395164387,-22.172536646666668],[-47.395164409833335,-22.172536651833333],[-47.395164380833336,-22.172536644833333],[-47.395164402,-22.172536644333334],[-47.395164397,-22.172536619666666],[-47.39516441833333,-22.172536627333333],[-47.3951643775,-22.172536612166667],[-47.395164381833332,-22.172536645666668]]}}]}

View File

@ -17,7 +17,7 @@
<meta name="viewport" content="width=device-width, <meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style> <style>
#map_82cc7fa00003bb6a2c7d6d614b5d85cb { #map_e541659635fbe5ef795ffc63af53174e {
position: relative; position: relative;
width: 100.0%; width: 100.0%;
height: 100.0%; height: 100.0%;
@ -54,14 +54,14 @@
<body> <body>
<div class="folium-map" id="map_82cc7fa00003bb6a2c7d6d614b5d85cb" ></div> <div class="folium-map" id="map_e541659635fbe5ef795ffc63af53174e" ></div>
</body> </body>
<script> <script>
var map_82cc7fa00003bb6a2c7d6d614b5d85cb = L.map( var map_e541659635fbe5ef795ffc63af53174e = L.map(
"map_82cc7fa00003bb6a2c7d6d614b5d85cb", "map_e541659635fbe5ef795ffc63af53174e",
{ {
center: [0.0, 0.0], center: [0.0, 0.0],
crs: L.CRS.EPSG3857, crs: L.CRS.EPSG3857,
@ -77,26 +77,6 @@
var tile_layer_6f5ee2ed5cadfb801d737455328ac759 = L.tileLayer(
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
{
"minZoom": 0,
"maxZoom": 19,
"maxNativeZoom": 19,
"noWrap": false,
"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors",
"subdomains": "abc",
"detectRetina": false,
"tms": false,
"opacity": 1,
}
);
tile_layer_6f5ee2ed5cadfb801d737455328ac759.addTo(map_82cc7fa00003bb6a2c7d6d614b5d85cb);
</script> </script>
<script> <script>
@ -116,7 +96,7 @@
} }
trajeto_json_add({"features": []}); trajeto_json_add({"features": []});
trajeto_json.addTo(map_82cc7fa00003bb6a2c7d6d614b5d85cb); trajeto_json.addTo(map_e541659635fbe5ef795ffc63af53174e);
function adicionarGeometria(novaGeometria) { function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria); trajeto_json.addData(novaGeometria);
@ -179,9 +159,9 @@
var marcadorEquipamento = L.marker([0, 0], { var marcadorEquipamento = L.marker([0, 0], {
icon: customIcon icon: customIcon
}).addTo(map_82cc7fa00003bb6a2c7d6d614b5d85cb); }).addTo(map_e541659635fbe5ef795ffc63af53174e);
var marcadorBase = L.marker([0, 0], {}).addTo(map_82cc7fa00003bb6a2c7d6d614b5d85cb); var marcadorBase = L.marker([0, 0], {}).addTo(map_e541659635fbe5ef795ffc63af53174e);
var icon = L.AwesomeMarkers.icon( var icon = L.AwesomeMarkers.icon(
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"} {"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
); );
@ -246,7 +226,7 @@
} }
if (foco) { if (foco) {
map_82cc7fa00003bb6a2c7d6d614b5d85cb.setView(novaPosicao, map_82cc7fa00003bb6a2c7d6d614b5d85cb.getZoom()); map_e541659635fbe5ef795ffc63af53174e.setView(novaPosicao, map_e541659635fbe5ef795ffc63af53174e.getZoom());
} }
} }
@ -268,7 +248,7 @@
marcadorDinamico.setRotationAngle(angulo); marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]); adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_82cc7fa00003bb6a2c7d6d614b5d85cb.setView(novaPosicao, map_82cc7fa00003bb6a2c7d6d614b5d85cb.getZoom());*/ map_e541659635fbe5ef795ffc63af53174e.setView(novaPosicao, map_e541659635fbe5ef795ffc63af53174e.getZoom());*/
}); });
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) { function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {

View File

@ -17,7 +17,7 @@
<meta name="viewport" content="width=device-width, <meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style> <style>
#map_f4390ff4565f022e3991bd356c5be575 { #map_ac718f9ed8b658fb35c6c18595d84304 {
position: relative; position: relative;
width: 100.0%; width: 100.0%;
height: 100.0%; height: 100.0%;
@ -54,16 +54,16 @@
<body> <body>
<div class="folium-map" id="map_f4390ff4565f022e3991bd356c5be575" ></div> <div class="folium-map" id="map_ac718f9ed8b658fb35c6c18595d84304" ></div>
</body> </body>
<script> <script>
var map_f4390ff4565f022e3991bd356c5be575 = L.map( var map_ac718f9ed8b658fb35c6c18595d84304 = L.map(
"map_f4390ff4565f022e3991bd356c5be575", "map_ac718f9ed8b658fb35c6c18595d84304",
{ {
center: [-22.172636164916668, -47.395186322185666], center: [-22.17253664775, -47.395164351999995],
crs: L.CRS.EPSG3857, crs: L.CRS.EPSG3857,
...{ ...{
"zoom": 12, "zoom": 12,
@ -78,6 +78,26 @@
var tile_layer_6b4a1c97c2619f740994190147f13674 = L.tileLayer(
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
{
"minZoom": 0,
"maxZoom": 19,
"maxNativeZoom": 19,
"noWrap": false,
"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors",
"subdomains": "abc",
"detectRetina": false,
"tms": false,
"opacity": 1,
}
);
tile_layer_6b4a1c97c2619f740994190147f13674.addTo(map_ac718f9ed8b658fb35c6c18595d84304);
var trajetosSelecionados = {}; var trajetosSelecionados = {};
@ -91,7 +111,7 @@
}*/ }*/
}); });
} }
function geo_json_106f3360bcacda806961fb4dfadbc9ab_onEachFeature(feature, layer) { function geo_json_af39f58f8a18998e45aeee8a26e33ab4_onEachFeature(feature, layer) {
layer.on({ layer.on({
@ -128,23 +148,23 @@
}*/ }*/
}); });
}; };
var geo_json_106f3360bcacda806961fb4dfadbc9ab = L.geoJson(null, { var geo_json_af39f58f8a18998e45aeee8a26e33ab4 = L.geoJson(null, {
onEachFeature: geo_json_106f3360bcacda806961fb4dfadbc9ab_onEachFeature, onEachFeature: geo_json_af39f58f8a18998e45aeee8a26e33ab4_onEachFeature,
...{ ...{
} }
}); });
function geo_json_106f3360bcacda806961fb4dfadbc9ab_add (data) { function geo_json_af39f58f8a18998e45aeee8a26e33ab4_add (data) {
geo_json_106f3360bcacda806961fb4dfadbc9ab geo_json_af39f58f8a18998e45aeee8a26e33ab4
.addData(data); .addData(data);
} }
geo_json_106f3360bcacda806961fb4dfadbc9ab_add({"features": [{"geometry": {"coordinates": [[-47.395205344, -22.172559531333334], [-47.395212610166666, -22.172614638833334], [-47.395219157, -22.172656417833334], [-47.395223544833335, -22.1726892105], [-47.39522414098443, -22.17269369161165], [-47.395225326538004, -22.172702654611555]], "id": "0", "type": "LineString"}, "id": 0, "properties": {"Dist1": 14.558011415731592, "Dist2": 0.0, "Id": "1", "Length": 14.558011415731592, "Name": "CidadeJardimTerreno2"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.39521090233333, -22.172708800833334], [-47.395206943666665, -22.172679811], [-47.395202420666664, -22.1726491015], [-47.395198865666664, -22.172615782833333], [-47.395193255833334, -22.172577132833332], [-47.395192610024395, -22.17257265769541], [-47.395191325698136, -22.172563706509337]], "id": "1", "type": "LineString"}, "id": 1, "properties": {"Dist1": 14.558011415731592, "Dist2": 0.0, "Id": "2", "Length": 14.771318274761821, "Name": "CidadeJardimTerreno2"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.3951762925, -22.172561603], [-47.395180824166665, -22.172591686166665], [-47.395185745333336, -22.172623080166666], [-47.395190433, -22.172656367166667], [-47.395195199, -22.172693641833334], [-47.39519576904436, -22.172698125891035], [-47.39519690267159, -22.172707094716973]], "id": "2", "type": "LineString"}, "id": 2, "properties": {"Dist1": 14.558011415731592, "Dist2": 0.0, "Id": "3", "Length": 14.827915524386164, "Name": "CidadeJardimTerreno2"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.39518293216667, -22.1727127985], [-47.39517819266667, -22.172680514833335], [-47.3951732595, -22.172646752833334], [-47.39516880516667, -22.1726149155], [-47.39516381233334, -22.172581167166665], [-47.39516315429932, -22.172576693573966], [-47.39516184565584, -22.172567745443878]], "id": "3", "type": "LineString"}, "id": 3, "properties": {"Dist1": 14.558011415731592, "Dist2": 0.0, "Id": "4", "Length": 14.785159385903514, "Name": "CidadeJardimTerreno2"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.395147317833334, -22.172566031], [-47.395151503166666, -22.172595452333333], [-47.3951561855, -22.172628011166665], [-47.39516159866667, -22.172663757333332], [-47.39516672716667, -22.172697770833334], [-47.395167397572706, -22.172702242832194], [-47.39516873082615, -22.17271118781009]], "id": "4", "type": "LineString"}, "id": 4, "properties": {"Dist1": 14.558011415731592, "Dist2": 0.0, "Id": "5", "Length": 14.80117692191233, "Name": "CidadeJardimTerreno2"}, "type": "Feature"}], "type": "FeatureCollection"}); geo_json_af39f58f8a18998e45aeee8a26e33ab4_add({"features": [{"geometry": {"coordinates": [[-47.395164402166664, -22.172536673833335], [-47.39516438416667, -22.172536670166668], [-47.395164400166664, -22.172536647833333], [-47.39516441466667, -22.172536662], [-47.395164414, -22.172536667333333], [-47.39516436233333, -22.172536672333333], [-47.395164362, -22.172536658], [-47.395164382333334, -22.172536655833333], [-47.39516436983333, -22.172536653], [-47.395164349666665, -22.172536647833333], [-47.395164320666666, -22.17253665533333], [-47.3951643375, -22.172536647833333], [-47.395164314, -22.172536663666666], [-47.39516430483334, -22.172536667166668], [-47.39516431483333, -22.172536683333334], [-47.39516435816667, -22.172536652166666], [-47.39516428566667, -22.1725366695], [-47.395164334166665, -22.172536637166665], [-47.39516434233333, -22.172536639833332], [-47.39516434883333, -22.172536645666668], [-47.3951643655, -22.172536641666667], [-47.395164359666666, -22.172536643], [-47.39516436, -22.1725366385], [-47.39516435633333, -22.17253662], [-47.39516436266667, -22.172536630666666], [-47.3951643595, -22.172536636833332], [-47.395164391, -22.172536642666667], [-47.395164402333336, -22.17253663483333], [-47.3951644125, -22.172536635333334], [-47.39516440716667, -22.172536637333334], [-47.395164393499996, -22.172536626333333], [-47.3951643785, -22.1725366185], [-47.395164386, -22.172536641666667], [-47.395164404333336, -22.17253662], [-47.39516439733333, -22.172536616333332], [-47.395164391, -22.172536615], [-47.39516438733333, -22.172536646], [-47.39516437566667, -22.172536636833332], [-47.39516437733333, -22.172536646333334], [-47.395164387, -22.172536646666668], [-47.395164409833335, -22.172536651833333], [-47.395164380833336, -22.172536644833333], [-47.395164402, -22.172536644333334], [-47.395164397, -22.172536619666666], [-47.39516441833333, -22.172536627333333], [-47.3951643775, -22.172536612166667], [-47.39516438183333, -22.172536645666668]], "id": null, "type": "LineString"}, "id": 0, "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": "1", "Length": 0.10535308505573193, "Name": "17_09_2025_16_23_46_Manual"}, "type": "Feature"}], "type": "FeatureCollection"});
geo_json_106f3360bcacda806961fb4dfadbc9ab.setStyle(function(feature) {return feature.properties.style;}); geo_json_af39f58f8a18998e45aeee8a26e33ab4.setStyle(function(feature) {return feature.properties.style;});
geo_json_106f3360bcacda806961fb4dfadbc9ab.addTo(map_f4390ff4565f022e3991bd356c5be575); geo_json_af39f58f8a18998e45aeee8a26e33ab4.addTo(map_ac718f9ed8b658fb35c6c18595d84304);
</script> </script>
@ -165,7 +185,7 @@
} }
trajeto_json_add({"features": []}); trajeto_json_add({"features": []});
trajeto_json.addTo(map_f4390ff4565f022e3991bd356c5be575); trajeto_json.addTo(map_ac718f9ed8b658fb35c6c18595d84304);
function adicionarGeometria(novaGeometria) { function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria); trajeto_json.addData(novaGeometria);
@ -223,7 +243,7 @@
} }
trajeto_dinamico_json_add({"features": []}); trajeto_dinamico_json_add({"features": []});
trajeto_dinamico_json.addTo(map_f4390ff4565f022e3991bd356c5be575); trajeto_dinamico_json.addTo(map_ac718f9ed8b658fb35c6c18595d84304);
function adicionarGeometriaDinamica(novaGeometria) { function adicionarGeometriaDinamica(novaGeometria) {
trajeto_dinamico_json.addData(novaGeometria); trajeto_dinamico_json.addData(novaGeometria);
@ -276,9 +296,9 @@
var marcadorEquipamento = L.marker([0, 0], { var marcadorEquipamento = L.marker([0, 0], {
icon: customIcon icon: customIcon
}).addTo(map_f4390ff4565f022e3991bd356c5be575); }).addTo(map_ac718f9ed8b658fb35c6c18595d84304);
var marcadorBase = L.marker([0, 0], {}).addTo(map_f4390ff4565f022e3991bd356c5be575); var marcadorBase = L.marker([0, 0], {}).addTo(map_ac718f9ed8b658fb35c6c18595d84304);
var icon = L.AwesomeMarkers.icon( var icon = L.AwesomeMarkers.icon(
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"} {"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
); );
@ -360,7 +380,7 @@
} }
if (foco) { if (foco) {
map_f4390ff4565f022e3991bd356c5be575.setView(novaPosicao, map_f4390ff4565f022e3991bd356c5be575.getZoom()); map_ac718f9ed8b658fb35c6c18595d84304.setView(novaPosicao, map_ac718f9ed8b658fb35c6c18595d84304.getZoom());
} }
} }
@ -377,7 +397,7 @@
function atualizarSelecaoRuas(selecionadas) { function atualizarSelecaoRuas(selecionadas) {
selecionadas = JSON.parse(selecionadas); selecionadas = JSON.parse(selecionadas);
RuasSelecionadas = Array.isArray(selecionadas) ? [...selecionadas] : []; RuasSelecionadas = Array.isArray(selecionadas) ? [...selecionadas] : [];
geo_json_106f3360bcacda806961fb4dfadbc9ab.eachLayer(function (layer) { geo_json_af39f58f8a18998e45aeee8a26e33ab4.eachLayer(function (layer) {
if (RuasSelecionadas.includes(parseInt(layer.feature.id))) { if (RuasSelecionadas.includes(parseInt(layer.feature.id))) {
layer.setStyle({ color: 'blue' }); layer.setStyle({ color: 'blue' });
} else { } else {

View File

@ -327,13 +327,28 @@ class CameraOak:
#self.mostrar_log(f"[CALIB] {self.parametros}") #self.mostrar_log(f"[CALIB] {self.parametros}")
def _latest_pkt(self, q):
# pega tudo que chegou e fica só com o último
pkts = q.getAll()
if pkts:
return pkts[-1]
# fallback: tentativa não-bloqueante
pkt = q.tryGet()
if pkt is not None:
return pkt
# último recurso: uma única espera curta
return q.get() # só se não tiver nada mesmo
def requisitar_frame_rgb(self): def requisitar_frame_rgb(self):
#print("Requisitando frame") #print("Requisitando frame")
try: try:
start = time.time() start = time.time()
frame = self.q_video.get().getCvFrame() pkt = self._latest_pkt(self.q_video)
frame = pkt.getCvFrame()
self.timestamp_ultimo_frame_rgb = pkt.getTimestamp().total_seconds() # ou device ts
#frame = self.q_video.get().getCvFrame()
#self.timestamp_ultimo_frame_rgb = time.time()
dur = time.time() - start dur = time.time() - start
self.timestamp_ultimo_frame_rgb = time.time()
resultado = { resultado = {
"erro": None, "erro": None,
@ -360,9 +375,12 @@ class CameraOak:
} }
try: try:
start = time.time() start = time.time()
frame = self.q_depth.get().getFrame() pkt = self._latest_pkt(self.q_depth)
frame = pkt.getFrame()
self.timestamp_ultimo_frame_depth = pkt.getTimestamp().total_seconds()
#frame = self.q_depth.get().getFrame()
#self.timestamp_ultimo_frame_depth = time.time()
dur = time.time() - start dur = time.time() - start
self.timestamp_ultimo_frame_depth = time.time()
return frame, { return frame, {
"erro": None, "erro": None,

View File

@ -83,7 +83,7 @@ class CameraManager:
self.solo_manager = AnaliseSoloManager() self.solo_manager = AnaliseSoloManager()
self.segmentacao_manager = SegmentacaoManager(self.camera.modelo_ia_seg.get("colormap_rgb"), self.camera.modelo_ia_seg.get("classes")) self.segmentacao_manager = SegmentacaoManager(self.camera.modelo_ia_seg.get("colormap_rgb"), self.camera.modelo_ia_seg.get("classes"))
self.radar_manager = Radar2DManager() self.radar_manager = Radar2DManager()
self.data_fuser = CostmapFuser(grid_shape=self.grid_ref_shape, K=3, M=2, fuse_method="q0.7", block_thr=0.7, central_cols=None, y_range_m=(0.5,5.0), near_is_bottom=True, fov_h_rad=np.radians(self.camera.parametros["fov_h"]), robot_width=self.largura_robo_m) self.data_fuser = CostmapFuser(grid_shape=self.grid_ref_shape, K=3, M=2, fuse_method="max", block_thr=0.7, central_cols=None, y_range_m=(0.5,5.0), near_is_bottom=True, fov_h_rad=np.radians(self.camera.parametros["fov_h"]), robot_width=self.largura_robo_m)
self.operante = True self.operante = True
self._timestamp_analise = None self._timestamp_analise = None
@ -1555,8 +1555,9 @@ class CameraManager:
parada_necessaria = decision.get("parar", False) parada_necessaria = decision.get("parar", False)
dec_txt = "PARAR" if parada_necessaria else "LIVRE" dec_txt = "PARAR" if parada_necessaria else "LIVRE"
dec_col = (0, 0, 255) if parada_necessaria else (0, 200, 0) dec_col = (0, 0, 255) if parada_necessaria else (0, 200, 0)
d_necessaria = decision.get('dist_necessaria', 0.0) or 0.0
dec_info = (f"v={velocidade_media:.3f} m/s d_obs={('-' if d_obs_min is None else f'{d_obs_min:.2f} m')} " dec_info = (f"v={velocidade_media:.3f} m/s d_obs={('-' if d_obs_min is None else f'{d_obs_min:.2f} m')} "
f"d_necess={decision.get('dist_necessaria', 0.0):.2f} m") f"d_necess={d_necessaria:.2f} m")
# painel por trás para legibilidade # painel por trás para legibilidade
panel_w2 = max(280, bar_w + 100) panel_w2 = max(280, bar_w + 100)

View File

@ -110,7 +110,7 @@ class CostmapFuser:
row_dist_m, row_scale_x_m, central_cols, row_dist_m, row_scale_x_m, central_cols,
robot_width_m=0.84, margin_m=0.12, robot_width_m=0.84, margin_m=0.12,
thr_anom_block=0.50, thr_cost_block=0.65, thr_conf_low=0.35, thr_anom_block=0.50, thr_cost_block=0.65, thr_conf_low=0.35,
rho_block_central=0.70, rho_block_global=0.60, rho_block_central=0.70, rho_block_global=0.40,
near_is_bottom=True, near_is_bottom=True,
# ------ NOVOS (opcionais) ------ # ------ NOVOS (opcionais) ------
use_persistence=False, use_persistence=False,
@ -349,7 +349,7 @@ class CostmapFuser:
f"cobertura_central_max={central_cov_max:.2f}{extra_det_txt}." f"cobertura_central_max={central_cov_max:.2f}{extra_det_txt}."
) )
elif (global_cov >= rho_block_global) and (conf_mean < 0.45): elif (global_cov <= rho_block_global) or (conf_mean < 0.45):
blocked_raw = True blocked_raw = True
reason = "blackout" reason = "blackout"
extra = "" extra = ""
@ -375,7 +375,7 @@ class CostmapFuser:
else: else:
extra = " (deteccoes presentes)" extra = " (deteccoes presentes)"
reason_detail = ( reason_detail = (
f"Percepcao degradada: cobertura_global={global_cov:.2f}{rho_block_global:.2f} " f"Percepcao degradada: cobertura_global={global_cov:.2f}<={rho_block_global:.2f} "
f"e confianca_media={conf_mean:.2f}<0.45{extra}." f"e confianca_media={conf_mean:.2f}<0.45{extra}."
) )
@ -593,7 +593,7 @@ class CostmapFuser:
use_persistence=True, use_persistence=True,
velocidade_mps=velocidade_ms, velocidade_mps=velocidade_ms,
a_max_freio=0.4, margem_parada=0.60, a_max_freio=0.4, margem_parada=0.60,
N_on=2, N_off=5, blackout_imediato=True, N_on=2, N_off=3, blackout_imediato=True,
det_score_f = det_score, det_score_f = det_score,
det_label_id = det_lbl, det_label_id = det_lbl,