プロットのアニメーション

21 vues (au cours des 30 derniers jours)
ST
ST le 5 Oct 2021
Commenté : ST le 1 Nov 2021
lidarのストリーミングデータをpcplayer(https://jp.mathworks.com/help/vision/ref/velodynefilereader.html)ではなく、
plot3を用いたアニメーションで表現したいです。
plot3で、3次元座標で構成される複数の点をアニメーションで表現する方法はありますでしょうか。

Réponse acceptée

Atsushi Ueno
Atsushi Ueno le 12 Oct 2021
質問のリンク先例題について、pcplayerをscatter3に置き換えました(plot3だと点群が線で結ばれてしまう為)
私の古いMATLAB環境では動かせず、アニメーションの動作確認はできていませんが、多分動くと思います。
veloReader = velodyneFileReader('lidarData_ConstructionRoad.pcap','HDL32E');
veloReader.CurrentTime = veloReader.StartTime + seconds(0.3);
figure; set(gcf,'color','k'); % figureの背景色
% 最初の10秒間のみ表示する。最後の条件を外せば全ストリームを表示する。
while(hasFrame(veloReader) && (veloReader.CurrentTime < veloReader.StartTime + seconds(10)))
ptCloudObj = readFrame(veloReader);
xx = ptCloudObj.Location(:,:,1); % scatter3がベクトルしか受け付けないのでx成分を取り出す
yy = ptCloudObj.Location(:,:,2); % scatter3がベクトルしか受け付けないのでy成分を取り出す
zz = ptCloudObj.Location(:,:,3); % scatter3がベクトルしか受け付けないのでz成分を取り出す
scatter3(xx(:), yy(:), zz(:), 3, 'b', 'filled');
ax = gca;
ax.Color = 'k'; % プロットの背景色
ax.XColor = 'w'; % x軸の線色(XColorModeは自動)
ax.YColor = 'w'; % y軸の線色(YColorModeは自動)
ax.ZColor = 'w'; % z軸の線色(ZColorModeは自動)
ax.GridColor = 'w'; % グリッドの線色(色モードは全て自動)
xlabel(gca,'X (m)'); % x軸ラベル
ylabel(gca,'Y (m)'); % y軸ラベル
zlabel(gca,'Z (m)'); % z軸ラベル
% xlim([-60 60]); % x軸の範囲設定をしない(自動に任せればオートズームみたいになる)
% ylim([-60 60]); % y軸の範囲設定をしない(自動に任せればオートズームみたいになる)
% zlim([-20 20]); % z軸の範囲設定をしない(自動に任せればオートズームみたいになる)
pause(0.1);
end
問題は点群の見た目が全く違う事です。
何でもlidarのストリーミングデータは、クルクル回っているセンサの座標系で構成されているそうです。
なので、回転角度に応じた座標系変換をしないと正しく表示されないのだそうです。
とりあえずlidarのストリーミングデータをpcplayerではなく、plot3(scatter3)を用いたアニメーションで表現しましたが、座標変換については追って調べて、出来そうだったら追記します。(なんか難しそう...)
  1 commentaire
ST
ST le 1 Nov 2021
ありがとうございます。
参考にさせていただきます。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur LIDAR および点群の処理 dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!