Opportunities
- Release Xavia
- Cosain project
- Satellite partnership
- Extend Ctrack
Extending CTrack
ChatGPT - Kitware LiDAR libraries
Got it—nice context. Short answer: yes, you can wire XenomatiX’ new XenoLidar Xavia into your existing MFC/C++ + OpenCascade stack, and Kitware’s tooling can help for very large clouds (either directly via VTK/ParaView or through LidarView). Xavia ships with a Windows x64 C++ SDK that streams data over Ethernet (plus a camera SDK for the co-mounted camera), so you don’t need ROS to get going. xenomatix.com+1
Here’s a concrete, C++-centric integration plan that plays nicely with your 6-DOF tracking workflows:
1) Bring-up & ingestion
Use Xavia SDK (Win x64) to: start/stop the sensor, subscribe to real-time point-cloud frames (+ timestamps/intensity), and optionally the synchronized camera frames. Keep the raw packets in a lock-free ring buffer; decode on a worker thread. xenomatix.com+1
For quick validation & recording, test the sensor with Kitware LidarView (built on ParaView) which handles multi-sensor, large data capture/visualization well—handy for “golden” pcap/log files and sanity checks. LidarView
2) Data model & visualization
VTK path (Kitware): convert each frame to vtkPolyData and render via VTK; this scales better for very big clouds and lets you reuse ParaView/LidarView filters when needed.
OpenCascade path: if you want to stay inside your existing OCC viewer, push subsampled point sets into AIS_PointCloud/custom AIS object for overlays; keep heavy visualization in VTK when clouds get huge.
3) Coordinate frames & timing
Define LiDAR frame → tracker/world frame transforms. Calibrate a rigid T_lidar→world using a simple target (checkerboard/plane) or ICP to a known scene patch.
Use Xavia’s timestamps; if you combine with other trackers (photogrammetry/laser tracker), set up PTP/NTP or soft-sync and keep per-frame metadata (Δt, pose used, etc.).
4) 6-DOF tracking from LiDAR
Depending on the target you track:
Model-to-cloud alignment: sample target CAD (OpenCascade) to points/normals and run point-to-plane ICP / GICP / NDT on a cropped LiDAR ROI. PCL/Open3D both have solid C++ ICP; VTK also has algorithms.
Marker-based: if you can place retroreflectors, exploit Xavia’s intensity + geometry for robust centroiding and PnP/rigid fit.
Surface tracking: maintain a sliding map (keyframes) and do frame-to-model odometry, then smooth with a small pose-graph (Ceres).
5) Performance for large clouds
Downsample early (voxel grid) and crop aggressively around ROIs. Keep a multi-res pyramid: full-res for storage, decimated for ICP/UI.
Build GPU code paths for nearest-neighbor/ICP if needed (Open3D/Cupoch), but first try multi-threaded CPU (TBB/OpenMP) with tight ROIing.
For offline jobs, consider PDAL + tiled formats; for live, keep everything streaming, chunked, and recyclable.
6) Recording & playback
Record raw SDK streams plus your computed poses. Provide a deterministic replay mode (time-correct seek) to reproduce tracking bugs. LidarView can also record/play if you prefer a turnkey path. LidarView
7) Why Kitware in this stack
LidarView/ParaView/VTK are proven on very large point clouds and can act as your heavy-duty viewer/recorder or as a library layer. You can even prototype a Xavia reader/plugin for LidarView if you want analyst workflows alongside your MFC app. LidarView
If you’d like, I can sketch a minimal MFC/C++ module layout (DLL) that wraps the Xavia SDK (capture thread, decoder, ring buffer, VTK/OCC publishers) and a simple ICP-to-CAD pipeline for 6-DOF output—drop-in ready for your app.
Refs (public details on Xavia & tooling): Xavia launch/spec pages (SDK on Win x64 with C++ examples and Ethernet streaming; camera SDK & sync), plus Kitware LidarView overview.