Skip to content
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

Pull Request for GSoC Work Product Submission #1

Open
wants to merge 63 commits into
base: master
Choose a base branch
from

Conversation

karnikram
Copy link

@karnikram karnikram commented Aug 14, 2018

Have added an elaborate README with details of all work done, to be done, links to a demo video and blog post among others.

Includes some commits made by mentor as well.

karnikram and others added 30 commits March 27, 2018 15:04
* Setup the main GUI window
* Added setup elements
* Added initialization elements
…ses for the calibration (calib_core), the GUI squeleton (autocalib-gui), testing individual examples, program unit tests, build the doc with doxygen, and search for dependencies with cmake scripts (cmake_modules).

Remove temporary files
Set the project structure
* Change QTextEdit to QSpinBox, QGroupBox to QDockWidget
* Add new buttons, re-arrange setup widgets
* Load rawlog file
* Adopt MRPT code style guidelines
* Custom tree model to represent and display the rawlog entries as a tree
* Setup a viewer container as the central widget
* Refactoring and cleaning
* Added three pcl visualizers as qvtkwidgets
* Initialized with place-holder point cloud
* Setup config widget
* Layout changes to viewer container
* Reorganized and resized widgets for better clarity
* Linked visualizers to observation clouds
* Changed visualizer background, added coordinate system
* Handling observation set, observation item clicks separately
* Added class for plane-matching algorithm, not able to convert Observation3DRangeScan into organized point cloud for pcl's normal estimation method
* Refactoring
* Add dockwidget for algo config, insert algo specific widget based on selection
* Setup code to pass values from ui to core algo
* Refactoring
* Not able to include ui_*.h files properly
* Code to share setup values and UI across classes
* Refactoring
* Passed std::function objects pointing to the update text method inside the ui, instead of passing the ui itself
* Refactoring
* CMake changes to build with the latest mrpt libraries.
* Added Q_MOC_RUN macro for compatibility with Qt 5.7.
* Removed redundant code, added helper messages
* Implemented observer design pattern for more modularity. CPlaneMatching is a subject and it maintain a list of observers and notifies them automatically about status changes through a common interface, CObserver. The observers register with the subject without tight coupling.
* Refactoring
* Able to run plane segmentation on the rawlog, and visualize the segmented planes
* Added normal estimation parameters to gui
* Refactoring
* Clicking on any observation tree item will now show the original cloud with the extracted planes overlayed
* Refactoring
* Added a progress dialog to show feedback on load progress
* Display rawlog stats
* Fix bug that caused the last observation set to not be loaded
* Refactoring, moved to 18.04 with PCL 1.8 and Qt 5.9.5
* Added image viewer, re-arranged viewer elements
* Added classes for line matching algorithm
* Added QListWidget with checkboxes for selecting the sensors the user
wishes to calibrate.
* Setup Doxyfile for Doxygen document generation.
* Updated README.
Added 2 new classes to organize the calibration functions.
* Added option to regroup observations based on time stamp proximity
* Added a list view to display original list of observations
* Refactoring
* Added classes as wrappers around the core classes
* Loads initial calib, grouping, and plane seg params
* Writes initial calib, grouping params
* Writing plane seg params needs fix
* Refactoring
* Items and sets on the grouped tree view can now be visualized
* More doxygen comments and refactoring
karnikram and others added 19 commits July 16, 2018 13:46
* Now visualizing the correct clouds upon click by maintaining the indices of the items
in the original model.
* Fixed indentation issues
* Created CObservationTree and CObservationTreeItem classes to manage
the observations loaded from the rawlog, independent of gui, and their
synchronization.
* Subclassed CObservationTree as CObservationTreeGui to display the tree
in gui.
* Running plane segmentation now directly on the synced observation
tree. But display causes a crash.
* Fixed missing image for input2 issue, and the issue of incorrectly transforming
point clouds before display.
* Yet to add QProgressDialog.
* Regrouped parameters into one file, with one container
TCalibFromPlanesParams structure
* Fixed minor label counting bug
* Now displaying the contours of the segmented planes and their normals
in the cloud viewers
* Displaying the 2D plane contours in the image viewers
* Fixed minor label count bug, and segfault in previous commit
* Renamed some gui elements
* Reorganized setup elements to now load a config file before loading
rawlog file
* Sensor poses are now stored inside the model
* Added a combo box to select a sensor pose and edit its values
* mrpt complains about pose to rvec conversion saying rotation matrix is not
orthogonal and causes a crash
* Now loads plane matching params from config file and passed to
CCalibFromPlanes through the gui
* sensor_poses now gets modified according to sensors selected for synchronization
* Added code for matching of planes by applying distance and normal
constratints, yet to visualize
* Overlapped point clouds are now being shown in the middle window like
before, "extract planes" and "match planes" button clicks are now being
handled better by maintaining the status as an enum
* Now using saved clouds during display, but wrong cloud is being
displayed
* Added code visualizing the plane matches in the middle viewer, and an
interface class for communication between the viewer and the calib
class
* However the problem of incorrect clouds and its matches being displayed is
still there
* Added code for calibrating the rotations, yet to be tested
* Refactored plane matching code to use maps and their pair-wise visualization, yet to be tested
* Saving loaded clouds within CObservationTreeItem for quick access and
display
* GUI changes for inputting matching, solver params
* Bug fixes for plane matching and its visualization. Had used incorrect
indexing during matching, and incorrect coordinate systems during display.
* Planes matching and visualization have been tested and are working
properly now.
* Integrated line segmentation with gui, runs properly
* Added code for visualization of the extracted 2d line segments on images but mrpt
img causes a crash when it is being released
* Cleaned rotation estimation from planes, error still always increases
* Segmented lines and planes are now being drawn on the 2d images properly using shared pointers
* Now able to dynamically switch algorithms, by hiding/showing widgets
* Cloud viewer text added back
* Cleaning
* Created new CLine class for storing the geometric properties of the
extracted lines
* Added code for estimating these properties
* Added code for visualization of 3D lines, doesn't match the 2D line
segments - needs debugging
* Added code for matching of 3D lines based on normal-normal and normal-line dot product constraints
* Added code for visualizaiton of matched 3D lines in the main viewer,
needs fixing
* Added code for selection of which sensor's observations to visualize
in the viewers. Works only for observations selected from the list as of
now (not the sync sets)
* Fix bug related to printing of matching stats
…needs to be tested.

