copy
LiDAR SLAM オブジェクトをコピー
説明
は、newSlamObj
= copy(slamObj
)slamObj
のディープ コピーを同じプロパティで作成します。newSlamObj
に加えられた変更は、いずれも slamObj
には反映されません。
例
lidarSLAM
オブジェクトを作成します。
slamObj = lidarSLAM
slamObj = lidarSLAM with properties: PoseGraph: [1×1 poseGraph] MapResolution: 20 MaxLidarRange: 8 OptimizationFcn: @optimizePoseGraph LoopClosureThreshold: 100 LoopClosureSearchRadius: 8 LoopClosureMaxAttempts: 1 LoopClosureAutoRollback: 1 OptimizationInterval: 1 MovementThreshold: [0 0] ScanRegistrationMethod: 'BranchAndBound' TranslationSearchRange: [4 4] RotationSearchRange: 1.5708
LiDAR SLAM オブジェクトのコピーを作成します。
slamObjNew = copy(slamObj)
slamObjNew = lidarSLAM with properties: PoseGraph: [1×1 poseGraph] MapResolution: 20 MaxLidarRange: 8 OptimizationFcn: @optimizePoseGraph LoopClosureThreshold: 100 LoopClosureSearchRadius: 8 LoopClosureMaxAttempts: 1 LoopClosureAutoRollback: 1 OptimizationInterval: 1 MovementThreshold: [0 0] ScanRegistrationMethod: 'BranchAndBound' TranslationSearchRange: [4 4] RotationSearchRange: 1.5708
ファイルからレーザー スキャン データを読み込みます。
load("offlineSlamData.mat");
SLAM アルゴリズムを設定するには、以下のようにします。
LiDAR の範囲、マップの分解能、ループ閉じ込みのしきい値および探索半径を指定します。
これらのパラメーターを、実際のロボットと環境に合わせて調整します。
次のパラメーターを指定して
lidarSLAM
オブジェクトを作成します。
maxLidarRange = 8; mapResolution = 20; slamObj = lidarSLAM(mapResolution,maxLidarRange); slamObj.LoopClosureThreshold = 210; slamObj.LoopClosureSearchRadius = 8;
SLAM オブジェクトにスキャンを反復的に追加します。
for i = 1:numel(scans) addScan(slamObj,scans{i}); end
SLAM オブジェクトのコピーを作成します。SLAM オブジェクトの基となる姿勢グラフを表示します。
slamObj2 = copy(slamObj); slamObj2.PoseGraph
ans = poseGraph with properties: NumNodes: 71 NumEdges: 83 NumLoopClosureEdges: 13 LoopClosureEdgeIDs: [31 36 63 65 67 69 71 73 75 77 79 81 83] LandmarkNodeIDs: [1×0 double]
エッジ ID を指定して最初の 2 つのループ閉じ込みを削除します。
lcEdgeIDs = slamObj2.PoseGraph.LoopClosureEdgeIDs(1:2); removeLoopClosures(slamObj2,lcEdgeIDs)
ループ閉じ込みを削除する前と削除した後に、SLAM オブジェクトの姿勢グラフをプロットします。
subplot(2,1,1) show(slamObj.PoseGraph); subplot(2,1,2) show(slamObj2.PoseGraph);
入力引数
LIDAR SLAM オブジェクト。lidarSLAM
オブジェクトとして指定します。このオブジェクトには、マップの作成に使用される、SLAM アルゴリズム パラメーター、センサー データ、基となる姿勢グラフが格納されています。
出力引数
LIDAR SLAM オブジェクト。lidarSLAM
オブジェクトとして返されます。
拡張機能
コード生成用の lidarSLAM
オブジェクトを作成するときには、次の構文を使用します。
は、コード生成時に受け入れ可能なスキャン数の上限を指定します。slamObj= lidarSLAM(mapResolution,maxLidarRange,maxNumScans)
maxNumScans
は正の整数です。このスキャンの上限は、コード生成時にのみ必要です。
バージョン履歴
R2019b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)