@teddy-zaremba Thanks for the information.
I am working with George on the same project. We’ve installed the required packages, and voxl-mapper is working properly in the VOXL Portal. We can also see the /voxl_mapper_aligned_ptcloud topic available in ROS 2. However, we have a few questions and would really appreciate your guidance.
- Is /voxl_mapper_aligned_ptcloud the accumulated 3D map of the environment? If so, we assume this topic contains the fused and globally aligned point cloud (not just live frame-by-frame sensor data).
- If the answer to (1) is yes, can we use ros2 bag record to save this map and later visualize it in RViz? Specifically:
- Will the recorded data still reflect the accumulated map, or will it only include a stream of point clouds per frame?
- What are the best practices to record and visualize the full map offline?
- RViz does not recognize any transformation (TF) tree, which causes issues in data visualization. We understand we need to publish appropriate transforms to view data correctly in RViz. Here are our observations and questions:
a. /voxl_mapper_aligned_ptcloud uses frame_id: "world" — but this world frame comes from VOXL and is not part of our RViz TF tree.
When we visualize this point cloud in RViz, we have to run:
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 map world
This lets us see the point cloud, but only as a live stream — not the full accumulated map.
We’re trying to build the following TF chain to resolve this:
NED → map (static)
map → odom (static or dynamic)
odom → base_link (dynamic, from QVIO)
base_link → tof (static) or voxl_mapper_aligned_ptcloud
tof or voxl_mapper_aligned_ptcloud → world (static)
For each of these we take the extrinsic information that we have to find the translation and orientation of these coordinate systems.
Does this seem correct for enabling RViz to visualize the accumulated map properly?
b. Even for /tof_pc, we also need to publish a static transform like:
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 map world
to view data in RViz. But again, this only gives us frame-by-frame output. Should we instead define a more complete set of transforms from base_link to world?
c. We’re currently unable to display QVIO odometry data in RViz to track the drone’s path.
VOXL publishes QVIO data on /qvio in two message types: nav_msgs/Odometry and geometry_msgs/PoseStamped. However, neither of these messages includes a valid frame_id, which prevents RViz from interpreting the data.
- What frame_id should we assign to these messages?
- What transforms should we publish so that we can correctly display odometry and the drone's trajectory in RViz?
We would be very thankful for your help.
Thanks,
Roya