MIT-SPARK/Kimera-Semantics

Is it possible to run Kimera Semantics without ROS?

therishidesai opened this issue · 6 comments

As the title says. I want to be able to run Kimera Semantics without ROS just like Kimera-VIO.

Hi @apache8080, unfortunately right now, kimera_semantics doesn't have a non-ROS interface (we only have the kimera_semantics_ros as an interface). It should be possible to create your own interface using the kimera_semantics library which is ROS agnostic, but we are not planning, at least on the short term, to add a non-ROS interface.

Thanks for the response. The one part I am confused about is where does Kimear Semantics get the pose from. The voxblox node subscirbes to transform so is KimeraVIO-ROS publishing that out?

Also I am guessing the main reason to use ROS is that visualization is easier.

Thanks for the response. The one part I am confused about is where does Kimear Semantics get the pose from. The voxblox node subscirbes to transform so is KimeraVIO-ROS publishing that out?

Yes!

Also I am guessing the main reason to use ROS is that visualization is easier.

Visualization and communication between processes.

Is the topic called transform in Kimera-VIO-ROS? Would you be able to point me to the spot in Kimera-VIO-ROS that publishes this data and where in Kimera-semantics this data gets subscribed?
Thanks for the help.

Hi @apache8080 , I just updated the readme in #44, so that it is easier to run Kimera-Semantics + Kimera-VIO-ROS, see this section.
Answering your question:

Is the topic called transform in Kimera-VIO-ROS? Would you be able to point me to the spot in Kimera-VIO-ROS that publishes this data and where in Kimera-semantics this data gets subscribed?

Basically, Kimera-Semantics looks on the TF tree what is the transformation between world_frame and sensor_frame.
These are parameters in the launch files:

In fact, Kimera-VIO-ROS outputs two TF frames:

  • base_link frame: which is the estimated pose of the IMU frame with respect to the world frame.
  • A static frame published in /tf_static from the estimated base_link frame to the cam0 frame (in case of Euroc) or left_frame (in simulation). Since this tf corresponds to the transformation btw IMU and left camera, it is static (or assumed to be static ofc) and it is taken from the LeftCameraParams.yaml file in Kimera-VIO's params folder OR from the rostopics (e.g. /cam0/camera_info in case of Euroc).

Then, Kimera-Semantics reads the TF tree and figures out the transformation between world_frame (aka world) and sensor_frame (aka cam0).

Hope this helps!