copy
Copy lidar SLAM object
Description
creates a deep copy of newSlamObj = copy(slamObj)slamObj with the same properties.
Any changes made to newSlamObj are not reflected in
slamObj.
Examples
Create a lidarSLAM object.
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
Create a copy of the lidar SLAM object.
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 laser scan data from a file.
load("offlineSlamData.mat");To set up the SLAM algorithm:
Specify the lidar range, map resolution, loop closure threshold, and search radius.
Tune these parameters for your specific robot and environment.
Create the
lidarSLAMobject with these parameters.
maxLidarRange = 8; mapResolution = 20; slamObj = lidarSLAM(mapResolution,maxLidarRange); slamObj.LoopClosureThreshold = 210; slamObj.LoopClosureSearchRadius = 8;
Add scans iteratively to the SLAM object.
for i = 1:numel(scans) addScan(slamObj,scans{i}); end
Create a copy of the SLAM object. Display the underlying pose graph of the SLAM object.
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]
Remove the first two loop closures by specifying their edge IDs.
lcEdgeIDs = slamObj2.PoseGraph.LoopClosureEdgeIDs(1:2); removeLoopClosures(slamObj2,lcEdgeIDs)
Plot the pose graphs of the SLAM object before and after removing the loop closures.
subplot(2,1,1) show(slamObj.PoseGraph); subplot(2,1,2) show(slamObj2.PoseGraph);

Input Arguments
Lidar SLAM object, specified as a lidarSLAM object. The
object contains the SLAM algorithm parameters, sensor data, and underlying
pose graph used to build the map.
Output Arguments
Lidar SLAM object, returned as a lidarSLAM
object.
Extended Capabilities
Use this syntax when constructing lidarSLAM objects for code
generation:
specifies the upper bound on the number of accepted scans allowed when generating
code. slamObj=
lidarSLAM(mapResolution,maxLidarRange,maxNumScans)maxNumScans is a positive integer. This scan limit is only
required when generating code.
Version History
Introduced in 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.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 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)