From 87698add8e99362ffdab8254ff0a05a165f76d4f Mon Sep 17 00:00:00 2001 From: Paul-Winpenny <92634321+Paul-Winpenny@users.noreply.github.com> Date: Wed, 8 Jan 2025 14:12:58 +0000 Subject: [PATCH] Updated to use the image (lidar method) --- App/RobobinApp/Networking/WifiManager.cs | 2 +- App/RobobinApp/Resources/Images/lab_map.jpg | Bin 0 -> 45755 bytes App/RobobinApp/RobobinApp.csproj | 10 + .../ViewModels/MainPageViewModel.cs | 28 +- App/RobobinApp/Views/CentreGraph.xaml.cs | 253 +++--------------- App/RobobinApp/Views/MainPage.xaml.cs | 38 ++- App/RobobinApp/Views/MainPage_Android.xaml.cs | 18 +- 7 files changed, 88 insertions(+), 261 deletions(-) create mode 100644 App/RobobinApp/Resources/Images/lab_map.jpg diff --git a/App/RobobinApp/Networking/WifiManager.cs b/App/RobobinApp/Networking/WifiManager.cs index b034c349..ac5bd3c6 100644 --- a/App/RobobinApp/Networking/WifiManager.cs +++ b/App/RobobinApp/Networking/WifiManager.cs @@ -209,7 +209,7 @@ namespace RobobinApp.Networking public async Task SendCallMeRequest(string endPoint) { Debug.WriteLine("Call me request"); - await SendMessageAsync("CALLME " + endPoint); + await SendMessageAsync("CALLMELIDAR " + endPoint); } public async Task SendPingMessage() diff --git a/App/RobobinApp/Resources/Images/lab_map.jpg b/App/RobobinApp/Resources/Images/lab_map.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d7ac60e7dc9e87a9b961d14535710a373025f43 GIT binary patch literal 45755 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ν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 L|Hr`0@c$+NaDCHE literal 0 HcmV?d00001 diff --git a/App/RobobinApp/RobobinApp.csproj b/App/RobobinApp/RobobinApp.csproj index a8e008bc..ecc4a079 100644 --- a/App/RobobinApp/RobobinApp.csproj +++ b/App/RobobinApp/RobobinApp.csproj @@ -48,11 +48,21 @@ <AndroidResource Remove="Platforms\Android\Resources\mipmap\robobinlogo1.png" /> </ItemGroup> + <ItemGroup> + <MauiImage Remove="Resources\Images\lab_map.jpg" /> + </ItemGroup> + <ItemGroup> <None Remove="Platforms\Android\Resources\drawable\bin.svg" /> <None Remove="Platforms\Android\Resources\mipmap\robobinlogo1.png" /> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Resources\Images\lab_map.jpg"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" /> <PackageReference Include="Microsoft.Maui.Controls" Version="8.0.91" /> diff --git a/App/RobobinApp/ViewModels/MainPageViewModel.cs b/App/RobobinApp/ViewModels/MainPageViewModel.cs index a3477a1d..52c0b7a0 100644 --- a/App/RobobinApp/ViewModels/MainPageViewModel.cs +++ b/App/RobobinApp/ViewModels/MainPageViewModel.cs @@ -1,6 +1,7 @@ using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; +using System.Linq; using System.Runtime.CompilerServices; using System.Windows.Input; using Microsoft.Extensions.Logging; @@ -58,15 +59,26 @@ namespace RobobinApp.ViewModels ToggleModeCommand = new Command(async () => await OnToggleMode()); GetNewGraphCommand = new Command(async () => await GetNewGraph()); var graphNodes1 = new List<Node> - -{ - new Node("No graph loaded", 50, 50), - -}; - - var graphMatrix1 = CalculatePolarConnections(graphNodes1, new bool[,] { - { false } }); + new Node("1", 347, 276), + new Node("2", 321, 280), + new Node("3", 350, 318), + new Node("4", 326, 317), + new Node("5", 357, 360), + new Node("6", 328, 355), + new Node("7", 355, 404), + new Node("8", 332, 390), + new Node("9", 359, 455), + new Node("10", 334, 425), + new Node("11", 423, 443), + new Node("12", 417, 400), + new Node("13", 417, 355), + new Node("14", 416, 313), + new Node("15", 417, 269) + }; + + + var graphMatrix1 = CalculatePolarConnections(graphNodes1, new bool[graphNodes1.Count, graphNodes1.Count]); var mapdata = App.WifiManager.MapData; Debug.WriteLine($"Mapdata : { mapdata}"); var graphNodes = graphNodes1; diff --git a/App/RobobinApp/Views/CentreGraph.xaml.cs b/App/RobobinApp/Views/CentreGraph.xaml.cs index 113ac541..d27595ea 100644 --- a/App/RobobinApp/Views/CentreGraph.xaml.cs +++ b/App/RobobinApp/Views/CentreGraph.xaml.cs @@ -1,42 +1,30 @@ using Microsoft.Maui.Graphics; using Robobin.Models; -using RobobinApp.Models; using System; using System.Collections.Generic; using System.Diagnostics; -using System.Linq; namespace RobobinApp.Views { public class GraphicsDrawable : IDrawable { private Graph _graph; - private (float, float) _location; - public const float BaseNodeRadius = 5f; // Make this public if needed elsewhere + public const float NodeRadius = 5f; // Fixed radius for nodes private static readonly Color DefaultNodeColor = Colors.Red; - private static readonly Color HomeNodeColor = Colors.Green; - private static readonly Color BackgroundColor = Color.FromHex("#2C2F33"); - private static readonly Color ConnectionColor = Colors.Grey; - private static readonly Color HighlightedNodeColor = Colors.Yellow; // For the highlighted node - private static readonly Color PathColor = Colors.Blue; // For the path + private static readonly Color HighlightedNodeColor = Colors.Yellow; // Highlighted node color private RectF storedDirtyRect; - public float CurrentScale { get; private set; } = 1.0f; - public (float X, float Y) CurrentOffset { get; private set; } = (0, 0); - private Node _highlightedNode; - private List<Node> _path; public void SetGraph(Graph graph) { _graph = graph ?? throw new ArgumentNullException(nameof(graph)); _highlightedNode = null; - _path = null; } - public void SetLocation((float, float) location) + public void HighlightNode(Node node) { - _location = location; + _highlightedNode = node; } public void Draw(ICanvas canvas, RectF dirtyRect) @@ -44,127 +32,68 @@ namespace RobobinApp.Views storedDirtyRect = dirtyRect; if (_graph == null) return; + // Draw the background image DrawBackground(canvas, dirtyRect); - (float minX, float minY, float maxX, float maxY) = CalculateBounds(); - - CurrentScale = CalculateScale(dirtyRect, minX, minY, maxX, maxY); - (float offsetX, float offsetY) = CalculateOffsets(dirtyRect, minX, minY, maxX, maxY, CurrentScale); - CurrentOffset = (offsetX, offsetY); - float nodeRadius = BaseNodeRadius * CurrentScale; - - DrawConnections(canvas, CurrentScale, offsetX, offsetY); - DrawPath(canvas, CurrentScale, offsetX, offsetY); - DrawNodes(canvas, CurrentScale, offsetX, offsetY, nodeRadius, _highlightedNode); - DrawLocation(canvas, CurrentScale, offsetX, offsetY); - } - - private void DrawLocation(ICanvas canvas, float scale, float offsetX, float offsetY) - { - Debug.WriteLine($"Drawing Location {_location.Item1} {_location.Item2}"); - float scaledX = _location.Item1 * scale + offsetX; - float flippedY = storedDirtyRect.Height - (_location.Item2 * scale + offsetY); - - canvas.FillColor = Colors.Yellow; - canvas.FillCircle(scaledX, flippedY, 5); - canvas.FontColor = Colors.White; - canvas.DrawString($"Robobin ({_location.Item1} {_location.Item2})", scaledX + 7, flippedY - 5, HorizontalAlignment.Left); + // Draw the nodes on top of the image + DrawNodes(canvas, NodeRadius, _highlightedNode); } private void DrawBackground(ICanvas canvas, RectF dirtyRect) { - canvas.FillColor = BackgroundColor; - canvas.FillRectangle(dirtyRect); - } - - private (float minX, float minY, float maxX, float maxY) CalculateBounds() - { - float minX = _graph.Nodes.Min(node => node.X); - float minY = _graph.Nodes.Min(node => node.Y); - float maxX = _graph.Nodes.Max(node => node.X); - float maxY = _graph.Nodes.Max(node => node.Y); - return (minX, minY, maxX, maxY); - } - - private float CalculateScale(RectF dirtyRect, float minX, float minY, float maxX, float maxY) - { - float graphWidth = maxX - minX; - float graphHeight = maxY - minY; - float scaleX = dirtyRect.Width / graphWidth; - float scaleY = dirtyRect.Height / graphHeight; - return Math.Min(scaleX, scaleY) * 0.8f; - } - - private (float offsetX, float offsetY) CalculateOffsets(RectF dirtyRect, float minX, float minY, float maxX, float maxY, float scale) - { - float offsetX = dirtyRect.Center.X - ((minX + maxX) * 0.5f) * scale; - float offsetY = dirtyRect.Center.Y - ((minY + maxY) * 0.5f) * scale; - return (offsetX, offsetY); - } - - private void DrawConnections(ICanvas canvas, float scale, float offsetX, float offsetY) - { - canvas.StrokeColor = ConnectionColor; - canvas.StrokeSize = 2; - - foreach (var node in _graph.Nodes) + try { - int nodeIndex = _graph.Nodes.IndexOf(node); - float startX = node.X * scale + offsetX; - float startY = storedDirtyRect.Height - (node.Y * scale + offsetY); // flip Y + // Load the embedded image resource + var assembly = typeof(GraphicsDrawable).Assembly; + var resourceStream = assembly.GetManifestResourceStream("Robobin.Resources.Images.lab_map.jpg"); - for (int j = 0; j < _graph.Nodes.Count; j++) + if (resourceStream != null) { - var (magnitude, angle) = _graph.AdjacencyMatrix[nodeIndex, j]; - if (magnitude > 0) - { - float targetX = (node.X + magnitude * MathF.Cos(MathF.PI * angle / 180)) * scale + offsetX; - float targetRawY = (node.Y + magnitude * MathF.Sin(MathF.PI * angle / 180)) * scale + offsetY; - float targetY = storedDirtyRect.Height - targetRawY; // flip Y - - canvas.DrawLine(startX, startY, targetX, targetY); - } + var image = Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(resourceStream); + canvas.DrawImage(image, dirtyRect.Left, dirtyRect.Top, dirtyRect.Width, dirtyRect.Height); + } + else + { + throw new Exception("Embedded resource not found."); } } + catch (Exception ex) + { + Debug.WriteLine($"Error loading image: {ex.Message}"); + + // Fallback: fill background with a color if the image is unavailable + canvas.FillColor = Colors.Black; + canvas.FillRectangle(dirtyRect); + } } - private void DrawNodes(ICanvas canvas, float scale, float offsetX, float offsetY, float nodeRadius, Node highlightedNode) + private void DrawNodes(ICanvas canvas, float nodeRadius, Node highlightedNode) { foreach (var node in _graph.Nodes) { - float scaledX = node.X * scale + offsetX; - float flippedY = storedDirtyRect.Height - (node.Y * scale + offsetY); // flip Y + float x = node.X; // Use the original X-coordinate + float y = node.Y; // Use the original Y-coordinate + + // Set fill color based on whether the node is highlighted + canvas.FillColor = (highlightedNode == node) ? HighlightedNodeColor : DefaultNodeColor; - canvas.FillColor = (highlightedNode == node) - ? HighlightedNodeColor - : (node.Name == "Home" ? HomeNodeColor : DefaultNodeColor); + // Draw the node as a circle + canvas.FillCircle(x, y, nodeRadius); - canvas.FillCircle(scaledX, flippedY, nodeRadius); + // Optionally, draw node name or other details canvas.FontColor = Colors.White; - var nodeDetails = $"{node.Name}"; - canvas.DrawString(nodeDetails, scaledX + nodeRadius + 2, flippedY - nodeRadius, HorizontalAlignment.Left); + canvas.DrawString(node.Name, x + nodeRadius + 2, y - nodeRadius, HorizontalAlignment.Left); } } - public Node FindNearestNode(float clickX, float clickY, float scale, float offsetX, float offsetY) + public Node FindNearestNode(float tapPointX, float tapPointY) { - // The coordinates given (clickX, clickY) are in the original coordinate system - // where the y-axis goes down. We must transform them similarly to how we did - // when drawing: flip the Y using storedDirtyRect. - float flippedClickY = clickY; - - Node nearestNode = null; float minDistance = float.MaxValue; + Node nearestNode = null; foreach (var node in _graph.Nodes) { - float scaledX = node.X * scale + offsetX; - // Flip Y when comparing distances - float flippedY = storedDirtyRect.Height - (node.Y * scale + offsetY); - - float dx = clickX - scaledX; - float dy = flippedClickY - flippedY; - float distance = MathF.Sqrt(dx * dx + dy * dy); + float distance = (float)Math.Sqrt(Math.Pow(node.X - tapPointX, 2) + Math.Pow(node.Y - tapPointY, 2)); if (distance < minDistance) { minDistance = distance; @@ -174,109 +103,5 @@ namespace RobobinApp.Views return nearestNode; } - - public void HighlightNode(Node node) - { - _highlightedNode = node; - } - - public List<Node> AStarPathfinding(Node startNode, Node targetNode) - { - var openSet = new List<Node> { startNode }; - var cameFrom = new Dictionary<Node, Node>(); - var gScore = new Dictionary<Node, float>(); - var fScore = new Dictionary<Node, float>(); - - foreach (var node in _graph.Nodes) - { - gScore[node] = float.MaxValue; - fScore[node] = float.MaxValue; - } - gScore[startNode] = 0; - fScore[startNode] = Heuristic(startNode, targetNode); - - while (openSet.Count > 0) - { - Node currentNode = openSet.OrderBy(node => fScore[node]).First(); - - if (currentNode == targetNode) - { - return ReconstructPath(cameFrom, currentNode); - } - - openSet.Remove(currentNode); - - foreach (var edge in currentNode.Edges) - { - Node neighbor = edge.TargetNode; - float tentativeGScore = gScore[currentNode] + edge.Cost; - - if (tentativeGScore < gScore[neighbor]) - { - cameFrom[neighbor] = currentNode; - gScore[neighbor] = tentativeGScore; - fScore[neighbor] = gScore[neighbor] + Heuristic(neighbor, targetNode); - - if (!openSet.Contains(neighbor)) - { - openSet.Add(neighbor); - } - } - } - } - - return new List<Node>(); - } - - private float Heuristic(Node a, Node b) - { - return MathF.Sqrt((a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y)); - } - - private List<Node> ReconstructPath(Dictionary<Node, Node> cameFrom, Node currentNode) - { - var totalPath = new List<Node> { currentNode }; - - while (cameFrom.ContainsKey(currentNode)) - { - currentNode = cameFrom[currentNode]; - totalPath.Add(currentNode); - } - - totalPath.Reverse(); - return totalPath; - } - - public Node GetHomeNode() - { - return _graph.Nodes.FirstOrDefault(n => n.Name == "Home"); - } - - public List<Node> Path - { - get => _path; - set => _path = value; - } - - private void DrawPath(ICanvas canvas, float scale, float offsetX, float offsetY) - { - if (_path != null && _path.Count > 0) - { - canvas.StrokeColor = PathColor; - canvas.StrokeSize = 3; - - for (int i = 0; i < _path.Count - 1; i++) - { - float startX = _path[i].X * scale + offsetX; - float startRawY = _path[i].Y * scale + offsetY; - float startY = storedDirtyRect.Height - startRawY; // flip Y - float endX = _path[i + 1].X * scale + offsetX; - float endRawY = _path[i + 1].Y * scale + offsetY; - float endY = storedDirtyRect.Height - endRawY; // flip Y - - canvas.DrawLine(startX, startY, endX, endY); - } - } - } } } diff --git a/App/RobobinApp/Views/MainPage.xaml.cs b/App/RobobinApp/Views/MainPage.xaml.cs index 533e36ad..3022db93 100644 --- a/App/RobobinApp/Views/MainPage.xaml.cs +++ b/App/RobobinApp/Views/MainPage.xaml.cs @@ -52,40 +52,32 @@ namespace RobobinApp.Views private void OnGraphicsViewTapped(object sender, TappedEventArgs e) { - if (App.WifiManager.Mode != "Call") - { - DisplayAlert("NO CALL","Bin must be in call mode to use this feature!","Sorry!"); - return; - } + //if (App.WifiManager.Mode != "Call") + //{ + // DisplayAlert("NO CALL","Bin must be in call mode to use this feature!","Sorry!"); + // return; + //} var tapPoint = e.GetPosition(GraphicsView); var drawable = (GraphicsDrawable)Resources["drawable"]; - float scale = drawable.CurrentScale; - var offset = drawable.CurrentOffset; + var tapPointX = (float)tapPoint.Value.X; var tapPointY = (float)tapPoint.Value.Y; + Debug.WriteLine($"position: {tapPointX}, {tapPointY}"); (float,float) endPoint = (tapPointX, tapPointY); - var nearestNode = drawable.FindNearestNode(tapPointX, tapPointY, scale, offset.X, offset.Y); - Task task = App.WifiManager.SendCallMeRequest(nearestNode.Name); - // Highlight the nearest node - drawable.HighlightNode(nearestNode); + var nearestNode = drawable.FindNearestNode(tapPointX, tapPointY); + + + if (nearestNode != null) { - // Find the home node - Node homeNode = drawable.GetHomeNode(); - - if (homeNode != null) - { - - List<Node> path = drawable.AStarPathfinding(nearestNode, homeNode); - drawable.Path = path; - GraphicsView.Invalidate(); - } - + Task task = App.WifiManager.SendCallMeRequest(nearestNode.Name); + // Highlight the nearest node + drawable.HighlightNode(nearestNode); DisplayAlert("Node Clicked", $"You clicked on node: {nearestNode.Name}", "OK"); } else @@ -113,7 +105,7 @@ namespace RobobinApp.Views { var drawable = (GraphicsDrawable)Resources["drawable"]; Debug.WriteLine($"VM Location { viewModel.Location }"); - drawable.SetLocation(viewModel.Location); + //drawable.SetLocation(viewModel.Location); drawable.SetGraph(viewModel.Graph); GraphicsView.Invalidate(); // Redraw the GraphicsView Debug.WriteLine("Graph updated and redrawn."); diff --git a/App/RobobinApp/Views/MainPage_Android.xaml.cs b/App/RobobinApp/Views/MainPage_Android.xaml.cs index f7059f40..9a93b832 100644 --- a/App/RobobinApp/Views/MainPage_Android.xaml.cs +++ b/App/RobobinApp/Views/MainPage_Android.xaml.cs @@ -34,33 +34,21 @@ namespace RobobinApp.Views var tapPoint = e.GetPosition(GraphicsView); var drawable = (GraphicsDrawable)Resources["drawable"]; - float scale = drawable.CurrentScale; - var offset = drawable.CurrentOffset; - + var tapPointX = (float)tapPoint.Value.X; var tapPointY = (float)tapPoint.Value.Y; (float, float) endPoint = (tapPointX, tapPointY); - var nearestNode = drawable.FindNearestNode(tapPointX, tapPointY, scale, offset.X, offset.Y); + var nearestNode = drawable.FindNearestNode(tapPointX, tapPointY); Task task = App.WifiManager.SendCallMeRequest(nearestNode.Name); // Highlight the nearest node drawable.HighlightNode(nearestNode); if (nearestNode != null) { - // Find the home node - Node homeNode = drawable.GetHomeNode(); - - if (homeNode != null) - { - - List<Node> path = drawable.AStarPathfinding(nearestNode, homeNode); - drawable.Path = path; - GraphicsView.Invalidate(); - } - + DisplayAlert("Node Clicked", $"You clicked on node: {nearestNode.Name}", "OK"); } else -- GitLab