Tarama sırasında cihaz, gerçek zamanlı nokta bulutunu ve pozu kendiliğinden raporlar. Ayrıca RTSP üzerinden kamera video akışı gönderir. Bu sayfada bunların nasıl alınacağı ve çözüleceği açıklanır.
Gerçek zamanlı nokta bulutu
Gerçek zamanlı nokta bulutu, lixel/application/report/lio_pcl konusunda MqttCompressMsg olarak raporlanır. Aktarım boyutunu azaltmak için nokta bulutu verisi sıkıştırılır.
message LioPclReport {
message Point {
sint64 x = 1; // val = raw value * header.scaler
sint64 y = 2; // val = raw value * header.scaler
sint64 z = 3; // val = raw value * header.scaler
uint32 rgbi = 4; // R + G + B + Intensity
}
Header header = 1;
repeated Point points = 2; // point cloud data
}
message MqttCompressMsg {
enum CompressionType {
CompressionLz4 = 0;
CompressionZstd = 1;
}
Header header = 1;
CompressionType compression = 2; // compression type
uint32 compressed_size = 3; // size before compression (serialized LioPclReport size)
bytes compressed_data = 4; // compressed data (compressed serialized LioPclReport)
}
Çözme Adımları
MqttCompressMsg mesajı alındıktan sonra iki adımda açın ve çözün:
MqttCompressMsgmesajını seri durumdan çıkarın vecompression(Lz4 / Zstd) ilecompressed_dataalanlarını alın.compressed_dataverisini sıkıştırma türüne göre açın.CompressionLz4, LZ4 blok biçimidir; LZ4 frame biçimi değildir. Açma işlemi için açılmış veri uzunluğu, yanicompressed_size(sıkıştırma öncesi boyut) gerekir. Python'da:lz4.block.decompress(data, uncompressed_size=compressed_size).lz4.frame.decompresskullanılırsa işlemERROR_frameType_unknownhatasıyla başarısız olur.- Sonucu
LioPclReportolarak seri durumdan çıkarın ve nokta dizisini alın.
Koordinatların yeniden oluşturulması: Cihaz, gerçek koordinatı header.scaler ile çarpar ve sıfıra doğru keser (yuvarlamaz). Ardından değeri sint64 olarak gönderir; yeniden oluşturulan değerdeki hata 1/scaler değerinden küçüktür. Yeniden oluşturmak için iletilen tam sayıyı header.scaler değerine bölün, yani x_real = int(x) / int(header.scaler). Aynısını y ve z için de uygulayın. Cihazın scaler değerini 1000 olarak gönderdiği ölçülmüştür; bu durumda iletilen 2921 tam sayısı 2.921 değerine karşılık gelir. Protobuf JSON eşlemesine göre sint64 değeri sözlükte (dict) dize olur; bu nedenle aritmetik işlemden önce tam sayıya çevirin. Yukarıdaki proto yorumundaki raw value, iletilen tam sayıyı değil gerçek koordinatı ifade eder; yani iletilen tam sayı = gerçek koordinat × header.scaler. Cihaz tarafındaki kod scaler değerini 1000 olarak sabitler; bölmeden önce scaler değerinin 0 olmadığını kontrol edin.
rgbi, 32 bitlik işaretsiz bir tam sayıdır. Yüksek bayttan düşük bayta doğru sırasıyla R, G, B, Intensity değerlerini içerir ve her biri 8 bittir (bu sıra, cihaz tarafındaki paketleme kodu ve proto yorumuna dayanır; gerçek renklerle nokta nokta doğrulanmamıştır).
Not: Açma işlemi için ek bağımlılıklar gerekir. Proje örnek betiklerini kullanırken nokta bulutunu çözmek için
pip install lz4 zstandardkomutuyla bunları kurun. Kurulmazsa betik bir ipucu yazdırır ve bu adımı atlar.python/example/usage/lio_pcl.pyörnek betiği 1.0.1 sürümünden itibaren LZ4 blok açma yöntemini kullanır. 1.0.0 betiği ise frame olarak açıyordu; gerçek bir cihazdan alınan nokta bulutu karelerinin hiçbirini çözemedi ve hiçbir hata da yazdırmadı.
Gerçek zamanlı poz
Gerçek zamanlı poz, lixel/application/report/lio_pose konusunda LioPoseReport olarak raporlanır:
message LioPoseReport {
Header header = 1;
PoseStamped pose = 2;
float distance = 3; // distance (meters)
float pose_accuracy = 4; // not used yet
}
PoseStamped yapısı bir zaman damgasını ve pozu içerir. Poz, bir konumdan (Point) ve bir yönelimden (Quaternion) oluşur:
message PoseStamped {
sint64 stamp = 1;
Pose pose = 2;
}
message Pose {
Point position = 1; // x / y / z
Quaternion orientation = 2; // x / y / z / w
}
RTSP Video Akışı
Cihazda yerleşik bir RTSP sunucusu bulunur. Tarama başarıyla başladıktan sonra cihaz, kamera video akışını gerçek zamanlı olarak gönderir; aynı anda en fazla bir akış gönderilir. URL biçimi:
rtsp://<lixel_device_ipaddr>:8554/live/chn_<camera_name>
Örnekler:
rtsp://192.168.55.1:8554/live/chn_leftrtsp://192.168.55.1:8554/live/chn_right
| Parametre | Açıklama |
|---|---|
lixel_device_ipaddr | Cihaz IP adresi: Kablolu bağlantıda 192.168.55.1 olarak sabittir; kablosuz bağlantıda Bluetooth üzerinden alınır; Hızlı Bağlantı modunda 192.168.56.1 olarak sabittir |
camera_name | Kamera adı, cihaz bilgisi isteğiyle (DeviceInfoResponse.device_info.camera_info.camera_list) alınır. Liste boş dizeler içerebilir (ör. ["left", "", "right"]). Cihaz, ilgili yuvada kamera yoksa veya önizleme etkin değilse boş dize koyar; bu nedenle URL oluştururken bu girdileri atlayın |
Bu bölüm XGRIDS'in resmî kullanım kılavuzundan Türkçeye çevrildi; ekran görüntüleri ve arayüz adları özgün haliyle İngilizcedir. İngilizce aslı (yeni sekmede açılır) · Güncelleme:

