プロットのアニメーション
25 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
plot3を用いたアニメーションで表現したいです。
plot3で、3次元座標で構成される複数の点をアニメーションで表現する方法はありますでしょうか。
0 Commenti
Risposta accettata
Atsushi Ueno
il 12 Ott 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)を用いたアニメーションで表現しましたが、座標変換については追って調べて、出来そうだったら追記します。(なんか難しそう...)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su LIDAR および点群の処理 in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!