2) Fix bug in CCalibFromPlanes::findPotentialMatches.
3) Added a new config file for a new dataset.
* Can now switch between multiple sensors in the viewers in order to
visalize their clouds, images, and extracted and matched features if
any. Used a vector of buffer structures to store the data of all the
observations from a set

* Introduced a downsampling factor to easily sample spaced out
observation sets for calibration

* Saving and access of loaded clouds is now working properly, except in the case of
CCalibFromPlanesGui where behavior is somewhat random
* Used pbmap methods to remove duplicate planes out of all the planes extracted from a cloud observation, along with the gui changes to input the methods' params
* Code cleaning
* Introduced angular and distance uncertainty in gui and config files,
used for matching features, and stored in model
* Rearranged gui elements to better match with calib workflow - like editing
initial calib values along with the calib params
* Moved calib params object to core classes
* Stored results of solver in separate object, using for printing
* Code cleaning
@karnikram karnikram changed the title Pull Request for Final Project Submission Pull Request for GSoC Work Product Submission Aug 14, 2018
* Updated readme with details of all work done, to be done, a demo
video, and others
* Minor code clean
@jlblancoc
Copy link
Member

@EduFdez : Let me know when this PR is ready to be merged, at your judgement...
Cheers!

@EduFdez
Copy link

EduFdez commented Aug 16, 2018

I'll let you know!

* 3D lines extracted (by back-projecting 2D lines) were relative to the
camera's frame. Had to transform them back to the depth sensor's frame.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants