I stumbled upon open drone map a few days ago. Looks like a great project! I am currently working on a live mapping framework and I wonder if WebODM might be used as visualizer (currently using ROS/RVIZ). Is the design flexible enough to handle incremental images / updates in a dynamic way, or is everything designed to be loaded at the beginning and then that’s it? Any thoughts on this are very welcomed!
Hey @Lachsn, I’ve actually started exploring the same idea a few weeks ago.
Currently the leaflet map within WebODM only handles TMS tiles (so you can only display final results), but it could be feasible to add a Live Map (using websockets perhaps) that pulls in incremental results. This would require adding a new component (maybe as a plugin).
@pierotofy thanks for your reply! The setting is search and rescue, however it can be applied to surveying in general. I utilize visual slam for pose estimation and reconstruct 2.5D elevation maps from some densification approaches in real-time/inflight. The outputs are the same as in standard photogrammetry, except that accuracy and outlier is way worse
It is the topic of my master thesis to develop the backend, however in the long term of the project i don‘t see RVIZ viable for consumer applications…which lead me here
Edit: ah, maybe one more word about the output: as I said it is the same as in photogrammetry. Therefore I produce 2D ortho photos, elevation maps but also 3D surface Data ( e.g. pcl pointclouds, meshes, …).
Are you currently publishing your work under an open license somewhere?
I’ve started experimenting by using the GPS lat/lon/elev data + gimbal and aircraft angles to extract the camera poses and then feed them into Map2DFusion (Brighton Dataset Map2DFusion - YouTube), but GPS tends to be fairly off, so often times the results tend to obliterate details in the final image when the image plane is miscalculated due to inaccurate GPS. Obliterating details is really, really bad and potentially life-threatening for search and rescue, so improvements are needed.
Haha nice, jeah map2dfusion is the paper that got me rolling orb slam for that. Interesting you found it too, it was only a miracle I stumbled upon this while searching for datasets.
My code is currently under development, but will be released as Open Source Project in May I guess. Will be a first, very raw version but hopefully usable. ROS dependencies are limited to transportation only, all hard work is separated in simple worker threads. So it might be viable for cross platform (however not planned or checked at the moment).
Exiv2 support is already implemented to get DJI data in. We also experimented with GPS/baro/heading only for mapping. Same results as yours (probably even worse :D). But quite effective if you consider that it works everywhere and with every kind of image data (e.g. thermal, …). So your results are not too bad! In my opinion the enhancement with visual SLAM is the way to go. Bad misalignments however will occure there too sometimes. The 3D approach looks even worse sometimes, because you have this whole experimental reconstruction pipeline to handle.
A lot of research is still open to get the perfectly aligned, distortion free ortho photos in real-time
Edit: you might also enjoy this one: IMAV 2017 DEBRIEF – AKAMAV
I used a gps/heading only approach for a competition in France last year, it is not really explained there but results can be observed. However we didn’t use any blending, which is why they are awful at best
Back to the original question, eventually the goal would be to provide a web interface to upload a video (or connect a live stream) and display the results in real time.
Starting from version 0.5.0 WebODM has a plugin system (which we’re still building and defining) that allows developers to extend its functionality to include just about anything. We’re adding various server side and client side hooks which allow people to add new functionalities to existing views (for example, the measurement tool is a plugin for the map display view) or to create new views entirely (for example, the posm-gcp interface).
I can imagine an implementation for displaying an incremental image feed would work something as follows:
Create a websocket API around the processing code (similar to what we have done to node-OpenDroneMap for exposing the functionality of OpenDroneMap, but targeted for live display). This could be an extension of the node-odm API (NodeODM/index.adoc at master · OpenDroneMap/NodeODM · GitHub) or a different API altogether. Video files / stream in → Image / point cloud feed out (incremental)
For displaying the 2D map, every time a new map tile is fully processed, an interval update can quickly swap the previous map tile layer (TMS) with the new one. This would be fairly quick to implement with Leaflet and plug into the existing map display.
For displaying the real time point cloud, we currently use potree (based on THREE.js) and I think there’s a way to read from a Greyhound datasource.
I’m mostly writing down thoughts, so I apologize if a few things don’t make sense. The bottom line is that I think this is very doable, will require quite a bit of work, but you have my full backing and I’d be happy to contribute to bring this feature to life.
The starting point is the websockets API, which is dependent on the processing code. I look forward to test your code and figure out possible ways to expose an API on top of it.
Sounds like a solid roadmap! I am no web developer myself, so I don’t see it doing myself. At least until I finished my Master to dive into the new topic. However I will talk about it with my colleagues. Maybe we find someone who can do it.
Thanks for your comprehensive answers anyway, WebODM seems like a really neat tool, one that the survey community will really enjoy!
it has been a while haha. I finished my thesis two years ago resulting in an open source project called OpenREALM:
I was gone traveling after that for a while and I am now picking up my work again. Future developments are unclear at the moment, but I still like the idea of using existing infrastructure like WebODM to make an easy to use real-time mapping software.
Has anything changes in the meantime about incremental map updates in WebODM? Anything easier than before?
WebODM work of late has been focused on dynamic tiling and plant health algorithms, better plugins and native Windows support, which probably don’t help much an incremental type workflow. However, it’s something that would be super-cool to add…