copy
説明
は、newSlamObj
= copy(slamObj
)slamObj
のディープ コピーを同じプロパティで作成します。newSlamObj
に加えられた変更は、いずれも slamObj
には反映されません。
例
LIDAR SLAM のコピーの作成
lidarSLAM
オブジェクトを作成します。
slamObj = lidarSLAM
slamObj = lidarSLAM with properties: PoseGraph: [1x1 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: [1x1 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 オブジェクトでの姿勢グラフからのループ閉じ込みの削除
ファイルからレーザー スキャン データを読み込みます。
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: [1x0 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);
入力引数
slamObj
— LIDAR SLAM オブジェクト
lidarSLAM
オブジェクト
LIDAR SLAM オブジェクト。lidarSLAM
オブジェクトとして指定します。このオブジェクトには、マップの作成に使用される、SLAM アルゴリズム パラメーター、センサー データ、基となる姿勢グラフが格納されています。
出力引数
newSlamObj
— LIDAR SLAM オブジェクト
lidarSLAM
オブジェクト
LIDAR SLAM オブジェクト。lidarSLAM
オブジェクトとして返されます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
コード生成用の lidarSLAM
オブジェクトを作成するときには、次の構文を使用します。
は、コード生成時に受け入れ可能なスキャン数の上限を指定します。slamObj= lidarSLAM(mapResolution,maxLidarRange,maxNumScans)
maxNumScans
は正の整数です。このスキャンの上限は、コード生成時にのみ必要です。
バージョン履歴
R2019b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)