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

Kissualizer: a new KISS-ICP visualizer! #379

Merged
merged 42 commits into from
Aug 6, 2024
Merged

Conversation

l00p3
Copy link
Contributor

@l00p3 l00p3 commented Jul 30, 2024

I want to propose a new visualizer for KISS-ICP. The current visualizer presents some issues in my opinion:

  • No GUI: this reduces a lot the usability, one have to read the keyboard key to press on the terminal in order to move around
  • The previous point become even more problematic because of Open3D warnings that appear sometime
  • Passing from global view to local view (and the other way around) requires to trigger the next frame in order to visualize the changes
  • No possibility to modify point size individually for each cloud visualized
  • No possibility to visualize any other information, because, again, no GUI
  • No flexibility at all in case ones want to introduce new features
  • Copies happening in the code, due to the incompatibility between data structures used

All these cons are there because Open3D is not meant to be used as a general visualizer.

I'll take over here: Kissualizer, a new visualizer using polyscope, a library which purpose is exactly visualize 3D data. Here some pros presented with my visualizer:

  • GUI: we can use graphical buttons, slides and whatever to control our visualization, still maintaining the possibility to use the keyboard (also the possibility to add a visual legend on the screen opens here)
  • No weird warning appearing in the terminal
  • Global/Local views switch is not anymore a problem
  • Point sizes can be modified individually for each cloud
  • Possibility to visualize other information, like FPS, current parameters used and so on
  • Background color change with palette
  • Huge flexibility for the introduction of new features
  • No copy happening in the background, polyscope works with the data structures that you already use

This is just to scratch the surface, with polyscope you can give vent to all your dirtiest graphic fantasies!

Here a demo to show the current implementation that I propose (the frame rate seems pretty low because of the GIF format, try it on your machine!):

KissualizerDemo

Of course I just added some basic features, but this can be really expanded a lot. For now I just want to show you the potential of using a real visualizer. In case you like it I can work on new features, better implementation code side and whatever you want. Also, I used a slighlty different color palette, but this, of course, can be adjusted.
It is time for KISS-ICP to embrace the future!

Here the github page of polyscope in case you need more information. Here the 'pybinded' version.

Oh, this would add only a simple optional dependency python side, a simple pip install polyscope.

@nachovizzo
Copy link
Collaborator

Waaaaaaaaaat 🤤 I dream finally come true 🥹 I always wanted to use the new visualizer and leave the legacy open3d behind

Thanks!!!!!!! I'll check this out as soon as possible

@nachovizzo
Copy link
Collaborator

@benemer , @tizianoGuadagnino

Do we want to keep a legacy visualizer for those who "don't want / can't" install polyscope? I checked the compatibility of polyscope with different platforms/os, and it's on par with our compatibility check, so it shouldn't be a problem. Also, its only binary dependency is numpy.

I vote to kill the old visualizer but just raising this concern here in case someone else have a different opinion

Copy link
Collaborator

@tizianoGuadagnino tizianoGuadagnino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I fix the color palette and point size in such a way that everything is properly visible, if anyone have anything to say, talk now or die forever.

@l00p3
Copy link
Contributor Author

l00p3 commented Aug 2, 2024

Ok, I think now the shape is way better. if you have other requests I am here to satisfy them.

@l00p3
Copy link
Contributor Author

l00p3 commented Aug 2, 2024

Just another feature added: if you are in global view and in PAUSE mode, you can double click on a pose on the trajectory to visualize its position in the global frame. Let me know if you want to keep this feature.
I want to point out the fact that this "click" on object to visualize some related information opens a lot of possibilities if you want. Good to keep in mind.

Copy link
Member

@benemer benemer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, I love it! Thanks for all the effort ❤️

@l00p3 l00p3 merged commit f27ced4 into PRBonn:main Aug 6, 2024
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants