-
Notifications
You must be signed in to change notification settings - Fork 1
sprint6
This week, Loïc and I worked on the connection of the MappingMissionBuilder with requires meters and the rest of the code that uses LatLng. To solve this problem, we had to find a good bijective projection from LatLng to meters. As no good isometric (distance-preserving) projection exist from LatLng to meters, we decided that each projection would be local to an origin in LatLng. This had the advantage to provide a great accuracy for points close (within 10km) to the origin which is exactly what we need because mapping missions will not span over 100 of kilometres. Having this issue solved, we had little problems with the implementation except few edge cases when the LatLng goes from 180 to -180, etc.
I decided to finish the drone service implementation by adding the interface between the drone and the app that handles the mission. I used the fly2find project as a basis as they already did it. But I cleaned the code and adapted it to our service system.
I also helped Nicolas fixing some bugs.
The goal of this week was to find a good way to project point on a sphere in latlng to a plane with x,y coordinates in meters. I had already spent some time last week to read articles about it, but I hadn’t found any solution that seemed to be good for our project. We worked with Antoine and came out with an idea which is to do a mapping in local area only, using the distance function between latlng. This has the advantage to be quite easy to implement, to be compatible with our existing code and to have very small errors in small areas (like the ones we will use in this project). We then implemented it and it took a bit less time than expected, since no major problems occured and the writing of tests went smoothly. Since I had a bit more time than expected, I tried to help a bit Jonas with his problem by letting him use the older version of mapbox and trying to understand why the dragging was not working as expected.
My time estimate was pretty good this week and I didn’t have any major problem.
I first tried to solve the drag bug but without success. The problem is that as soon as we draw something on the map, the drag operation is stopped. So the "draw" of MapboxAreaBuilderDrawer is causing the problem. I tried several things: delegate the drawing to another thread but the drawing must be executed by the UIThread, update the area only at the end of the move action, but this creates a loop. Apparently there are known problems with the new version of Mapbox. So I tried downgrading to the same version of Fly2Find where there is no such problem, but again without success, but this is still the route I would recommend for further research into this bug.
I then added a basic test for the mission creation implementation I developed last week. I had trouble because I couldn't find any documentation on how to test and automatically trigger events on mapbox.
My first task was to finish the implementation of the search bar in the MappingMissionSelectionActivity. It append to take much more time than expected because when I started implementing it last week, we were using a ScrollView in which we created the buttons while reading the list of mapping missions. However Gabriel was assigned to use instead a RecyclerView to automatically generate the buttons when the list is updated which cause to completely modify the code on which I was working on. So I had to start almost all my implementation from scratch and ask him a few details on how the view works. I managed to end up with a satisfying result even if it took me a lot of time. My second task was to add a progress bar in the DroneConnect activity while the app I trying to connect to a Drone. Nicolas already had almost everything implemented to correctly show the progress bar but had a bug with threads management which caused to block the activity while the app was trying to connect to the drone instead of showing the progress bar. After a few hours I found a solution to this problem and the time estimate that was assigned to this task ended up being accurate. My third task which I did not have time to do and will do next sprint is to implement a service that can retrieve the user location.
First I corrected a bug happening when an user tried to login or register with empty email or password. It didn't take too much time, but took more than I thought it would because I had to do the work twice, for the login and for the register. Then I began to work on bugs happening while trying to connect a drone. I found three : the app didn't keep the drone in memory, the app accepted garbage ip and port for the simulation, and the app had no timeout when connecting a drone or a simulation. The first two were easily corrected, but I had a big problem with the thread when trying to correct the third, that I could correct only when José found the solution to the same problem for the progress bar. Finally I implemented a button allowing the user to delete a mapping mission, and that took less time than I thought it would.
This week, the team was focused on improving already implemented functionalities and fixing bugs. Now we are able to create a mapping mission be selecting points on the map. We can search a mapping missions name and then delete it. Now when we want to connect to a drone or simulation, the interface is more responsive. Some of us had difficulties solving problems during their task but there was always someone to help and almost everything went well.