-
Notifications
You must be signed in to change notification settings - Fork 1
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/lifelong compression #2
base: foxy-devel
Are you sure you want to change the base?
Conversation
… on all quadrants
@kmilo7204 I have the impression this is targeting the wrong branch -- quite a few commits in there are not yours. |
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.
First pass @kmilo7204 !
…functions for updating cell probability and cells logs
From my last discussion with @hidmic. I am sharing a brief analysis of the Algorithm 1, this is my interpretation of it. From my POV the algorithm is confusing at some point, specially in the calculation of probabilities (Even when equation are really clear there), but based on the number of calculations I ended up with the right values to calculate. I made calculations for two observations (Not with numbers but keeping the variable representation), you can find it in the attached document. I will be moving from this point now. |
…d with this logic
@kmilo7204 Thanks for the analysis! I need to clarify something. My interpretation would be the following: Let's say that after applying In order to compute the entropy of C given that particular outcome we would do: And we would need to repeat that for every possible outcome in the resulting hashtable from |
You are right about the clarification. I will correct the document so it is available for all of us! Thanks for the clarification and comments! |
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
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.
Quick partial pass (as I see the old approach is still here).
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
6418597
to
c7d6116
Compare
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
@hidmic |
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.
Nth pass :) Besides some oddities in the way the code is written, first impressions suggest it is correct. Did performance improve @kmilo7204 ?
src/experimental/utils.cpp
Outdated
karto::Vector2<kt_double> calculateCellIntersectionPoints(karto::Vector2<kt_double> const & laser_start, | ||
karto::Vector2<kt_double> const & laser_end, karto::Vector2<kt_double> const & cell_start, karto::Vector2<kt_double> const & cell_end) |
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.
@kmilo7204 meta: I wonder, quite a few functions take segments and bounding boxes as a pair of 2D points (endpoints and corners, respectively). Why not adding Segment2
and Box2
structs for improved readability?
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.
Thanks for this suggestion.
From my perspective it is only worth the implementation of Segment2
, because this kind of data structure is used a lot within this code. It was defined as a template structure in utils.hpp
as shown next:
template<typename T>
struct Segment2
{
karto::Vector2<T> start;
karto::Vector2<T> end;
};
Regarding the Box2 I decided to not implement that structure for two reasons.
- It is used only a couple of times, to pass the cell corners to find the intersection points between a laser beam and the current cell.
- Sometimes and depending on the where the cell is located WRO the laser beam origin we need to modify the corners. So I found that it might be confusing to handle the changes with the
Box2
structure. Please consider the following structure definition (Maybe the naming convention is what seems confusing for me):
template<typename T>
struct Box2
{
karto::Vector2<T> bl; // bottom left
karto::Vector2<T> br; // bottom right
karto::Vector2<T> tl; // top left
karto::Vector2<T> tr; // top right
};
I will leave this thread open!
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.
@kmilo7204 hmm, I don't follow why Box2
definition requires coordinates for each corner. Unless It's a four sided polygon, coordinates for two corners along a diagonal should always suffice.
@hidmic Yes performance improved a lot. Prior to this iteration we were calculating the mutual information for 7 scans (At max), now we are processing 19 or 20 scans and obtaining the same time. This is a decent number for this calculations, but I think we can improve it a little bit more. |
…optional return values for some functions Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
…ributes Signed-off-by: Camilo Andres Alvis Bautista <[email protected]>
@kmilo7204 what happened here? How far are we with this? |
Basic info
Information-Theoretic compression of Pose Graphs for Laser-Based SLAM.
Description of contribution in a few bullet points
Future work that may be required in bullet points
Current state