-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks #68
base: master
Are you sure you want to change the base?
Conversation
ext/data_source.hpp
Outdated
|
||
namespace ORB_SLAM2 { | ||
namespace ext { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The types of data source should not be known here at all. Assume we want to assist source implementers. Then, look at boost::iterator_facade
pattern (= CRTP). One possibility would be to create a simplified façade for users to define own iterators for own data sources:
template<class TDerived>
class data_source_iterator_facade: public boost::iterator_facade<
TDerived,
ext::tuple<ext::time_point_t, ...> // etc...
boost::forward_traversal_tag
> {
// ...
};
Then the implementation of a new data source would consist of implementing a new iterator using the data_source_iterator_facade<my_data_source_iterator>
. However the benefits from this would be marginal, I'd prefer to expose iterator_facade
directly.
Second possibility would be to provide a façade for a data source, i.e. data_source_facade<TDerived>
which would basically implement a SinglePassRange
concept. However I am not sure if implementers could benefit from this too much either.
Either of the possibilities would make sense if we provided a concept check for user implementation but even that would have to be a specialization of SinglePassRangeConcept
ext/run.cpp
Outdated
#include "ext/ds_kitty.hpp" | ||
#include "ext/ds_dashcam.hpp" | ||
#include "ext/run_tracking.hpp" | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Imagine we have a set of data sources implemented following the pattern described above - i.e. each data source implements a boost::iterator_facade<ext::ds_kitty_iterator, ...>
. Then the implementation of a program which uses specific data source looks like this:
#include "ext/run_tracking.h"
#include "ext/ds_kitty.h"
#include "boost/ranges.hpp"
int main(argc, argv)
{
ext::ds_kitty_args args{argc, argv};
ext::run_tracking(boost::make_iterator_range(ext::ds_kitty_iterator{args}, ext::ds_kitty_iterator{}));
}
Alternatively, if a data source is modeled by a specific range:
#include "ext/run_tracking.h"
#include "ext/ds_kitty.h"
#include "boost/ranges.hpp"
int main(argc, argv)
{
ext::ds_kitty_args args{argc, argv};
ext::run_tracking(ext::ds_kitty{args});
}
So no need for case distinctions, just have a distinct runner for any ds type...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@paul-michalik
I have the following suggestion:
As we already made orb-slam2-ext has separate library,semantic_monocular.exe as separate application, cant we make orb-slam2-ext to handle all user input so that from application point of view (semantic_monocular.exe), the particular application should not know which data source it use, more specifically its implementation. so that we have control over is data source to change at latter timer, if any changes required.
which means from application point of view: the pseducode can be
#include "ext/run_tracking.h"
int main(argc, argv)
{
ext::slam_helper slam(args,argv); //it is wrapper class which will handle calling orb_slam2 object
//currently it is created as ext/slam_object
slam.run_tracking();
}
- I believe , though implementation is same for both cases, but with this we have same application which can run any type of application irrespective of input data type.
- in code wise what you described , we can move to orb-slam2-ext library only. so in most of time we will change only orb-slam2-ext library only. (close for modification and open for extension)
Let me know if it make any valuable meaning.
I guess it’s better to deal with user input separately, specific to each data source. The structure of the application should be as proposed in the review:
1. Data source: retrieves the data and provides a `SinglePassRange` of sensor readings to the application. It deals with all data source specific user input
2. The SLAM object. Deals with system initialization, GUI interaction, controls the lifetime of the system and forwards the tracking calls to the system.
3. The tracking loop. Receives a data source and SLAM object. Pulls data from the data source and feeds them to the SLAM pipeline.
4. The runner. Instantiates and initializes the data source, SLAM object and starts the tracking loop. Deals with inter thread communication when necessary. There is one runner for each type of data source.
Please do not introduce names like `slam_helper`. The `semantic_monocular` will be replaced by data source specific runners which look as in the code snippet from the review. The implementation might get more complex for real time runners. Small and simple runners remove the necessity to deal with argument dispatching, factories and similar stuff…
Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
________________________________
From: ansuman pattnaik <notifications@github.com>
Sent: Tuesday, April 10, 2018 7:01:51 AM
To: paul-michalik/ORB_SLAM2
Cc: Paul Michalik; Mention
Subject: Re: [paul-michalik/ORB_SLAM2] Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks (#68)
@apattnaik0721013 commented on this pull request.
________________________________
In ext/run.cpp<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23discussion_r180297634&data=02%7C01%7C%7C40d28122fbeb43778f0308d59ea02ddb%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636589333150090987&sdata=Umn8LTmh5WqiKkZOlkreVcVJcVek64aAdJR3vBLqp7M%3D&reserved=0>:
@@ -0,0 +1,31 @@
+
+#include "ext/slam_api.hpp"
+#include "ext/ds_semantic.hpp"
+#include "ext/ds_kitty.hpp"
+#include "ext/ds_dashcam.hpp"
+#include "ext/run_tracking.hpp"
+
@paul-michalik<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik&data=02%7C01%7C%7C40d28122fbeb43778f0308d59ea02ddb%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636589333150090987&sdata=yNrhYtMnEcsHTOqzeMQ2URb7wHHdpMwqnGCXxznIM4M%3D&reserved=0>
I have the following suggestion:
As we already made orb-slam2-ext has separate library,semantic_monocular.exe as separate application, cant we make orb-slam2-ext to handle all user input so that from application point of view (semantic_monocular.exe), the particular application should not know which data source it use, more specifically its implementation. so that we have control over is data source to change at latter timer, if any changes required.
which means from application point of view: the pseducode can be
#include "ext/run_tracking.h"
int main(argc, argv)
{
ext::slam_helper slam(args,argv); //it is wrapper class which will handle calling orb_slam2 object
//currently it is created as ext/slam_object
slam.run_tracking();
}
1. I believe , though implementation is same for both cases, but with this we have same application which can run any type of application irrespective of input data type.
2. in code wise what you described , we can move to orb-slam2-ext library only. so in most of time we will change only orb-slam2-ext library only. (close for modification and open for extension)
Let me know if it make any valuable meaning.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23discussion_r180297634&data=02%7C01%7C%7C40d28122fbeb43778f0308d59ea02ddb%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636589333150090987&sdata=Umn8LTmh5WqiKkZOlkreVcVJcVek64aAdJR3vBLqp7M%3D&reserved=0>, or mute the thread<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKF8bt3i5IXtVq4NV66O-r7-d0HbRP6Wks5tnDy_gaJpZM4TJpfe&data=02%7C01%7C%7C40d28122fbeb43778f0308d59ea02ddb%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636589333150090987&sdata=6b7lff%2FlG11BUXV04L0WkXWYJniUFNxs%2FGbYgfBXEeE%3D&reserved=0>.
|
Version with
|
@paul-michalik |
CMakeLists.txt
Outdated
@@ -53,6 +53,16 @@ add_library(orb-slam2-ext STATIC | |||
ext/app_monitor_api.h | |||
ext/app_monitor_api_impl.h | |||
ext/messages.h | |||
ext/kitty_data_source/ds_kitty.hpp |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make it shorter: ext/ds_kitty/...
. But do we really need a folder?
CMakeLists.txt
Outdated
|
||
add_executable(semantic_monocular_video Examples/Monocular/semantic_monocular_video.cpp) | ||
target_link_libraries(semantic_monocular_video orb-slam2 ${Boost_LIBRARIES}) | ||
elseif(BUILD_EXAMPLES) | ||
add_executable(semantic_monocular Examples/Monocular/semantic_monocular.cc Examples/Monocular/semantic_monocular.hpp) | ||
target_link_libraries(semantic_monocular | ||
add_executable(run_kitty_monocular Examples/Monocular/run_kitty_monocular.cc) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please use the name of the data source in the target and source file names: run_ds_kitti.cpp
, run_ds_video.cpp
, ...
@@ -0,0 +1,66 @@ | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Factor the common parts of each runner implementation into a new module.
- Data source implementation must export an API to create itself. A function template to create a data source:
// TDataSource is a trait class which describes the data source and is provided by a data source implementation
auto make_data_source<TDataSource>(argc, argv)
{
return boost::range::make_iterator_range<
typename TDataSource::iterator_t, ... // etc, you get the point
>(argc, argv);
}
- Rewrite runners according to this API
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
small doubt on this.
- do you want to make a common iterator template class for all data source?
- from data source, do you want to implement begin() and end() , so that it can be used as stl container (example: TDataSource::iterator = TDataSourceObj.begin())
- in run_tracking.hpp, we are going to add make_data_sourcec() which will return range for specific data source.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please rename *. cc
to *. cpp
and stay consistent. The same for *.h
or *. hpp
. Please use either of them but not both.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The runners are obviously still far away from the ideal we have set up a while ago. There's too much code in them, most of it repeated over all nrunners.
Examples/Monocular/testJson.json
Outdated
{ | ||
"000000": { | ||
"traffic_signs": [ | ||
[ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please move this into a new test folder. I suggest tests/tests_ds_semantic.json
and all other unit test shall go there and shall be named following a unified schema.
ext/ds_dashcam.hpp
Outdated
namespace fs = boost::filesystem; | ||
using namespace std; | ||
using boost::property_tree::ptree; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we reading the csv file here? I'd prefer to red the mpeg stream directly!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- I am reading mpeg stream. and also csv file.
- mpeg steam for extracting images
- csv file for extracting gps information.
let me know if we any other ways are there to extract gps.
ext/run.cpp
Outdated
#include "ext/ds_dashcam.hpp" | ||
#include "ext/run_tracking.hpp" | ||
|
||
namespace ORB_SLAM2 { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this still there? Please remove...
@@ -16,11 +16,11 @@ if not exist "%OrbSlam2_ProjectDir%\Vocabulary\ORBvoc.bin" ( | |||
del /f /q "%OrbSlam2_ProjectDir%\Vocabulary\ORBvoc.bin.tar" | |||
) | |||
|
|||
set "OrbSlam2_App=%OrbSlam2_ProductsDir%\Release\semantic_monocular.exe" | |||
set "OrbSlam2_App=%OrbSlam2_ProductsDir%\Release\run_semantic_monocular.exe" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file needs to be completely removed too, or am I misunderstanding something?
The ideal form of a runner I mentioned in the review comment is this (grabbing "kitti" data source as an example)...
Alternative is the iterator range based version. Let us work towards this result step by step! |
14f2521
to
b3b3d43
Compare
@paul-michalik
please note:
to be done:
@paul-michalik let me know your input on this. |
ext/ds_kitty.h
Outdated
} | ||
gpsfile.close(); | ||
_gps_index++; | ||
//slow down driving speed for avoiding tracking lost |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this for?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- while running kitty inputs, tracking lost is coming almost every time.
- Hence by making tracking thread slow ,local mapping will get time to process the current keyframe which in turn process more keyframe.
- The time is added as random and hence just used for practical purpose.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This isn't good at all. Has Poorva run into this when testing against Kitti datasets for the first time?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to investigate this. @apattnaik0721013's theory is that the mapping thread takes too much time and in consequence the next frame from the tracking differs too much from the last seen frame (=loss of coherence).
- Why does the mapping thread take much longer than with the other data sets? Especially the Garching data appears to be more complex than the Kitti data...
- I propose to enlarge the size of the queue which is used for communication between tracking and mapping threads. This should help amend the loss of tracking...
- Are the configuration data used for the feature detector the same as for other data sets? Have you tried we lower the number of detected features?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
q. why tracking lost occurs?
Ans. unrelated neighbor images are encountered.
Description ->
- neighbor images can be unrelated if the matching of features(key-points) are less among neighbor images.
- In monocular orb-slam2, map-points are considered if there is at-least 2 observers which means at least 3 neighbor key-frames.
- each key-frame is constructed after certain frames is passed. so there may be 2 or more frames(images) should be passed for each key-frame construction.
- so in assumption, features(key-points) of one images should have more matches with its 4th image.
causes of unrelated neighbor images ->
- vehicle is moving very fast which may create more difference in terms of matching of features(key-points) among neighbor images or frames.
- features(key-points) extraction is less in images.
- creation of key-frames becomes less as local mapping takes huge time to process each key-frame.
- local mapping perform following task when it encounters a key-frame in the queue->
-- MapPointCulling() - remove redundant local map-points
-- CreateNewMapPoints() - create map-point from current key-frame
-- SearchInNeighbors(); - replace duplicate map-points
-- Optimizer::LocalBundleAdjustment - optimizations of map-points
-- KeyFrameCulling() - remove redundant redundant local Key-frames
q1.Why does the mapping thread take much longer than with the other data sets? Especially the Garching data appears to be more complex than the Kitti data...
Ans.
- There cant be any particular answer as it depends on matching of features(key-points) among images .
- But my assumption is that in some kitty images, either vehicle is move very fast and kitty fps is 10 per sec which my casuse more difference among images in terms of features(key-points).
q2. I propose to enlarge the size of the queue which is used for communication between tracking and mapping threads. This should help amend the loss of tracking...
Ans
- yes we can enlarge the size of the queue to avoid tracking lost. Though we can use sleep() in tracking which also increase more keyframe. but use queue will give more control to select particular frame to become key-frame.
- in orb-slam2 (raulmur version) , sleep() is used to avoid tracking lost.
- the key-frame is filtered by orb-slam2 in order to view the result in sync with the current input though run tracking , local mapping and viewer thread are run asynchronously.
- Though we can make more key-frames or all the key-frames from frames and process them all in local mapping, but this will make orb-slam2 to run tracking and local mapping thread synchronously and viewer thread more out-of-sync with the current input. so the lag will seen between current input frame and map-viewer.
- so it is important to select key-frames more carefully to avoid performance issue.
q3.Are the configuration data used for the feature detector the same as for other data sets? Have you tried we lower the number of detected features?
Ans
- i tried to run kitty data set with lower features and higher features , but result is same.
The runners look very good now. Now looking into the implementation of the data sources strange things are coming up...: Which of the data sources are really functional? How do you test this? More ds specific questions in the comments... |
Please look up the JIRA task where I describe how to extract the GPS which are encoded as subtitles from the transport stream. Not sure if cv::VideoCapture supports this. Maybe via properties, similar as we did for the time stamp? Otherwise use ffmpeg? Please investigate!
Sent from my Windows 10 phone
________________________________
From: ansuman pattnaik <notifications@github.com>
Sent: Thursday, May 3, 2018 10:22:50 AM
To: paul-michalik/ORB_SLAM2
Cc: Paul Michalik; Mention
Subject: Re: [paul-michalik/ORB_SLAM2] Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks (#68)
@apattnaik0721013 commented on this pull request.
________________________________
In ext/ds_dashcam.hpp<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23discussion_r185724801&data=02%7C01%7C%7C49a4bc185f10423e21d208d5b0cf101d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636609325725877965&sdata=gcMbbiljYJhuZharQFwp6u6vqvfiuSBRPrdsMNFKZfc%3D&reserved=0>:
+#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/json_parser.hpp>
+#include <boost/foreach.hpp>
+#include <iostream>
+#include <boost/filesystem.hpp>
+#include<iterator>
+#include <boost/lexical_cast.hpp>
+#include<opencv2/core/core.hpp>
+#include "opencv2/opencv.hpp"
+#include <boost/tokenizer.hpp>
+#include <boost/lexical_cast.hpp>
+
+namespace fs = boost::filesystem;
+using namespace std;
+using boost::property_tree::ptree;
+
@paul-michalik<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik&data=02%7C01%7C%7C49a4bc185f10423e21d208d5b0cf101d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636609325725877965&sdata=RNCsSrNoceBFnuVdry4JwWKFhMvZZ%2BYTz8nAP5BBumA%3D&reserved=0>
* I am reading mpeg stream. and also csv file.
* mpeg steam for extracting images
* csv file for extracting gps information.
let me know if we any other ways are there to extract gps.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23discussion_r185724801&data=02%7C01%7C%7C49a4bc185f10423e21d208d5b0cf101d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636609325725877965&sdata=gcMbbiljYJhuZharQFwp6u6vqvfiuSBRPrdsMNFKZfc%3D&reserved=0>, or mute the thread<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKF8bnMbFJNHlulVwegntIfUXCgq1u0lks5tur5agaJpZM4TJpfe&data=02%7C01%7C%7C49a4bc185f10423e21d208d5b0cf101d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636609325725877965&sdata=5qKWiHm0y1s6YvVEszwZjFgYgpBksOP7NuSPg4eCdoE%3D&reserved=0>.
|
Please add an (intermediate) Readme in the |
@@ -1,156 +0,0 @@ | |||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't use CamelCase in file names. Prefer some_meaningful_name.json
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you have test data, please add it to a new folder called ORB_SLAM2/tests
. If you feel confident and want to make me happy add also unit tests which verify the correctnes of the current implementation if the respective data sources.
|
ext/Readme.md
Outdated
- dashcam: The MPEG transport stream generated by Ausdom A261 DashCam. [Format description and analysis](https://jira.harman.com/jira/browse/INTHAD-183?filter=53275&jql=project%20%3D%20%22Highly%20Automated%20Driving%22%20AND%20%20labels%20in%20(Macs-SLAM-ORB2)%20AND%20description%20~%20Ausdom%20ORDER%20BY%20created%20DESC) | ||
|
||
## Bootstrap and build | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add the usual description about using the project API
ext/Readme.md
Outdated
|
||
### Run kitti | ||
* `run_ds_kitti.bat <path-to-image-folder> <path-to-oxts-folder> <path-to-settings-file>` | ||
* download Kitti dataset with GPS support http://kitti.is.tue.mpg.de/kitti/raw_data/2011_09_26_drive_0009/2011_09_26_drive_0009_sync.zip and unzip into a folder `kitti_data_dir`. To run the data set `00` invoke script as follows: `run_ds_kitti.bat kitti_data_dir\image_00\data kitti_data_dir\oxts\data` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How can this work? image_00\data
contains images from one specific track. How is oxts\data
related to image_00
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You need to document the connection between the input sequence and the raw data which contains the "oxts" readings. Please consult with @PTavse. Obviously not each input sequence will be compatible with arbitrary raw data folder!
@paul-michalik
kitty data set -:
|
|
554d80a
to
ddd52a6
Compare
a8c6ad7
to
7ee9f48
Compare
bad24a7
to
dbc1446
Compare
971244c
to
5d30f54
Compare
No, please pull this back! You overwrote the renames "traficsign" -> "tsr"...! Just remove this whole commit and start over! |
@paul-michalik
[Need feedback]
|
* Just remove your commit and then add what you wanted to add without overwriting my changes
* Which formats does `ds_tsr` support now? Video AND images should be supported.
* Don’t create testcases now. It just has to work as described with a data set added using the given name. Please add that to data folder with git-lfs for video and images.
…Sent from my Windows 10 device
________________________________
From: ansuman pattnaik <notifications@github.com>
Sent: Wednesday, August 1, 2018 10:59:34 AM
To: paul-michalik/ORB_SLAM2
Cc: Paul Michalik; Mention
Subject: Re: [paul-michalik/ORB_SLAM2] Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks (#68)
@paul-michalik<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik&data=02%7C01%7C%7C8873d36162484415400408d5f78d1ab9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636687107758136618&sdata=qlB9neFOsMkLxV2kluYrqTEhOvjHPOQIG%2BKnctvA3Hc%3D&reserved=0>
[Status]
* renames ds_trafficsign to ds_tsr
* regarding unit testing, we already have created this issue.
* so we can address this in separate branch
* currently ds_tsr.bat takes only images along with txt file
[Need feedback]
* do you want to change ds_tsr to handle both image and video input where default is video input.
* do i create test cases by using the graching_loopcloser_5 dataset in this branch
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23issuecomment-409503919&data=02%7C01%7C%7C8873d36162484415400408d5f78d1ab9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636687107758136618&sdata=VGYGhi0BRfXzW9hehCT4RwdXbogb6EAuJFtD4Ii7ucU%3D&reserved=0>, or mute the thread<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKF8bpn85shdoQIbuN6pwhAykDsX8Z1Kks5uMW32gaJpZM4TJpfe&data=02%7C01%7C%7C8873d36162484415400408d5f78d1ab9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636687107758136618&sdata=WfbcSrRtbcJ%2FN3cHBbuoVLcphk7Y2gXcElHjK975bp4%3D&reserved=0>.
|
826ffcc
to
6c202eb
Compare
@apattnaik0721013 Adding boost-parameters is a good thing, but a CLI should be designed. In your implementation there's a lot of typos and no recognizable system. The idea of the |
@apattnaik0721013 Stop adding |
@paul-michalik |
@apattnaik0721013
|
…throttle (2) Extracted semantic type for arguments to ds_tsr_args (3) Fixed typos
…t_for with simpler signature
|
No! I told you to wait until I push the changes to demonstrate how things should be done for ds_tsr. Then, please, go on with other data sources in the same style. You can branch off and continue there but I'll remove al the other changes from this branch. Also: From now on it is zero warnings policy and no feature without a test case. I’ll add cotired configuration for Boost Test to the project and change the build config accordingly.
…Sent from my Windows 10 device
________________________________
From: ansuman pattnaik <notifications@github.com>
Sent: Friday, August 3, 2018 9:42:32 AM
To: paul-michalik/ORB_SLAM2
Cc: Paul Michalik; Mention
Subject: Re: [paul-michalik/ORB_SLAM2] Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks (#68)
@paul-michalik<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik&data=02%7C01%7C%7C9560fd04fa0345a1e95d08d5f914acd1%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636688789541846414&sdata=PS%2BxAQPTU%2BZr0QVSKZv6B8lWLfliK5d408onC1itwq4%3D&reserved=0>
* i will remove BOOST_FOREACH and using namespace.
* as you mentioned , you are going to change ds_tsr args and ds_tsr, so after this i will address this changes.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23issuecomment-410172895&data=02%7C01%7C%7C9560fd04fa0345a1e95d08d5f914acd1%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636688789541846414&sdata=WbMXtFOS%2BqfK8FbmVg4TH91n5O%2BjnehK1eirKzNTnsM%3D&reserved=0>, or mute the thread<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKF8bmIwOhEuS_E757IOBkvXLdlkgEHoks5uM_7ogaJpZM4TJpfe&data=02%7C01%7C%7C9560fd04fa0345a1e95d08d5f914acd1%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636688789541846414&sdata=tYJGPiFlAJhckLOKE%2FZdcqhH%2Fxr8DjZcQjbRt9nN4C8%3D&reserved=0>.
|
|
This is fine, leave it be. I'll take care of it. I’m gonna do this:
1. Create a new branch from the tip of your current work. Rename it like th original branch plus ”-temporary” token
2. Reset the original branch to 6c202eb and push it
3. Add my changes to the original branch
Then, and only then you can start working on the discussed adaptations. You can switch to “-temporary” branch after it's ready.
…Sent from my Windows 10 device
________________________________
From: ansuman pattnaik <notifications@github.com>
Sent: Wednesday, August 8, 2018 10:01:48 AM
To: paul-michalik/ORB_SLAM2
Cc: Paul Michalik; Mention
Subject: Re: [paul-michalik/ORB_SLAM2] Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks (#68)
@paul-michalik<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik&data=02%7C01%7C%7C600db7eccf4f4b1c6ca908d5fd05319c%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636693121099696922&sdata=WkjvxQq940nda1D4zr41ZcqkQ9DYkAJ1PDSVN74uVWA%3D&reserved=0>
* sorry for this trouble.
* but i didnt update any code changes after your previous comments
@apattnaik0721013<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapattnaik0721013&data=02%7C01%7C%7C600db7eccf4f4b1c6ca908d5fd05319c%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636693121099696922&sdata=aDgwBUaN3IJN5VXR56sTGY6iN4tN3DlKSQ7HxFzilI8%3D&reserved=0>
I am also going to change the code formatting. Please stick with using this formatting style!
Don't use BOOST_FOREACH. There is range-base for loop!
* so the last commit is 2a436fe<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fcommit%2F2a436fe3e41328ed130ef448734a527506dcdec8&data=02%7C01%7C%7C600db7eccf4f4b1c6ca908d5fd05319c%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636693121099696922&sdata=BODnSlyQ72q2APuqKozCARsZM9LlxYc2H4YSvWn%2BSgA%3D&reserved=0>.
* but i added only the comments about the this commit
* just for information, this commit has following changes:
* renames ds_trafficsign to ds_tsr
* added graching data set
* ad new iterator ds_image which will handle both image and video input in util
* ds_kitti, ds_tsr, ds_dashcam use ds_image to handle both image and video input and provide slam input.
* change launch.vs.json for launch run_dashcam and run_tsr.
* run_ds_dashcam.bat and run_tsr.bat will launch with default graching dataset if not parameter is given
* let me know how to resolve this now.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23issuecomment-411321983&data=02%7C01%7C%7C600db7eccf4f4b1c6ca908d5fd05319c%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636693121099853168&sdata=m1193UlU4qSYqI6VKs7kJCREH2b9KKvwRjyC9IVzoRQ%3D&reserved=0>, or mute the thread<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKF8biFNHnj4Cm1-swM9Rkjr1qfT_2Ceks5uOprsgaJpZM4TJpfe&data=02%7C01%7C%7C600db7eccf4f4b1c6ca908d5fd05319c%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636693121099853168&sdata=uAVg%2BZXYczi%2Bg%2BXptvE1TPn3OBlg1rEKayS%2FbSbIffA%3D&reserved=0>.
|
2a436fe
to
6c202eb
Compare
shall i add the following changes:
|
@apattnaik0721013, I am giving up, you win. You obviously do not read what I write... So let me push the changes to this branch. You can add |
… Set up cotire build
@paul-michalik
|
- Follow the implementation patterns for arguments and data sources from ds_tsr_args and ds_tsr
- do not modify these two in your branch, this is still work in progress
- apply zero warnings policy! No warnings must be used from the newly written code. CMake is set to W3 for MSVC
- write unit tests for data sources and arguments as demonstrated. With MSVC precompilation and ergo fast design cycles are supported
- expect a lot of redesign cycles since the submitted code is far from good
…Sent from my Windows 10 device
________________________________
From: ansuman pattnaik <notifications@github.com>
Sent: Friday, August 10, 2018 10:12:29 AM
To: paul-michalik/ORB_SLAM2
Cc: Paul Michalik; Mention
Subject: Re: [paul-michalik/ORB_SLAM2] Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks (#68)
@paul-michalik<https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik&data=02%7C01%7C%7Ca25a01afadb749971d5e08d5fe990458%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636694855506991844&sdata=Rkgi7K6a2Rs04Pzy6J2w0p6yhY8MfiIUoS%2FbOd%2BaLvo%3D&reserved=0>
summarizing the list of task that i am going to do in feature/temp/Refactor-ORB_SLAM2-front-end-to-accept-arbitary-data-sources-and-data-sinks-temporary:
* add Garching_LoopClosure-5-images
* change the structural representation of the branch feature/temp/Refactor-ORB_SLAM2-front-end-to-accept-arbitary-data-sources-and-data-sinks-temporary as you did in this current branch:
* move all the data source to ext_ds
* all data source unit tests to ext_tests
* retaining the ds_image support in feature/temp/Refactor-ORB_SLAM2-front-end-to-accept-arbitary-data-sources-and-data-sinks-temporary which makes data source supporting both image and video inputs.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23issuecomment-412010376&data=02%7C01%7C%7Ca25a01afadb749971d5e08d5fe990458%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636694855507148096&sdata=oQaMeqyr%2Fr2yo%2B0qevnrIMNe%2BKX%2B7HE0TFE3%2BNPLH24%3D&reserved=0>, or mute the thread<https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKF8bsvy-b_Lc9wh1bO3Ti1Ot-Un4orwks5uPUBtgaJpZM4TJpfe&data=02%7C01%7C%7Ca25a01afadb749971d5e08d5fe990458%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636694855507148096&sdata=oAQdtmtYZGx8CRhfZx9d187idbXnjaP8V30qDPqsF%2BQ%3D&reserved=0>.
|
I am going to create separate branches for each data source. You can use the existing temporary branch as a parent but the data sources will be merged on separate PR one by one. I am going to cherrypick the test data for the tsr data source from the temporary branch. How about the video version of ds_tsr? Do we need different tsr data for that? I don't think so, but don't remember the details exactly…
…Sent from my Windows 10 device
________________________________
From: ansuman pattnaik <notifications@github.com>
Sent: Friday, August 10, 2018 10:12:29 AM
To: paul-michalik/ORB_SLAM2
Cc: Paul Michalik; Mention
Subject: Re: [paul-michalik/ORB_SLAM2] Feature/refactor orb slam2 front end to accept arbitary data sources and data sinks (#68)
@paul-michalik<https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik&data=02%7C01%7C%7Ca25a01afadb749971d5e08d5fe990458%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636694855506991844&sdata=Rkgi7K6a2Rs04Pzy6J2w0p6yhY8MfiIUoS%2FbOd%2BaLvo%3D&reserved=0>
summarizing the list of task that i am going to do in feature/temp/Refactor-ORB_SLAM2-front-end-to-accept-arbitary-data-sources-and-data-sinks-temporary:
* add Garching_LoopClosure-5-images
* change the structural representation of the branch feature/temp/Refactor-ORB_SLAM2-front-end-to-accept-arbitary-data-sources-and-data-sinks-temporary as you did in this current branch:
* move all the data source to ext_ds
* all data source unit tests to ext_tests
* retaining the ds_image support in feature/temp/Refactor-ORB_SLAM2-front-end-to-accept-arbitary-data-sources-and-data-sinks-temporary which makes data source supporting both image and video inputs.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpaul-michalik%2FORB_SLAM2%2Fpull%2F68%23issuecomment-412010376&data=02%7C01%7C%7Ca25a01afadb749971d5e08d5fe990458%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636694855507148096&sdata=oQaMeqyr%2Fr2yo%2B0qevnrIMNe%2BKX%2B7HE0TFE3%2BNPLH24%3D&reserved=0>, or mute the thread<https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKF8bsvy-b_Lc9wh1bO3Ti1Ot-Un4orwks5uPUBtgaJpZM4TJpfe&data=02%7C01%7C%7Ca25a01afadb749971d5e08d5fe990458%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636694855507148096&sdata=oAQdtmtYZGx8CRhfZx9d187idbXnjaP8V30qDPqsF%2BQ%3D&reserved=0>.
|
Yes paul, we don't need separate tsr data. |
…_tsr (3) Add copying of test data to binary folder in order to support automatic testing
Currently kitty data source , semantic data source is supported.
Following design is implemented.
l