atlasrrt.c File Reference IntroductionImplementation of the AtlasRRT functions.
Definition in file atlasrrt.c.
Macro Definition Documentation◆ ADD_ALL
Adds all nodes generated in the branch extension. Definition at line 32 of file atlasrrt.c. ◆ ADD_ALL_NO_REP
Adds all nodes generated in the branch extension, but avoiding repetitions. Definition at line 40 of file atlasrrt.c. ◆ ADD_LAST
Adds anly the last generated node during the branch extension. Definition at line 47 of file atlasrrt.c. ◆ ADD_LAST_NO_REP
Adds anly the last generated node during the branch extension if it is not already in the tree. Definition at line 55 of file atlasrrt.c. ◆ ADD_CHART_AND_LAST_NO_REP
Adds the last generated node during the branch extension and all the samples where a chart is generated. In all cases repetitions are avoided. Definition at line 64 of file atlasrrt.c. ◆ ADD_NONE
Do not add any node during the branch extension. Definition at line 71 of file atlasrrt.c. ◆ EXTEND_RRT
Extends a AtlasRRT towards a random sample. All the generated samples are added to the RRT. Definition at line 84 of file atlasrrt.c. ◆ CONNECT_RRTs
Extends a AtlasRRT towards a node already in a RRT (i.e., tries to connect a the two RRTs in a bi-directinal RRT). All the generated samples are added to the RRT. Definition at line 94 of file atlasrrt.c. ◆ CONNECT_SAMPLES
Checks if it is possible to connect two samples on the manifold. Definition at line 101 of file atlasrrt.c. ◆ CONNECT_SAFE
Checks if it is possible to connect two samples on the manifold but without checking for collisions (the connection is already known to be collision free). Definition at line 110 of file atlasrrt.c. ◆ SIMULATE_DYNAMICS
Simulates the effects of a particular action taking into account dynamics. Definition at line 117 of file atlasrrt.c. ◆ EXTEND_RRT_DYNAMICS
Simulates the effects of a particular action taking into account dynamics. This is used when extending an RRT towards a random sample. Definition at line 125 of file atlasrrt.c. ◆ CONNECT_RRT_DYNAMICS
Simulates the effects of a particular action taking into account dynamics. This is used when extending an RRT towards a point already in the RRT (i.e., when trying to connect trees) Definition at line 134 of file atlasrrt.c. ◆ NO_BLOCKED
The blocked state is defined as a bit-wise and of different possible reasons to stop the branch extension. The branch is not blocked so far. Definition at line 148 of file atlasrrt.c. ◆ NO_DIR
The branch is blocked because we can not determine a clear advance direction (the x_rand projects too close to x_near). Definition at line 156 of file atlasrrt.c. ◆ NO_POLICY
The branch is blocked because we can not determine a LQR policy. Definition at line 163 of file atlasrrt.c. ◆ NO_REPLAY
The branch is blocked because we do not have more data to replay a previous branch extension. Definition at line 170 of file atlasrrt.c. ◆ SINGULARITY
The branch is blocked because we reached a singular region (a region where we can not define charts). Definition at line 178 of file atlasrrt.c. ◆ REPEATED_SAMPLE
The branch is blocked because we repeated a point in the RRT. Definition at line 185 of file atlasrrt.c. ◆ THE_IMPOSSIBLE
The branch is blocked because the impossible happened. We have several imposible situations that may appear due to (numerical) errors. For instance, we must always be able to create a new chart close enough to a previous chart. If this is not true, the impossible happened. Typically an error is triggered in this cases. Definition at line 196 of file atlasrrt.c. ◆ REVISITED_CHART
The branch is blocked because the branch entered in a previously created chart and the current branch extension configuration prevends this to happen. This is typically used to avoid branch crossing in kinematic planning. Definition at line 205 of file atlasrrt.c. ◆ REPEATED_CHART
The branch is blocked because the branch entered in a chart already visited along the branch and the current branch extension configuration prevends this to happen. This is typically used to avoid branch crossing in kinematic planning. Definition at line 214 of file atlasrrt.c. ◆ TRANSITION_TEST_FAILS
The branch is blocked because a transition test failed. Definition at line 221 of file atlasrrt.c. ◆ TOO_FAR
The branch is blocked because it is already too far from the origin. Definition at line 228 of file atlasrrt.c. ◆ TOO_LONG
The branch is blocked because it is already too long. Definition at line 235 of file atlasrrt.c. ◆ COLLISION
The branch is blocked because a collision is detected. Definition at line 242 of file atlasrrt.c. ◆ NOT_IN_DOMAIN
The branch is blocked because the branch reaches the limit of the domain. Definition at line 249 of file atlasrrt.c. ◆ DYNAMIC_ERROR
The branch is blocked because there is an error in a dynamic-related computation. Definition at line 256 of file atlasrrt.c. ◆ MAX_INT_TIME
The branch is blocked because we reached the maximum integration time. Definition at line 263 of file atlasrrt.c. ◆ MAX_OPT_TIME
The branch is blocked because the LQR optimal policy would take too long to reach the goal. Definition at line 270 of file atlasrrt.c. Function Documentation◆ InitBranchConfig()
Initializes a branch configuration with one of the predefined pre-sets. Note that the particular algorithms may use one of the pre-sets and then adjust several of the fields at its convenience.
Definition at line 2586 of file atlasrrt.c. References ADD_ALL, ADD_LAST, ADD_NONE, TAtlasRRTBranchConfig::addMode, TAtlasRRTBranchConfig::chartAddMode, TAtlasRRTBranchConfig::checkCollisions, CONNECT_RRT_DYNAMICS, CONNECT_RRTs, CONNECT_SAFE, CONNECT_SAMPLES, TAtlasRRTBranchConfig::costData, TAtlasRRTBranchConfig::costF, TAtlasRRTBranchConfig::currentMaxIntTime, TAtlasRRTBranchConfig::dynamics, Error(), TAtlasRRTBranchConfig::explorationSample, EXTEND_RRT, EXTEND_RRT_DYNAMICS, FALSE, INF, TAtlasRRTBranchConfig::maxIntTime, TAtlasRRTBranchConfig::maxLength, TAtlasRRTBranchConfig::maxTopt, TAtlasRRTBranchConfig::onManifold, TAtlasRRTBranchConfig::randLQRAction, REPEAT_CHARTS, TAtlasRRTBranchConfig::repeatCharts, REVISIT_CHARTS, TAtlasRRTBranchConfig::revisitCharts, SATURATE_ACTIONS, SIMULATE_DYNAMICS, TAtlasRRTBranchConfig::tLastLinearization, TAtlasRRTBranchConfig::topt, and TRUE. Referenced by AddStepToAtlasRRTstar(), AtlasBiRRTstar(), AtlasRRT(), AtlasRRTSimulate(), AtlasTRRT(), ReconstructAtlasRRTPath(), ReWireAtlasRRTstar(), SmoothPathInAtlasRRT(), Steps2PathinAtlasRRT(), and WireAtlasRRTstar(). ◆ InitBranchState()
Sets the values of the state structure to start a branch creation.
Definition at line 2403 of file atlasrrt.c. References TAtlasRRTBranchState::blocked, TSampleInfo::c, TAtlasRRTBranchState::chartInAtlas, CopyID(), TAtlasRRTBranchState::cost, CT_DELTA, CT_EPSILON, TAtlasRRTBranchState::delta, TAtlasRRTBranchState::deltaParam, TAtlasRRTBranchState::desiredLength, Tatlasrrt::dge, DistanceTopology(), TAtlasRRTBranchState::distGoal, TAtlasRRTBranchState::distOrigin, TAtlasRRTBranchState::distQrand, Tatlasrrt::dynamics, FALSE, GetParameter(), GetRRTNodeTree(), TAtlasRRTBranchState::h, TSampleInfo::id, INF, InitVector(), TAtlasRRTBranchState::intTime, Tatlasrrt::k, TAtlasRRTBranchState::lastID, TAtlasRRTBranchState::length, Tatlasrrt::m, TAtlasRRTBranchState::maxDistOrigin, TAtlasRRTBranchConfig::maxLength, TAtlasRRTBranchState::maxLength, TAtlasRRTBranchState::nCreatedCharts, NEW, NewVectorElement(), NO_BLOCKED, TAtlasRRTBranchConfig::onManifold, TAtlasRRTBranchState::reachedGoal, TAtlasRRTBranchState::reachedQrand, TAtlasRRTBranchState::reachedTmpQrand, Tatlasrrt::rrt, TSampleInfo::s, TAtlasRRTBranchState::stepLength, Tatlasrrt::tp, TAtlasRRTBranchState::traversedCharts, TAtlasRRTBranchState::tree, TRUE, TAtlasRRTBranchState::validChart, WeightedDistanceTopology(), and Tatlasrrt::weights. Referenced by AddBranchToAtlasRRT(). ◆ canContinueBranch()
Tests if the branch can be further extended.
Definition at line 2576 of file atlasrrt.c. References TAtlasRRTBranchState::blocked, NO_BLOCKED, TAtlasRRTBranchState::reachedGoal, TAtlasRRTBranchState::reachedQrand, and TAtlasRRTBranchState::reachedTmpQrand. Referenced by AddBranchToAtlasRRT(). ◆ PrintBranchBlockedState()
Prints the reason to stop a branch extension. If the branch is not blocked, nothing is printed.
Definition at line 2525 of file atlasrrt.c. References TAtlasRRTBranchState::blocked, COLLISION, TAtlasRRTBranchConfig::currentMaxIntTime, DYNAMIC_ERROR, TAtlasRRTBranchState::intTime, MAX_INT_TIME, MAX_OPT_TIME, NO_DIR, NO_POLICY, NO_REPLAY, NOT_IN_DOMAIN, TAtlasRRTBranchState::reachedGoal, TAtlasRRTBranchState::reachedQrand, TAtlasRRTBranchState::reachedTmpQrand, REPEATED_CHART, REPEATED_SAMPLE, REVISITED_CHART, SINGULARITY, THE_IMPOSSIBLE, TOO_FAR, TOO_LONG, and TRANSITION_TEST_FAILS. Referenced by AddBranchToAtlasDynamicRRT(), and AddBranchToAtlasRRT(). ◆ DeleteBranchState()
Releases the memory allocated by InitBranchState but keeps all the information flags.
Definition at line 2568 of file atlasrrt.c. References TAtlasRRTBranchState::c, TAtlasRRTBranchState::chartInAtlas, DeleteChart(), DeleteVector(), TAtlasRRTBranchState::deltaParam, and TAtlasRRTBranchState::traversedCharts. Referenced by AddBranchToAtlasRRT(). ◆ InitDynamicBranches()
Allocates space for the generation of dynamic branches (one for each possible action). Such branches are simulated when extending RRTs on problems with dynamic constraints.
Definition at line 3552 of file atlasrrt.c. References TDynamicBranches::action, TDynamicBranches::costReplay, Tatlasrrt::da, TDynamicBranches::dAction, InitSampleInfo(), Tatlasrrt::k, Tatlasrrt::m, Tatlasrrt::nda, NEW, TDynamicBranches::newChartReplay, TDynamicBranches::nsReplay, TDynamicBranches::qrandb, TDynamicBranches::sample, TDynamicBranches::state, TDynamicBranches::statesReplay, TDynamicBranches::timeReplay, and TDynamicBranches::tr. Referenced by AtlasRRT(). ◆ DeleteDynamicBranches()
Releases the memory allocated wiht InitDynamicBranches.
Definition at line 3596 of file atlasrrt.c. References TDynamicBranches::action, TDynamicBranches::costReplay, TDynamicBranches::dAction, DeleteSampleInfo(), Tatlasrrt::nda, TDynamicBranches::newChartReplay, TDynamicBranches::nsReplay, TDynamicBranches::qrandb, TDynamicBranches::sample, TDynamicBranches::state, TDynamicBranches::statesReplay, TDynamicBranches::timeReplay, and TDynamicBranches::tr. Referenced by AtlasRRT(). ◆ InitSampleInfo()
Allocates space for a parametrized point.
Definition at line 2728 of file atlasrrt.c. References TSampleInfo::c, TSampleInfo::generateChart, TSampleInfo::id, TSampleInfo::lsc, NEW, NO_UINT, TSampleInfo::pc, TSampleInfo::s, and TSampleInfo::t. Referenced by AddBranchToAtlasRRT(), and InitDynamicBranches(). ◆ SetSampleInfo()
Copy constructor.
Definition at line 2739 of file atlasrrt.c. References TSampleInfo::c, TSampleInfo::generateChart, TSampleInfo::id, TSampleInfo::lsc, TSampleInfo::pc, TSampleInfo::s, and TSampleInfo::t. Referenced by AddBranchToAtlasRRT(), AddChart2AtlasRRT(), and SetSampleInfoFromNode(). ◆ SetSampleInfoFromNode()
Copies the informaion of an AtlasRRT node. Note that this does not allocate space.
Definition at line 2751 of file atlasrrt.c. References Tatlasrrt::k, Tatlasrrt::m, SetSampleInfo(), and Tatlasrrt::si. Referenced by AddBranchToAtlasRRT(). ◆ DeleteSampleInfo()
Destructor.
Definition at line 2756 of file atlasrrt.c. References TSampleInfo::s, and TSampleInfo::t. Referenced by AddBranchToAtlasRRT(), and DeleteDynamicBranches(). ◆ NewAtlasRRTBranch()
To be called every time we start a new atlasRRT branch. In the context of RRT* this must be interpreted as the number of possible edges (number of sample pairs whose connections is attempted).
Definition at line 1159 of file atlasrrt.c. References TAtlasRRTStatistics::nBranch. Referenced by AtlasRRT(), and WireAtlasRRTstar(). ◆ NewAtlasRRTDynamicExtension()
To be called every time we start a new extension to an atlasRRT branch.
Definition at line 1164 of file atlasrrt.c. References TAtlasRRTStatistics::nDynamicExtension. Referenced by AddBranchToAtlasDynamicRRT(). ◆ NewAtlasRRTImprovedDynamicExtension()
To be called every time a dynamic extension gets closer to the random sample (distance from the end of the branch to x_rand is smaller than the distance from x_near to x_rand).
Definition at line 1169 of file atlasrrt.c. References TAtlasRRTStatistics::nImprovedDynamicExtension. Referenced by AddBranchToAtlasDynamicRRT(). ◆ NewAtlasRRTNoEmptyBranch()
To be called every time we managed to add a non-emtpy branch to the AtlasRRT. In the context of RRT* this must be interpreted as the number of edges (number of sample pairs whose connections is valid).
Definition at line 1174 of file atlasrrt.c. References TAtlasRRTStatistics::nNoEmptyBranch. Referenced by AtlasRRT(), and WireAtlasRRTstar(). ◆ NewAtlasRRTTreeConnection()
New attempt to connect the two trees. This is only updated in bi-directional Atlas RRTs.
Definition at line 1179 of file atlasrrt.c. References TAtlasRRTStatistics::nTreeConnection. Referenced by AtlasRRT(). ◆ NewAtlasRRTNoEmptyTreeConnection()
New attempt to connect the two trees that resulted in a non empty branch. This is only updated in bi-directional Atlas RRTs.
Definition at line 1184 of file atlasrrt.c. References TAtlasRRTStatistics::nNoEmptyTreeConnection. Referenced by AtlasRRT(). ◆ NewAtlasRRTDistanceQrand()
New distance from x_rand to the tree. These distances are accumulated and then we compute the average using the number of attempts for branch extension.
Definition at line 1189 of file atlasrrt.c. References TAtlasRRTStatistics::dQrand. Referenced by AtlasRRT(). ◆ NewAtlasRRTStep()
To be called everytime we add a new step to a branch.
Definition at line 1194 of file atlasrrt.c. References TAtlasRRTStatistics::nStep. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTNoConvergentStep()
To be called when we create a new chart due to convergence issues in the current chart.
Definition at line 1199 of file atlasrrt.c. References TAtlasRRTStatistics::nNoConvergent. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTQrandReached()
To be called every time the random sample is reached.
Definition at line 1204 of file atlasrrt.c. References TAtlasRRTStatistics::dQrandReached, and TAtlasRRTStatistics::nQrandReached. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTNotInDomain()
To be called everty time a branch is stopped since it leaves the given domain.
Definition at line 1213 of file atlasrrt.c. References TAtlasRRTStatistics::nNotInDomain. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTCollision()
To be called every time a branch extension is stopped due to a collision.
Definition at line 1218 of file atlasrrt.c. References TAtlasRRTStatistics::nCollision. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTTooLong()
To be called every time a branch extension is stopped because the branch is already too long.
Definition at line 1223 of file atlasrrt.c. References TAtlasRRTStatistics::nTooLong. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTNoAdvanceDirection()
The advance direction can not be determined (the projection is too close to current sample).
Definition at line 1228 of file atlasrrt.c. References TAtlasRRTStatistics::nNoDir. Referenced by AddBranchToAtlasRRT(), and NewTemptativeSample(). ◆ NewAtlasRRTNoLQRPolicy()
The LQR policy can not be computed safely
Definition at line 1233 of file atlasrrt.c. References TAtlasRRTStatistics::nNoPolicy. Referenced by UpdateLQRPolicy(). ◆ NewAtlasRRTLQRToptIncreases()
The LQR policy is not applied since the optimal time increases.
Definition at line 1238 of file atlasrrt.c. References TAtlasRRTStatistics::nToptIncrements. Referenced by UpdateLQRPolicy(). ◆ NewAtlasRRTImpossible()
An impossible situation is detected.
Definition at line 1243 of file atlasrrt.c. References TAtlasRRTStatistics::nImpossible. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTNoReplay()
A replay branch is stopped due to lack of data.
Definition at line 1248 of file atlasrrt.c. References TAtlasRRTStatistics::nNoReplay. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTTooFar()
To be called every time a branch extension is stopped because the brach is scaping the ball defined with x_near, x_rand.
Definition at line 1253 of file atlasrrt.c. References TAtlasRRTStatistics::nTooFar. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTRevisitedChart()
To be called every time a branch extension is stopped to avoid revisiting a previously existing chart.
Definition at line 1258 of file atlasrrt.c. References TAtlasRRTStatistics::nRevisitedChart. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTRepeatedChart()
To be called every time a branch extension is stopped to avoid re-entering a chart already visited along the branch (aka repated chart).
Definition at line 1263 of file atlasrrt.c. References TAtlasRRTStatistics::nRepeatedChart. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTChartBlocked()
To be called every time a branch extension is stopped after creating a chart. This typically happens when the projection of the random sample in the new chart is not giving a clear direction to advance (it is on the center of the new chart).
Definition at line 1268 of file atlasrrt.c. References TAtlasRRTStatistics::nChartBlocked. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTIntTimeReached()
To be called every time a branch extension is stopped when the integration time is reached.
Definition at line 1273 of file atlasrrt.c. References TAtlasRRTStatistics::nIntTimeReached. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTNoAction()
To be called every time a branch extension is stopped when there is no valid action to keep on growing the branch. This may potentially happen when using the time2go metric.
Definition at line 1278 of file atlasrrt.c. References TAtlasRRTStatistics::nNoAction. Referenced by AddBranchToAtlasDynamicRRT(). ◆ NewAtlasRRTLQRPolicy()
To be called every time compute the action to execute from a policy computed using LQR.
Definition at line 1283 of file atlasrrt.c. References TAtlasRRTStatistics::nLQRPolicy, and TAtlasRRTStatistics::satAction. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTLQRinput()
Collects statistics on whether or not the LQR actions are saturated. If so, the action cost (parameter TAU) must be increased.
◆ NewAtlasRRTLQRComputePolicy()
Collects statistic on the value of the optimal time resulting from calling LQRComputePolicy.
Definition at line 1292 of file atlasrrt.c. References TAtlasRRTStatistics::nLQRComputePolicy, and TAtlasRRTStatistics::topt. Referenced by UpdateLQRPolicy(). ◆ NewAtlasRRTBroyden()
For debugging purposes, se collect statistics on the number of iterations of the Broyden process. In this way we can compare different methods to compute the gradient (via nJacobian, via HandC, etc).
Definition at line 1301 of file atlasrrt.c. References TAtlasRRTStatistics::itB, and TAtlasRRTStatistics::nB. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTTransTestFail()
To be called every time the transition test fails and the branch extension is stopped.
Definition at line 1310 of file atlasrrt.c. References TAtlasRRTStatistics::nTransTestFailed. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTDynamicError()
To be called every time there is an error in the dynamics compuations.
Definition at line 1315 of file atlasrrt.c. References TAtlasRRTStatistics::nDynamicErrors. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTInitChartError()
To be called every time the attempt to create a chart fails. This triggers the creation of a new chart in the precedent sample (where the chart was successfully created before).
Definition at line 1325 of file atlasrrt.c. References TAtlasRRTStatistics::nErrorNewChart. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTOutOfChart()
To be called every time we create a new chart since a node reached the border of the current chart (i.e., it leaves the ball defining the maximum chart validity area).
Definition at line 1320 of file atlasrrt.c. References TAtlasRRTStatistics::nOutOfChart. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTLargeCurvature()
Called when there is a large curvature along a branch, and thus, a new chart has to be created. In this case the new chart has too large curvature error with respect to the current chart.
Definition at line 1330 of file atlasrrt.c. References TAtlasRRTStatistics::nLargeCurvature. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTDirLargeCurvature()
Called every time we create a new chart as it is the a cheap test that do not require the creation of temporary chart
Definition at line 1335 of file atlasrrt.c. References TAtlasRRTStatistics::nDirLargeCurvature. Referenced by NewTemptativeSample(). ◆ NewAtlasRRTStepReduction()
To be called everytime we have to reduce the default size between two nodes on a atlasRRT branch to be able to generate a valid new node. The default step size is given by the DELTA parameter.
Definition at line 1340 of file atlasrrt.c. References TAtlasRRTStatistics::nStepReduction. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTSample()
To be called every time we actually add a node (or sample) to the atlasRRT.
Definition at line 1345 of file atlasrrt.c. References TAtlasRRTStatistics::nSample. Referenced by AddBranchToAtlasRRT(), AtlasBiRRTstar(), AtlasRRT(), AtlasRRTstar(), and AtlasTRRT(). ◆ NewAtlasRRTRepeatedSample()
To be called every time an RRT extension end up in repeated sample
Definition at line 1350 of file atlasrrt.c. References TAtlasRRTStatistics::nRepeatedSample. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTChart()
To be called every time we actualy add a chart to the atlasRRT.
Definition at line 1355 of file atlasrrt.c. References TAtlasRRTStatistics::nChart. Referenced by AddBranchToAtlasRRT(), AtlasBiRRTstar(), AtlasRRT(), AtlasRRTstar(), and AtlasTRRT(). ◆ NewAtlasRRTNoConnectToParent()
When creating a new chart it should intersect with its parent chart. If this does not happen we have to record it.
Definition at line 1360 of file atlasrrt.c. References TAtlasRRTStatistics::nNoConnect. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTBlockBySingularity()
Number of times we try to create a char at a singular regions. Note that singularities are zero volume areas but due to the numerical tolerances they have some thickness and, thus,the probability of having points on this almost singular regions is not null. A point on a singularity blocks the extension of branches. If the number of times this happens is large, we could fail to solve a problem because we can not cross singular regions. A typical solution is to decrease parameter 'epsilon'.
Definition at line 1365 of file atlasrrt.c. References TAtlasRRTStatistics::nSingular. Referenced by AddBranchToAtlasRRT(). ◆ NewAtlasRRTRandomSample()
Counts the number of random samples generated.
Definition at line 1370 of file atlasrrt.c. References TAtlasRRTStatistics::nRandom. Referenced by AtlasRRTSample(). ◆ NewAtlasRRTSampleRejection1()
Counts the number os random samples rejected. In particular the ones rejected directly at the generation process.
Definition at line 1375 of file atlasrrt.c. References TAtlasRRTStatistics::nRejections1. Referenced by AtlasRRTSample(). ◆ NewAtlasRRTSampleRejection2()
Counts the number os random samples rejected. In particular the ones rejected after the generation process (dynamic domain and alike).
Definition at line 1380 of file atlasrrt.c. References TAtlasRRTStatistics::nRejections2. Referenced by AtlasRRTValidateSample(). ◆ NewAtlasRRTSampleRejection3()
Counts the number os random samples rejected. In particular the ones rejected because blocked nodes. This is a subset of those counted by NewAtlasRRTSampleRejection2.
Definition at line 1385 of file atlasrrt.c. References TAtlasRRTStatistics::nRejections3. Referenced by AtlasRRTValidateSample(). ◆ NewAtlasRRTSampleRejection4()
Counts the number os random samples rejected. In particular the ones rejected because the dynamic cone is not well oriented with the radom sample. This is a subset of those counted by NewAtlasRRTSampleRejection2.
Definition at line 1390 of file atlasrrt.c. References TAtlasRRTStatistics::nRejections4. Referenced by AtlasRRTValidateSample(). ◆ NewAtlasRRTCollisionCheck()
New collision check.
Definition at line 1395 of file atlasrrt.c. References TAtlasRRTStatistics::nCollisionChecks. Referenced by NewTemptativeSample(). ◆ NewAverageNumNeighbours()
This is used to store the average number of neighbours for each charts after the generation of an atlasrrt (after planning).
Definition at line 1400 of file atlasrrt.c. References TAtlasRRTStatistics::nAverageNeighbours. Referenced by AtlasRRT(). ◆ InitAtlasRRTStatistics()
Init the Atlas RRT statistics.
Definition at line 1086 of file atlasrrt.c. References TAtlasRRTStatistics::dQrand, TAtlasRRTStatistics::dQrandReached, TAtlasRRTStatistics::itB, TAtlasRRTStatistics::n, TAtlasRRTStatistics::nAverageNeighbours, TAtlasRRTStatistics::nB, TAtlasRRTStatistics::nBranch, TAtlasRRTStatistics::nChart, TAtlasRRTStatistics::nChartBlocked, TAtlasRRTStatistics::nCollision, TAtlasRRTStatistics::nCollisionChecks, TAtlasRRTStatistics::nDirLargeCurvature, TAtlasRRTStatistics::nDynamicErrors, TAtlasRRTStatistics::nDynamicExtension, TAtlasRRTStatistics::nErrorNewChart, TAtlasRRTStatistics::nImpossible, TAtlasRRTStatistics::nImprovedDynamicExtension, TAtlasRRTStatistics::nIntTimeReached, TAtlasRRTStatistics::nLargeCurvature, TAtlasRRTStatistics::nLQRComputePolicy, TAtlasRRTStatistics::nLQRPolicy, TAtlasRRTStatistics::nNoAction, TAtlasRRTStatistics::nNoConnect, TAtlasRRTStatistics::nNoConvergent, TAtlasRRTStatistics::nNoDir, TAtlasRRTStatistics::nNoEmptyBranch, TAtlasRRTStatistics::nNoEmptyTreeConnection, TAtlasRRTStatistics::nNoPolicy, TAtlasRRTStatistics::nNoReplay, TAtlasRRTStatistics::nNotInDomain, TAtlasRRTStatistics::nOutOfChart, TAtlasRRTStatistics::nQrandReached, TAtlasRRTStatistics::nRandom, TAtlasRRTStatistics::nRejections1, TAtlasRRTStatistics::nRejections2, TAtlasRRTStatistics::nRejections3, TAtlasRRTStatistics::nRejections4, TAtlasRRTStatistics::nRepeatedChart, TAtlasRRTStatistics::nRepeatedSample, TAtlasRRTStatistics::nRevisitedChart, TAtlasRRTStatistics::nSample, TAtlasRRTStatistics::nSingular, TAtlasRRTStatistics::nStep, TAtlasRRTStatistics::nStepReduction, TAtlasRRTStatistics::nTooFar, TAtlasRRTStatistics::nTooLong, TAtlasRRTStatistics::nToptIncrements, TAtlasRRTStatistics::nTransTestFailed, TAtlasRRTStatistics::nTreeConnection, TAtlasRRTStatistics::satAction, and TAtlasRRTStatistics::topt. Referenced by AtlasBiRRTstar(), AtlasRRT(), AtlasRRTSimulate(), AtlasRRTstar(), AtlasTRRT(), and main(). ◆ AccumulateAtlasRRTStatistics()
Accumulates two sets of Atlas RRT statistics. This is used to accumulate statistics when executing a long sequence of experiments.
Definition at line 1405 of file atlasrrt.c. References TAtlasRRTStatistics::dQrand, TAtlasRRTStatistics::dQrandReached, TAtlasRRTStatistics::itB, TAtlasRRTStatistics::n, TAtlasRRTStatistics::nAverageNeighbours, TAtlasRRTStatistics::nB, TAtlasRRTStatistics::nBranch, TAtlasRRTStatistics::nChart, TAtlasRRTStatistics::nChartBlocked, TAtlasRRTStatistics::nCollision, TAtlasRRTStatistics::nCollisionChecks, TAtlasRRTStatistics::nDirLargeCurvature, TAtlasRRTStatistics::nDynamicErrors, TAtlasRRTStatistics::nDynamicExtension, TAtlasRRTStatistics::nErrorNewChart, TAtlasRRTStatistics::nImpossible, TAtlasRRTStatistics::nImprovedDynamicExtension, TAtlasRRTStatistics::nIntTimeReached, TAtlasRRTStatistics::nLargeCurvature, TAtlasRRTStatistics::nLQRComputePolicy, TAtlasRRTStatistics::nLQRPolicy, TAtlasRRTStatistics::nNoAction, TAtlasRRTStatistics::nNoConnect, TAtlasRRTStatistics::nNoConvergent, TAtlasRRTStatistics::nNoDir, TAtlasRRTStatistics::nNoEmptyBranch, TAtlasRRTStatistics::nNoEmptyTreeConnection, TAtlasRRTStatistics::nNoPolicy, TAtlasRRTStatistics::nNoReplay, TAtlasRRTStatistics::nNotInDomain, TAtlasRRTStatistics::nOutOfChart, TAtlasRRTStatistics::nQrandReached, TAtlasRRTStatistics::nRandom, TAtlasRRTStatistics::nRejections1, TAtlasRRTStatistics::nRejections2, TAtlasRRTStatistics::nRejections3, TAtlasRRTStatistics::nRejections4, TAtlasRRTStatistics::nRepeatedChart, TAtlasRRTStatistics::nRepeatedSample, TAtlasRRTStatistics::nRevisitedChart, TAtlasRRTStatistics::nSample, TAtlasRRTStatistics::nSingular, TAtlasRRTStatistics::nStep, TAtlasRRTStatistics::nStepReduction, TAtlasRRTStatistics::nTooFar, TAtlasRRTStatistics::nTooLong, TAtlasRRTStatistics::nToptIncrements, TAtlasRRTStatistics::nTransTestFailed, TAtlasRRTStatistics::nTreeConnection, TAtlasRRTStatistics::satAction, and TAtlasRRTStatistics::topt. Referenced by AtlasBiRRTstar(), AtlasRRT(), AtlasRRTstar(), and AtlasTRRT(). ◆ PrintAtlasRRTStatistics()
Prints a report about the collected atlasRRT statistics.
Definition at line 1482 of file atlasrrt.c. References Tatlasrrt::atlas, TAtlasRRTStatistics::dQrand, TAtlasRRTStatistics::dQrandReached, DynamicDomainRRT(), Tatlasrrt::dynamics, GetAtlasChart(), GetChartSamplingRadius(), GetDynamicDomainRadius(), INF, TAtlasRRTStatistics::itB, TAtlasRRTStatistics::n, TAtlasRRTStatistics::nAverageNeighbours, TAtlasRRTStatistics::nB, TAtlasRRTStatistics::nBranch, Tatlasrrt::nc, TAtlasRRTStatistics::nChart, TAtlasRRTStatistics::nChartBlocked, TAtlasRRTStatistics::nCollision, TAtlasRRTStatistics::nCollisionChecks, TAtlasRRTStatistics::nDirLargeCurvature, TAtlasRRTStatistics::nDynamicErrors, TAtlasRRTStatistics::nDynamicExtension, TAtlasRRTStatistics::nErrorNewChart, TAtlasRRTStatistics::nImpossible, TAtlasRRTStatistics::nImprovedDynamicExtension, TAtlasRRTStatistics::nIntTimeReached, TAtlasRRTStatistics::nLargeCurvature, TAtlasRRTStatistics::nLQRComputePolicy, TAtlasRRTStatistics::nLQRPolicy, TAtlasRRTStatistics::nNoAction, TAtlasRRTStatistics::nNoConnect, TAtlasRRTStatistics::nNoConvergent, TAtlasRRTStatistics::nNoDir, TAtlasRRTStatistics::nNoEmptyBranch, TAtlasRRTStatistics::nNoEmptyTreeConnection, TAtlasRRTStatistics::nNoPolicy, TAtlasRRTStatistics::nNoReplay, TAtlasRRTStatistics::nNotInDomain, TAtlasRRTStatistics::nOutOfChart, TAtlasRRTStatistics::nQrandReached, TAtlasRRTStatistics::nRandom, TAtlasRRTStatistics::nRejections1, TAtlasRRTStatistics::nRejections2, TAtlasRRTStatistics::nRejections3, TAtlasRRTStatistics::nRejections4, TAtlasRRTStatistics::nRepeatedChart, TAtlasRRTStatistics::nRepeatedSample, TAtlasRRTStatistics::nRevisitedChart, Tatlasrrt::ns, TAtlasRRTStatistics::nSample, TAtlasRRTStatistics::nSingular, TAtlasRRTStatistics::nStep, TAtlasRRTStatistics::nStepReduction, TAtlasRRTStatistics::nTooFar, TAtlasRRTStatistics::nTooLong, TAtlasRRTStatistics::nToptIncrements, TAtlasRRTStatistics::nTransTestFailed, TAtlasRRTStatistics::nTreeConnection, Tatlasrrt::parallel, Tatlasrrt::rrt, TAtlasRRTStatistics::satAction, and TAtlasRRTStatistics::topt. Referenced by AtlasBiRRTstar(), AtlasRRT(), AtlasRRTSimulate(), AtlasRRTstar(), AtlasTRRT(), and main(). ◆ DeleteAtlasRRTStatistics()
Deletes the atlasRRT statistics object.
Definition at line 1822 of file atlasrrt.c. Referenced by AtlasBiRRTstar(), AtlasRRT(), AtlasRRTSimulate(), AtlasRRTstar(), AtlasTRRT(), and main(). ◆ UpdateLQRPolicy()
Recomputes the LQR policy.
Definition at line 2763 of file atlasrrt.c. References TAtlasRRTBranchState::blocked, CT_DELTA, CT_EPSILON, CT_LQR_PLANNING_TIME, TAtlasRRTBranchConfig::currentMaxIntTime, Tatlasrrt::da, Distance(), Tatlasrrt::ds, GetChartCenter(), GetChartTangentSpace(), GetInverseActionCostMatrix(), GetLinearizedDynamics(), GetParameter(), INF, TAtlasRRTBranchState::intTime, Tatlasrrt::k, LinearizeDynamics(), LQR_COMPUTE_POLICY, Tatlasrrt::m, MAX_OPT_TIME, TAtlasRRTBranchConfig::maxIntTime, TAtlasRRTBranchConfig::maxTopt, NewAtlasRRTLQRComputePolicy(), NewAtlasRRTLQRToptIncreases(), NewAtlasRRTNoLQRPolicy(), NO_POLICY, PrintMatrix(), PrintVector(), SetLinearizedDynamics(), START2GOAL, TAtlasRRTBranchConfig::tLastLinearization, TAtlasRRTBranchConfig::topt, and TAtlasRRTBranchState::tree. Referenced by AddBranchToAtlasRRT(), and NewTemptativeSample(). ◆ AddBranchToAtlasRRT()
Add a new branch to the AtlasRRT. The branch is extened until the given goal is reached or until a problem in the extension occurs (obstacles, convergence problems, singularities, etc.). Note that this function is also used to check if a given sample can be connected to the tree but without actually adding a branch to the tree. In this case, though the charts necessaries to connect the tree and the given sample are generated if not ye defined (i.e., while we do not add samples we might add charts. This extension-without-addition is basically used for RRT*.
Definition at line 2898 of file atlasrrt.c. References ADD_ALL, ADD_ALL_NO_REP, ADD_CHART_AND_LAST_NO_REP, ADD_LAST, ADD_LAST_NO_REP, ADD_NONE, AddChart2AtlasRRT(), TAtlasRRTBranchConfig::addMode, AddSample2AtlasRRT(), AddSample2SamplesReplay(), AddStep2Trajectory(), AdjustDynamicDomain(), Tatlasrrt::atlas, TAtlasRRTBranchState::blocked, TSampleInfo::c, TAtlasRRTBranchState::c, canContinueBranch(), TAtlasRRTBranchConfig::chartAddMode, TAtlasRRTBranchState::chartInAtlas, COLLISION, TAtlasRRTBranchState::cost, CT_DELTA, CT_EPSILON, CT_MAX_NODES_RRT, CT_SAMPLING, TAtlasRRTBranchConfig::currentMaxIntTime, Tatlasrrt::da, DeleteBranchState(), DeleteSampleInfo(), DeleteTrajectory(), TAtlasRRTBranchState::delta, Tatlasrrt::dge, Distance(), DistanceTopology(), TAtlasRRTBranchState::distGoal, TAtlasRRTBranchState::distOrigin, TAtlasRRTBranchState::distQrand, Tatlasrrt::dynamics, Error(), FALSE, TSampleInfo::generateChart, GetAtlasChart(), GetParameter(), GetRRTNN(), TAtlasRRTBranchState::h, InitBranchState(), InitSampleInfo(), InitSamplesReplay(), InitTrajectory(), TAtlasRRTBranchState::intTime, Tatlasrrt::k, TAtlasRRTBranchState::lastID, TAtlasRRTBranchState::length, Tatlasrrt::m, Manifold2Chart(), MAX_INT_TIME, TAtlasRRTBranchState::maxDistOrigin, TAtlasRRTBranchState::maxLength, Tatlasrrt::nc, TAtlasRRTBranchState::nCreatedCharts, Tatlasrrt::nda, NewAtlasRRTBlockBySingularity(), NewAtlasRRTChart(), NewAtlasRRTIntTimeReached(), NewAtlasRRTNoAdvanceDirection(), NewAtlasRRTNoConnectToParent(), NewAtlasRRTNoReplay(), NewAtlasRRTQrandReached(), NewAtlasRRTRepeatedSample(), NewAtlasRRTSample(), NewAtlasRRTStep(), NewAtlasRRTStepReduction(), NewAtlasRRTTooFar(), NewAtlasRRTTooLong(), NewTemptativeSample(), NewVectorElement(), NO_BLOCKED, NO_DIR, NO_REPLAY, NO_UINT, Norm(), NOT_IN_DOMAIN, Tatlasrrt::ns, TAtlasRRTBranchConfig::onManifold, Tatlasrrt::parallel, TSampleInfo::pc, PointTowardRandSample(), PrintBranchBlockedState(), PrintVector(), TAtlasRRTBranchConfig::randLQRAction, TAtlasRRTBranchState::reachedGoal, TAtlasRRTBranchState::reachedQrand, TAtlasRRTBranchState::reachedTmpQrand, REPEATED_SAMPLE, Tatlasrrt::rrt, TSampleInfo::s, SetSampleInfo(), SetSampleInfoFromNode(), Tatlasrrt::si, SINGULARITY, TAtlasRRTBranchState::stepLength, TSampleInfo::t, TOO_FAR, TOO_LONG, Tatlasrrt::tp, TAtlasRRTBranchState::traversedCharts, TAtlasRRTBranchState::tree, TRUE, UpdateLQRPolicy(), TAtlasRRTBranchState::validChart, Warning(), WeightedDistanceTopology(), and Tatlasrrt::weights. Referenced by AddBranchToAtlasDynamicRRT(), AddStepToAtlasRRTstar(), AtlasBiRRTstar(), AtlasRRT(), AtlasRRTSimulate(), AtlasTRRT(), ReconstructAtlasRRTPath(), ReWireAtlasRRTstar(), SmoothPathInAtlasRRT(), Steps2PathinAtlasRRT(), and WireAtlasRRTstar(). ◆ AddBranchToAtlasDynamicRRT()
Variant of AddBranchToAtlasRRT for dynamical systems. Here instead of growing just one branch we grow a branch for each different acion and keep the one that is closer to x_rand
Definition at line 3632 of file atlasrrt.c. References TDynamicBranches::action, ADD_ALL, ADD_ALL_NO_REP, ADD_CHART_AND_LAST_NO_REP, ADD_LAST_NO_REP, ADD_NONE, AddBranchToAtlasRRT(), TAtlasRRTBranchConfig::addMode, Tatlasrrt::atlas, ATLASRRT_VERBOSE, TAtlasRRTBranchState::blocked, TSampleInfo::c, TAtlasRRTBranchConfig::chartAddMode, TDynamicBranches::costReplay, CT_EPSILON, CT_MAX_NODES_RRT, TAtlasRRTBranchConfig::currentMaxIntTime, Tatlasrrt::da, TDynamicBranches::dAction, DeleteSamplesReplay(), DistanceTopology(), Tatlasrrt::ds, Error(), FALSE, GetActionFromID(), GetAtlasChart(), GetParameter(), GetRRTNodeTree(), INF, TAtlasRRTBranchState::intTime, Tatlasrrt::k, TAtlasRRTBranchState::lastID, TAtlasRRTBranchState::length, Tatlasrrt::m, Manifold2Chart(), MAX_INT_TIME, TAtlasRRTBranchConfig::maxIntTime, TAtlasRRTBranchConfig::maxTopt, Tatlasrrt::nda, NEW, NewAtlasRRTDynamicExtension(), NewAtlasRRTImprovedDynamicExtension(), NewAtlasRRTNoAction(), TDynamicBranches::newChartReplay, NO_UINT, Tatlasrrt::ns, TDynamicBranches::nsReplay, TAtlasRRTBranchConfig::onManifold, Tatlasrrt::parallel, PointInRRT(), PrintBranchBlockedState(), PrintVector(), TDynamicBranches::qrandb, TAtlasRRTBranchConfig::randLQRAction, randomDouble(), RANDOMIZED_LQR, randomMax(), TAtlasRRTBranchState::reachedGoal, TAtlasRRTBranchState::reachedQrand, TAtlasRRTBranchState::reachedTmpQrand, Tatlasrrt::rrt, TSampleInfo::s, TDynamicBranches::sample, Tatlasrrt::si, TDynamicBranches::state, TDynamicBranches::statesReplay, TSampleInfo::t, Time2Go(), TDynamicBranches::timeReplay, Tatlasrrt::tp, TDynamicBranches::tr, TAtlasRRTBranchState::tree, TRUE, WeightedDistanceTopology(), and Tatlasrrt::weights. Referenced by AtlasRRT(). ◆ NewTemptativeSample()
Generates a new sample interpolating in between x_near and x_rand and projecting to the manifold. This is used to extend a AtlasRRT branch. This function consideres the possible transition to a neighbouring chart of the new sample. If this transition occurs, the random point is also translated to the new chart.
Definition at line 4083 of file atlasrrt.c. References ADD_NONE, AddChart2Tree(), Tatlasrrt::ambient, Tatlasrrt::atlas, TAtlasRRTBranchState::blocked, TSampleInfo::c, TAtlasRRTBranchState::c, Tatlasrrt::ce, Chart2Manifold(), TAtlasRRTBranchConfig::chartAddMode, TAtlasRRTBranchState::chartInAtlas, TAtlasRRTBranchConfig::checkCollisions, CloseCharts(), CmpID(), COLLISION, TAtlasRRTBranchState::cost, TAtlasRRTBranchConfig::costData, TAtlasRRTBranchConfig::costF, CS_WD_IN_COLLISION, CS_WD_SIMP_INEQUALITIES_HOLD, CT_EPSILON, CT_SAMPLING, TAtlasRRTBranchConfig::currentMaxIntTime, DeleteChart(), TAtlasRRTBranchState::delta, TAtlasRRTBranchState::deltaParam, DetermineChartNeighbour(), Distance(), DistanceTopology(), TDynamicSpace::dof, DYNAMIC_ERROR, Tatlasrrt::dynamics, Tatlasrrt::e, ElementInVector(), EnlargeChart(), Error(), TAtlasRRTBranchConfig::explorationSample, FALSE, TSampleInfo::generateChart, GetAtlasChart(), GetParameter(), TAtlasRRTBranchState::h, TSampleInfo::id, InitChart(), InsideChartPolytope(), TAtlasRRTBranchState::intTime, Tatlasrrt::J, Tatlasrrt::k, LQRPolicy(), Tatlasrrt::m, Manifold2Chart(), TAtlasRRTBranchState::nCreatedCharts, Tatlasrrt::nda, NewAtlasRRTBroyden(), NewAtlasRRTChartBlocked(), NewAtlasRRTCollision(), NewAtlasRRTCollisionCheck(), NewAtlasRRTDirLargeCurvature(), NewAtlasRRTDynamicError(), NewAtlasRRTImpossible(), NewAtlasRRTInitChartError(), NewAtlasRRTLargeCurvature(), NewAtlasRRTLQRPolicy(), NewAtlasRRTNoAdvanceDirection(), NewAtlasRRTNoConvergentStep(), NewAtlasRRTNotInDomain(), NewAtlasRRTOutOfChart(), NewAtlasRRTRepeatedChart(), NewAtlasRRTRevisitedChart(), NewAtlasRRTTransTestFail(), NewVectorElement(), NextDynamicState(), NextDynamicStateEuler(), NextDynamicStateLocalEuler(), NextDynamicStateLocalRK4(), NextDynamicStateRK4(), NO_BLOCKED, NO_DIR, NO_UINT, Norm(), NOT_IN_DOMAIN, TAtlasRRTBranchConfig::onManifold, Tatlasrrt::parallel, TSampleInfo::pc, PointInBoxTopology(), PointTowardRandSample(), PrintVector(), Tatlasrrt::r, TAtlasRRTBranchConfig::randLQRAction, TAtlasRRTBranchConfig::repeatCharts, REPEATED_CHART, TAtlasRRTBranchConfig::revisitCharts, REVISITED_CHART, Tatlasrrt::rrt, TSampleInfo::s, SINGULARITY, START2GOAL, SumVectorScale(), TSampleInfo::t, THE_IMPOSSIBLE, TAtlasRRTBranchConfig::tLastLinearization, TAtlasRRTBranchConfig::topt, Tatlasrrt::tp, TRANSITION_TEST_FAILS, TransitionTestRRT(), TAtlasRRTBranchState::traversedCharts, TAtlasRRTBranchState::tree, TRUE, UpdateLQRPolicy(), TAtlasRRTBranchState::validChart, Tatlasrrt::w, and Warning(). Referenced by AddBranchToAtlasRRT(). ◆ AddSample2AtlasRRT()
Adds a sample to the AtlasRRT connected to a given sample already in the tree.
Definition at line 4725 of file atlasrrt.c. References AddChart2Tree(), AddNodeToRRT(), TSampleInfo::c, Tatlasrrt::ci, DistanceTopology(), Error(), TSampleInfo::generateChart, GetRRTNode(), TSampleInfo::id, Tatlasrrt::k, TChartInfo::lc, TSampleInfo::lsc, Tatlasrrt::m, MEM_DUP, Tatlasrrt::ms, NEW, Tatlasrrt::ns, TSampleInfo::pc, Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, TSampleInfo::t, and Tatlasrrt::tp. Referenced by AddBranchToAtlasRRT(). ◆ AddChart2AtlasRRT()
Used when a sample triggers the generation of a new chart. We can generate a chart on:
Definition at line 4837 of file atlasrrt.c. References ADD_NONE, AddChart2Tree(), AddTrustedChart2Atlas(), Tatlasrrt::ambient, Tatlasrrt::atlas, Tatlasrrt::birrt, TSampleInfo::c, TAtlasRRTBranchState::c, Tatlasrrt::ce, TAtlasRRTBranchConfig::chartAddMode, TAtlasRRTBranchState::chartInAtlas, ChartNeighbourID(), ChartNumNeighbours(), Tatlasrrt::ci, CopyChart(), DeleteChart(), Tatlasrrt::e, EnlargeChart(), Error(), FALSE, ForceChartCut(), TSampleInfo::generateChart, GetAtlasChart(), GetAtlasNumCharts(), TSampleInfo::id, INIT_NUM_CHARTS, InitTrustedChart(), TChartInfo::it, Tatlasrrt::J, Tatlasrrt::k, TChartInfo::lc, TSampleInfo::lsc, Tatlasrrt::m, Manifold2Chart(), Tatlasrrt::mc, MEM_EXPAND, Tatlasrrt::nc, NEW, NO_UINT, Tatlasrrt::parallel, TSampleInfo::pc, PopulateWithSamples(), PrintVector(), Tatlasrrt::r, TSampleInfo::s, SetSampleInfo(), Tatlasrrt::si, SingularChart(), TSampleInfo::t, Tatlasrrt::tp, TChartInfo::tree, TRUE, Tatlasrrt::w, and Warning(). Referenced by AddBranchToAtlasRRT(), and InitAtlasRRT(). ◆ PopulateWithSamples()
After generating a new chart (with identifier id) some of the samples assigned to their neighbours have to be assigned to the new chart.
Definition at line 5065 of file atlasrrt.c. References AddChart2Tree(), Tatlasrrt::atlas, TSampleInfo::c, ChartNeighbourID(), ChartNumNeighbours(), Tatlasrrt::ci, CT_EPSILON, DetermineChartNeighbour(), EnlargeChart(), GetAtlasChart(), GetParameter(), GetRRTNodeTree(), Tatlasrrt::k, TChartInfo::lc, TSampleInfo::lsc, Manifold2Chart(), NEW, NO_UINT, Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, TSampleInfo::t, and Tatlasrrt::tp. Referenced by AddChart2AtlasRRT(). ◆ AddChart2Tree()
Add a visited chart to the list of chart reached by a given tree. This is used to select charts when sampling. We avoid storing the same chart twice to avoid bias in the sampling.
Definition at line 4798 of file atlasrrt.c. References Tatlasrrt::birrt, Tatlasrrt::chartsAtTree1, Tatlasrrt::chartsAtTree2, Tatlasrrt::ci, FALSE, Tatlasrrt::mct1, Tatlasrrt::mct2, MEM_DUP, Tatlasrrt::nct1, Tatlasrrt::nct2, START2GOAL, and TChartInfo::tree. Referenced by AddChart2AtlasRRT(), AddSample2AtlasRRT(), NewTemptativeSample(), and PopulateWithSamples(). ◆ PointTowardRandSample()
Determines a unitary vector on the current chart that points towards the random sample. Additionally, project the random sample to the current chart.
Definition at line 4631 of file atlasrrt.c. References Tatlasrrt::atlas, TSampleInfo::c, TAtlasRRTBranchState::c, TAtlasRRTBranchState::chartInAtlas, TAtlasRRTBranchState::deltaParam, DifferenceVector(), TAtlasRRTBranchState::distQrand, Tatlasrrt::dynamics, FALSE, GetAtlasChart(), GetChartCenter(), GetChartTangentSpace(), Tatlasrrt::k, Local2Global(), Tatlasrrt::m, Manifold2Chart(), TAtlasRRTBranchState::maxLength, NO_UINT, Norm(), Normalize(), TAtlasRRTBranchConfig::onManifold, Tatlasrrt::parallel, PrintMatrix(), PrintVector(), Tatlasrrt::r, TSampleInfo::s, SumVectorScale(), TSampleInfo::t, TANGENT_SAMPLING, Tatlasrrt::tp, and TRUE. Referenced by AddBranchToAtlasRRT(), and NewTemptativeSample(). ◆ ReconstructAtlasRRTPath()
Reconstruct the path from the tree root to the sample in the tree closer to the goal. This is typically used to get the targed is reached.
Definition at line 5155 of file atlasrrt.c. References AddBranchToAtlasRRT(), AddSample2Samples(), CONNECT_SAFE, CS_WD_GET_SYSTEM_VARS, CS_WD_REGENERATE_ORIGINAL_POINT, DeleteSamples(), GetRRTParent(), InitBranchConfig(), InitSamples(), NO_UINT, TAtlasRRTBranchState::reachedQrand, ReverseSamples(), Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, Tatlasrrt::w, and Warning(). Referenced by AtlasRRTstar(). ◆ Steps2PathinAtlasRRT()
Defines a path (a collection of close enough samples) from a set of steps defined as nodes in a AtlasRRT.
Definition at line 5223 of file atlasrrt.c. References AddBranchToAtlasRRT(), AddSample2Samples(), CONNECT_SAFE, CS_WD_GET_SYSTEM_VARS, CS_WD_REGENERATE_ORIGINAL_POINT, CT_DELTA, CT_EPSILON, DeleteSamples(), TAtlasRRTBranchState::distQrand, GetParameter(), GetRRTNodeCost(), GetVectorElement(), InitBranchConfig(), InitSamples(), NO_UINT, Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, VectorSize(), Tatlasrrt::w, and Warning(). Referenced by AtlasBiRRTstar(). ◆ SmoothPathInAtlasRRT()
Local optimiziation of the length of the path to a node. Tries to re-wire the tree to minimize the path from the root to a given node.
Definition at line 5315 of file atlasrrt.c. References AddBranchToAtlasRRT(), CONNECT_SAMPLES, GetRRTNodeCost(), GetRRTParent(), INF, InitBranchConfig(), TAtlasRRTBranchConfig::maxLength, TAtlasRRTBranchConfig::maxTopt, NEW, NO_UINT, randomMax(), TAtlasRRTBranchState::reachedQrand, Tatlasrrt::rrt, TSampleInfo::s, SetRRTNodeCost(), SetRRTParent(), Tatlasrrt::si, and StepsToRoot(). ◆ AddStepToAtlasRRTstar()
Tries to generate a node from i_near toward x_rand and, if possible, adds it to the AtlasRRT and updates the cost of the new node. Moreover, we check if the goal is actually reached. If so, we add another node to the tree representing the goal.
Definition at line 6946 of file atlasrrt.c. References ADD_LAST, ADD_LAST_NO_REP, AddBranchToAtlasRRT(), TAtlasRRTBranchConfig::addMode, CONNECT_SAMPLES, CT_EPSILON, TAtlasRRTBranchState::distGoal, Error(), GetParameter(), GetRRTNodeCost(), GetRRTParent(), InitBranchConfig(), TAtlasRRTBranchState::lastID, NO_UINT, TAtlasRRTBranchConfig::onManifold, TAtlasRRTBranchState::reachedGoal, TAtlasRRTBranchState::reachedQrand, Tatlasrrt::rrt, SetRRTNodeCost(), and TRUE. Referenced by AtlasBiRRTstar(), and AtlasRRTstar(). ◆ WireAtlasRRTstar()
Selects the best parent among all neighbouring nodes for a node just added to the tree.
Definition at line 7012 of file atlasrrt.c. References AddBranchToAtlasRRT(), AddEdgeToRRT(), AddElement2Heap(), Tatlasrrt::ambient, CONNECT_SAMPLES, ConnectSamplesChart(), CT_EPSILON, Error(), FALSE, GetParameter(), GetRRTMode(), GetRRTNodeCost(), GetRRTNodeCostFromParent(), GetRRTNodeTree(), GetRRTParent(), INF, InitBranchConfig(), IsRRTGraph(), Tatlasrrt::J, Tatlasrrt::k, Tatlasrrt::m, TAtlasRRTBranchConfig::maxLength, NEW, NewAtlasRRTBranch(), NewAtlasRRTNoEmptyBranch(), NewDoublePair(), NO_UINT, Tatlasrrt::parallel, TAtlasRRTBranchState::reachedQrand, Tatlasrrt::rrt, TSampleInfo::s, SetRRTCostAndParent(), Tatlasrrt::si, Tatlasrrt::tp, TRUE, TWO_TREES_WITH_SWAP, UpdateCostAndTree(), and Tatlasrrt::w. Referenced by AtlasBiRRTstar(), and AtlasRRTstar(). ◆ ReWireAtlasRRTstar()
Uses the last added node to the AtlasRRT to try to reduce the cost of the neighbouring nodes.
Definition at line 7157 of file atlasrrt.c. References AddBranchToAtlasRRT(), ChangeBiRRTSteps(), CONNECT_SAMPLES, CT_EPSILON, FALSE, GetParameter(), GetRRTMode(), GetRRTNodeCost(), GetRRTNodeCostFromParent(), GetRRTNodeTree(), GetRRTParent(), INF, InitBranchConfig(), TAtlasRRTBranchConfig::maxLength, NO_UINT, TAtlasRRTBranchState::reachedQrand, Tatlasrrt::rrt, TSampleInfo::s, SetRRTCostAndParent(), Tatlasrrt::si, TWO_TREES_WITH_SWAP, and UpdateCostAndTree(). Referenced by AtlasBiRRTstar(), and AtlasRRTstar(). ◆ AtlasRRTstarCloseIteration()
Prints information about the AtlasRRT* iteration.
Definition at line 7239 of file atlasrrt.c. References ATLASRRT_VERBOSE, CostToRoot(), GetRRTNodeCost(), Tatlasrrt::nc, NO_UINT, Tatlasrrt::ns, and Tatlasrrt::rrt. Referenced by AtlasRRTstar(). ◆ AtlasBiRRTstarCloseIteration()
Prints information about the Bi-directional AtlasRRT* iteration.
Definition at line 7274 of file atlasrrt.c. References ATLASRRT_VERBOSE, INF, Tatlasrrt::nc, and Tatlasrrt::ns. Referenced by AtlasBiRRTstar(). ◆ SaveAtlasRRTSampleInfo()
Saves the information relating a given sample to charts in an AtlasRRT.
Definition at line 5620 of file atlasrrt.c. References TSampleInfo::c, TSampleInfo::generateChart, TSampleInfo::id, Tatlasrrt::k, TSampleInfo::lsc, TSampleInfo::pc, and TSampleInfo::t. Referenced by SaveAtlasRRT(). ◆ SaveAtlasRRTChartInfo()
Saves the information relating a given chart to the samples it contains
Definition at line 5634 of file atlasrrt.c. References TChartInfo::it, TChartInfo::lc, and TChartInfo::tree. Referenced by SaveAtlasRRT(). ◆ LoadAtlasRRTSampleInfo()
Reads the information relating a given sample to charts in an AtlasRRT.
Definition at line 5641 of file atlasrrt.c. References TSampleInfo::c, TSampleInfo::generateChart, GetRRTNode(), TSampleInfo::id, Tatlasrrt::k, TSampleInfo::lsc, NEW, TSampleInfo::pc, Tatlasrrt::rrt, TSampleInfo::s, and TSampleInfo::t. Referenced by LoadAtlasRRT(). ◆ LoadAtlasRRTChartInfo()
Reads the information relating a given chart to the samples it contains
Definition at line 5656 of file atlasrrt.c. References TChartInfo::it, TChartInfo::lc, and TChartInfo::tree. Referenced by LoadAtlasRRT(). ◆ PlotQrand()
Small debug utility to plot the position of x_rand.
Definition at line 5464 of file atlasrrt.c. References Tatlasrrt::atlas, Close3dObject(), ClosePlot3d(), CreateFileName(), CS_WD_REGENERATE_ORIGINAL_POINT, DeleteColor(), DeleteFileName(), FALSE, GetAtlasChart(), GetChartCenter(), GetFileFullName(), InitPlot3d(), Local2Global(), Tatlasrrt::m, NEW, NewColor(), PLOT3D_EXT, PlotVect3d(), TSampleInfo::s, Tatlasrrt::si, StartNew3dObject(), Tatlasrrt::tp, and Tatlasrrt::w. ◆ PlotConnection()
Graphical representation of the attempt to connect two trees.
Definition at line 5561 of file atlasrrt.c. References Close3dObject(), ClosePlot3d(), CreateFileName(), CS_WD_REGENERATE_ORIGINAL_POINT, DeleteColor(), DeleteFileName(), FALSE, GetFileFullName(), InitPlot3d(), NewColor(), PLOT3D_EXT, PlotVect3d(), TSampleInfo::s, Tatlasrrt::si, StartNew3dObject(), and Tatlasrrt::w. ◆ RandomPointInAtlasTree()
Selects a random point in the set of charts reached by a given tree.
Definition at line 5375 of file atlasrrt.c. References Tatlasrrt::atlas, Tatlasrrt::birrt, BOTHTREES, Tatlasrrt::chartsAtTree1, Tatlasrrt::chartsAtTree2, GetAtlasChart(), GetAtlasNumCharts(), GetChartSamplingRadius(), Tatlasrrt::k, Tatlasrrt::nct1, Tatlasrrt::nct2, NEW, randomMax(), RandomPointInAtlas(), RandomPointInChart(), randomWithDistribution(), START2GOAL, and Tatlasrrt::tp. Referenced by AtlasRRTSample(). ◆ InitAtlasRRT()
Defines a Atlas-RRT with a single sample, the root.
Definition at line 5667 of file atlasrrt.c. References ActionSpaceDimension(), AddChart2AtlasRRT(), Tatlasrrt::ambient, Tatlasrrt::atlas, Tatlasrrt::birrt, TSampleInfo::c, Tatlasrrt::ce, Tatlasrrt::chartsAtTree1, Tatlasrrt::chartsAtTree2, Tatlasrrt::ci, CS_WD_GENERATE_SIMP_INITIAL_BOX, CS_WD_GET_SIMP_JACOBIAN, CT_CE, CT_DYNAMIC_GOAL_ERROR, CT_DYNAMICS, CT_E, CT_N_DOF, CT_N_DYNAMIC_ACTIONS, CT_R, Tatlasrrt::da, Tatlasrrt::dge, Tatlasrrt::ds, Tatlasrrt::dynamics, Tatlasrrt::e, Error(), EXPLORATION_RRT, FALSE, TSampleInfo::generateChart, GetAtlasNumCharts(), GetBoxNIntervals(), GetParameter(), GetRRTNode(), GetRRTNumNodes(), GetRRTTopology(), GetRRTWeights(), GOAL2START, TSampleInfo::id, INF, INIT_NUM_CHARTS, INIT_NUM_SAMPLES_RRT, InitAtlasFromPoint(), InitDynamicSpace(), InitRRT(), TChartInfo::it, Tatlasrrt::J, Tatlasrrt::k, TChartInfo::lc, TSampleInfo::lsc, Tatlasrrt::m, Tatlasrrt::mc, Tatlasrrt::mct1, Tatlasrrt::mct2, Tatlasrrt::ms, Tatlasrrt::nc, Tatlasrrt::nct1, Tatlasrrt::nct2, Tatlasrrt::nda, NEW, NO_UINT, Tatlasrrt::ns, ONE_TREE, Tatlasrrt::parallel, TSampleInfo::pc, Tatlasrrt::r, Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, START2GOAL, TSampleInfo::t, Tatlasrrt::tp, TChartInfo::tree, TRUE, Tatlasrrt::w, and Tatlasrrt::weights. Referenced by main(). ◆ AtlasRRTSample()
Generates a random sample to expand the AtlasRRT. The sample can be generated with different policies according to the mode (from the ambient space, or near the existing nodes) and the goal (if defined the goal is used as random sample 1 out of 100 times).
Definition at line 5866 of file atlasrrt.c. References AMBIENT_SAMPLING, Tatlasrrt::atlas, Tatlasrrt::birrt, Chart2Manifold(), CS_WD_SIMP_INEQUALITIES_HOLD, DecreaseChartSamplingRadius(), Error(), FALSE, GetAtlasChart(), IncreaseChartSamplingRadius(), INF, Tatlasrrt::J, Tatlasrrt::k, KDTREE_SAMPLING, Tatlasrrt::m, NEW, NewAtlasRRTRandomSample(), NewAtlasRRTSampleRejection1(), NO_UINT, Norm(), Tatlasrrt::r, randomDouble(), RandomPointInAtlasTree(), Tatlasrrt::rrt, RRTSample(), TANGENT_SAMPLING, Tatlasrrt::tp, TRUE, and Tatlasrrt::w. Referenced by AtlasBiRRTstar(), AtlasRRT(), AtlasRRTstar(), and AtlasTRRT(). ◆ AtlasRRTValidateSample()
Checks if a given sample is valid to expand the AtlasRRT.
Definition at line 5974 of file atlasrrt.c. References Tatlasrrt::atlas, TSampleInfo::c, Chart2Manifold(), ChartNeighbourID(), ChartNumNeighbours(), Tatlasrrt::da, DistanceTopology(), Tatlasrrt::ds, Tatlasrrt::dynamics, Error(), FALSE, GeneralDotProduct(), GetAtlasChart(), GetChartTangentSpace(), GetRRTNN(), GetRRTNNInChart(), Getxdot(), HEURISTIC_RRT_STAR, InDynamicDomain(), INF, Tatlasrrt::J, Tatlasrrt::k, Local2Global(), Tatlasrrt::m, Manifold2Chart(), NEW, NewAtlasRRTSampleRejection2(), NewAtlasRRTSampleRejection3(), NewAtlasRRTSampleRejection4(), NEWZ, NO_UINT, Norm(), Tatlasrrt::ns, PrintVector(), randomDouble(), Tatlasrrt::rrt, RRTBlockedProb(), TSampleInfo::s, Tatlasrrt::si, SubtractVector(), TSampleInfo::t, T2G_METRIC_NN_EXTEND, TMatrixVectorProduct(), Tatlasrrt::tp, and TRUE. Referenced by AtlasBiRRTstar(), AtlasRRT(), AtlasRRTstar(), and AtlasTRRT(). ◆ RefineTrajectory()
In problems with dynamics only the end-point of the simulated RRT branches are added to the tree. Thus, the resolution of the resulting trajectories are sometimes too coarse. This function simulates the trajectories between the steps in the trajectory to increase the time resolution of the trajectory. In this way, the animations are smoother.
Definition at line 6177 of file atlasrrt.c. References AddStep2Trajectory(), Tatlasrrt::ambient, ConnectDynamicStates(), ConnectDynamicStatesID(), CT_DELTA, Tatlasrrt::da, DeleteTrajectory(), Tatlasrrt::ds, FALSE, GetParameter(), INF, InitTrajectory(), Tatlasrrt::J, Tatlasrrt::k, Tatlasrrt::m, Tatlasrrt::tp, and Tatlasrrt::w. Referenced by AtlasRRT(), and main(). ◆ AtlasRRTSimulate()
Dynamic simulation from the first point in the atlasrrt (it is supposed to include only one point) applying a given action for the integration time fixed in the paremeter structure.
Definition at line 6270 of file atlasrrt.c. References ActionSpaceDimension(), AddBranchToAtlasRRT(), AddStep2Trajectory(), CS_WD_GET_SYSTEM_VARS, CS_WD_REGENERATE_ORIGINAL_POINT, CT_DETECT_BIFURCATIONS, CT_INTEGRATION_TIME, TAtlasRRTBranchConfig::currentMaxIntTime, DeleteAtlasRRTStatistics(), DeleteSamples(), Tatlasrrt::ds, Error(), FALSE, GetParameter(), INF, InitAtlasRRTStatistics(), InitBranchConfig(), InitTrajectory(), TAtlasRRTBranchState::intTime, TAtlasRRTBranchConfig::maxIntTime, TAtlasRRTBranchConfig::maxTopt, Tatlasrrt::nc, Tatlasrrt::nda, Tatlasrrt::ns, PrintAtlasRRTStatistics(), TAtlasRRTBranchState::reachedGoal, TSampleInfo::s, Tatlasrrt::si, SIMULATE_DYNAMICS, TAtlasRRTBranchConfig::topt, and Tatlasrrt::w. Referenced by main(). ◆ AtlasRRT()
Adds as many branches as necessary to the Atlas-RRT until a targed configuration is reached (approached at a small distance).
Definition at line 6380 of file atlasrrt.c. References AccumulateAtlasRRTStatistics(), AddBranchToAtlasDynamicRRT(), AddBranchToAtlasRRT(), Tatlasrrt::ambient, Tatlasrrt::atlas, AtlasRRTSample(), AtlasRRTValidateSample(), AverageNumNeighbours(), Tatlasrrt::birrt, TSampleInfo::c, TAtlasRRTBranchConfig::checkCollisions, CONNECT_RRT_DYNAMICS, CONNECT_RRTs, CS_ANY_COLLISION, CS_WD_ERROR_IN_SIMP_EQUATIONS, CS_WD_GENERATE_SIMPLIFIED_POINT, CS_WD_ORIGINAL_IN_COLLISION, CS_WD_REGENERATE_SOLUTION_POINT, CS_WD_SIMP_INEQUALITIES_HOLD, CT_DETECT_BIFURCATIONS, CT_EPSILON, CT_INTEGRATION_TIME, CT_MAX_NODES_RRT, CT_MAX_PLANNING_TIME, CT_SAMPLING, TAtlasRRTBranchConfig::currentMaxIntTime, Tatlasrrt::da, DecreaseChartSamplingRadius(), DeleteAtlasRRTStatistics(), DeleteDynamicBranches(), DeleteStatistics(), DistanceTopology(), Tatlasrrt::dynamics, DYNAMICS_ONE_ACTION_CONNECT, DYNAMICS_ONE_ACTION_EXTEND, Error(), EXPLORATION_RRT, TAtlasRRTBranchConfig::explorationSample, EXTEND_RRT, EXTEND_RRT_DYNAMICS, FALSE, GetAtlasChart(), GetElapsedTime(), GetParameter(), GetRRTNNInBranch(), GOAL2START, IncreaseChartSamplingRadius(), INF, InitAtlasRRTStatistics(), InitBranchConfig(), InitDynamicBranches(), InitStatistics(), Tatlasrrt::k, TAtlasRRTBranchState::lastID, Tatlasrrt::m, TAtlasRRTBranchConfig::maxIntTime, MOV_AVG_DOWN, MOV_AVG_UP, Tatlasrrt::nc, NEW, NewAtlasRRTBranch(), NewAtlasRRTChart(), NewAtlasRRTDistanceQrand(), NewAtlasRRTNoEmptyBranch(), NewAtlasRRTNoEmptyTreeConnection(), NewAtlasRRTSample(), NewAtlasRRTTreeConnection(), NewAverageNumNeighbours(), NO_UINT, Tatlasrrt::ns, TAtlasRRTBranchConfig::onManifold, Tatlasrrt::parallel, PathStart2GoalInRRT(), PointInBoxTopology(), PrintAtlasRRTStatistics(), PrintVector(), randomDouble(), TAtlasRRTBranchState::reachedGoal, RefineTrajectory(), Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, START2GOAL, T2G_METRIC_INSIDE_CONNECT, T2G_METRIC_INSIDE_EXTEND, TANGENT_SAMPLING, Time2GoNNToTree(), Tatlasrrt::tp, TRUE, and Tatlasrrt::w. Referenced by main(). ◆ AtlasTRRT()
Adds as many branches as necessary to the Atlas-TRRT until a targed configuration is reached (approached at a small distance). The difference with respect AtlasRRT is that here we take into account a cost function using the strategy proposed in L. Jaillet, J. Cortes, T. Simeon, Sampling-based path planning on configuration-space costmaps IEEE Transactions on Robotics, Vol. 26(4), pp. 635 - 646, 2010. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5477164
Definition at line 6777 of file atlasrrt.c. References AccumulateAtlasRRTStatistics(), AddBranchToAtlasRRT(), Tatlasrrt::ambient, AtlasRRTSample(), AtlasRRTValidateSample(), Tatlasrrt::birrt, TAtlasRRTBranchConfig::costData, TAtlasRRTBranchConfig::costF, CS_WD_ERROR_IN_SIMP_EQUATIONS, CS_WD_GENERATE_SIMPLIFIED_POINT, CS_WD_ORIGINAL_IN_COLLISION, CS_WD_REGENERATE_SOLUTION_POINT, CS_WD_SIMP_INEQUALITIES_HOLD, CT_DETECT_BIFURCATIONS, CT_EPSILON, CT_MAX_NODES_RRT, CT_MAX_PLANNING_TIME, CT_SAMPLING, DeleteAtlasRRTStatistics(), DeleteStatistics(), Tatlasrrt::dynamics, Error(), EXPLORATION_RRT, TAtlasRRTBranchConfig::explorationSample, EXTEND_RRT, FALSE, GetElapsedTime(), GetParameter(), GetRRTNode(), GetTRRTTemperature(), INF, InitAtlasRRTStatistics(), InitBranchConfig(), InitStatistics(), Tatlasrrt::k, TAtlasRRTBranchState::lastID, Tatlasrrt::m, Tatlasrrt::nc, NEW, NewAtlasRRTChart(), NewAtlasRRTSample(), NO_UINT, Tatlasrrt::ns, TAtlasRRTBranchConfig::onManifold, PathStart2GoalInRRT(), PointInBoxTopology(), PrintAtlasRRTStatistics(), TAtlasRRTBranchState::reachedGoal, Tatlasrrt::rrt, SetRRTNodeCost(), START2GOAL, Tatlasrrt::tp, TRUE, and Tatlasrrt::w. Referenced by main(). ◆ AtlasRRTstar()
Tries to determine an optimal path to the goal using the RRT* method by S. Karaman and E. Frazzoli "Sampling-based algorithms for optimal motion planning" International Journal of Robotics Research, 2011 but adapted to operate on manifolds. In this case the connections of the connection between points on the manifold is done using the method by Berenson, D., Srinivasa, S., and Kuffner, J. (2011). Task space regions: A framework for pose-constrained manipulation planning. International Journal of Robotics Research. doi 10.1177/0278364910396389. Note that in this case the RRT construction is not stopped when the goal is reached but continues refining the path for the maximum time allowed for the tree construction. This is the atlas-based version of RRTstar. The main difference is that the atlas is used to sample new nodes and to determine paths between samples. If constant GAMMA is 0 this procedure only finds the first path to the goal and then stops (to attempt to improve the path is done).
Definition at line 7304 of file atlasrrt.c. References AccumulateAtlasRRTStatistics(), AddStepToAtlasRRTstar(), Tatlasrrt::ambient, AtlasBiRRTstar(), AtlasRRTSample(), AtlasRRTstarCloseIteration(), AtlasRRTValidateSample(), Tatlasrrt::birrt, CopyDoublePair(), CS_WD_ERROR_IN_SIMP_EQUATIONS, CS_WD_GENERATE_SIMPLIFIED_POINT, CS_WD_ORIGINAL_IN_COLLISION, CS_WD_REGENERATE_SOLUTION_POINT, CS_WD_SIMP_INEQUALITIES_HOLD, CT_DELTA, CT_EPSILON, CT_GAMMA, CT_MAX_PLANNING_ITERATIONS, CT_MAX_PLANNING_TIME, CT_SAMPLING, DeleteAtlasRRTStatistics(), DeleteHeap(), DeleteStatistics(), DistanceTopology(), Tatlasrrt::dynamics, Error(), EXPLORATION_RRT, FALSE, GetElapsedTime(), GetParameter(), GetRRTNNInBall(), GetRRTNodeCost(), HEURISTIC_RRT_STAR, INF, InitAtlasRRTStatistics(), InitHeap(), InitStatistics(), IsRRTGraph(), Tatlasrrt::k, LessThanDoublePair(), Tatlasrrt::m, Tatlasrrt::ms, Tatlasrrt::nc, NEW, NewAtlasRRTChart(), NewAtlasRRTSample(), NO_UINT, Tatlasrrt::ns, Tatlasrrt::parallel, PointInBoxTopology(), PrintAtlasRRTStatistics(), ReconstructAtlasRRTPath(), RecursiveReWireRRTstar(), ReWireAtlasRRTstar(), Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, START2GOAL, Tatlasrrt::tp, TRUE, UpdateCostAndTree(), Tatlasrrt::w, and WireAtlasRRTstar(). Referenced by AtlasBiRRTstar(), and main(). ◆ AtlasBiRRTstar()
The same as AtlasRRTstar but here a bi-directional RRT is built.
Definition at line 7546 of file atlasrrt.c. References AccumulateAtlasRRTStatistics(), AddBranchToAtlasRRT(), AddEdgeToRRT(), AddStepToAtlasRRTstar(), AtlasBiRRTstarCloseIteration(), AtlasRRTSample(), AtlasRRTstar(), AtlasRRTValidateSample(), Tatlasrrt::birrt, BOTHTREES, ChangeBiRRTSteps(), CONNECT_SAMPLES, CopyDoublePair(), CopyRRTStep(), CT_DELTA, CT_GAMMA, CT_MAX_PLANNING_ITERATIONS, CT_MAX_PLANNING_TIME, CT_SAMPLING, DeleteAtlasRRTStatistics(), DeleteHeap(), DeleteStatistics(), DeleteVector(), DistanceTopology(), Tatlasrrt::dynamics, Error(), EXPLORATION_RRT, FALSE, GetElapsedTime(), GetParameter(), GetRRTNN(), GetRRTNNInBall(), GetRRTNodeCost(), GetRRTNodeTree(), GOAL2START, HEURISTIC_RRT_STAR, INF, InitAtlasRRTStatistics(), InitBranchConfig(), InitHeap(), InitStatistics(), InitVector(), IsRRTGraph(), Tatlasrrt::k, LessThanDoublePair(), Tatlasrrt::m, TAtlasRRTBranchConfig::maxLength, Tatlasrrt::ms, Tatlasrrt::nc, NEW, NewAtlasRRTChart(), NewAtlasRRTSample(), NO_UINT, Tatlasrrt::ns, Tatlasrrt::parallel, PrintAtlasRRTStatistics(), TAtlasRRTBranchState::reachedQrand, RecursiveReWireRRTstar(), ReWireAtlasRRTstar(), Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, START2GOAL, Steps2PathinAtlasRRT(), Tatlasrrt::tp, TRUE, UpdateBiRRTSteps(), and WireAtlasRRTstar(). Referenced by AtlasRRTstar(). ◆ GetAtlasRRTNumNodes()
Returns the number of nodes (samples) in the AtlasRRT.
Definition at line 7802 of file atlasrrt.c. References Tatlasrrt::ns. Referenced by main(). ◆ GetAtlasRRTNumCharts()
Returns the number of charts in the AtlasRRT.
Definition at line 7807 of file atlasrrt.c. References Tatlasrrt::nc. Referenced by main(). ◆ GetRRTNNInChart()
Selects the nearest neighbour from the random point in the chart including the random sample.
Definition at line 7812 of file atlasrrt.c. References Tatlasrrt::atlas, Tatlasrrt::birrt, Tatlasrrt::ci, DistanceTopologyMin(), Tatlasrrt::ds, GetAtlasChart(), GetRRTNodeTree(), INF, Tatlasrrt::k, TChartInfo::lc, TSampleInfo::lsc, Manifold2Chart(), NEW, NO_UINT, PrintVector(), Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, TSampleInfo::t, Time2Go(), and Tatlasrrt::tp. Referenced by AtlasRRTValidateSample(), and Time2GoNNToTree(). ◆ Time2GoNNToTree()
Determines the closest sample in a given tree to another sample (in the other tree) using the time2go metric. This gives the point of the tree from where it is more likely to connec to the given sample.
Definition at line 7869 of file atlasrrt.c. References Tatlasrrt::atlas, Tatlasrrt::chartsAtTree1, Tatlasrrt::chartsAtTree2, Tatlasrrt::ds, Error(), GetAtlasChart(), GetChartCenter(), GetRRTNNInChart(), GetRRTNodeTree(), GOAL2START, INF, Tatlasrrt::k, Manifold2Chart(), Tatlasrrt::nct1, Tatlasrrt::nct2, NEW, NEWZ, NO_UINT, Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, START2GOAL, T2G_METRIC_NN_CONNECT, Time2Go(), and Tatlasrrt::tp. Referenced by AtlasRRT(). ◆ PlotAtlasRRT()
Combines the plot of the Atlas and the RRT.
Definition at line 7955 of file atlasrrt.c. References Tatlasrrt::atlas, Tatlasrrt::birrt, TSampleInfo::c, Close3dObject(), ClosePlot3d(), CORRECT_POINT_PLOT, CreateFileName(), CS_WD_REGENERATE_ORIGINAL_POINT, CT_CUT_X, CT_CUT_Y, CT_CUT_Z, DeleteColor(), DeleteFileName(), FALSE, GetAtlasChart(), GetFileFullName(), GetParameter(), GetRRTNodeTree(), GetRRTParent(), GOAL2START, InitPlot3d(), Tatlasrrt::k, Local2Global(), Tatlasrrt::m, NEW, NewColor(), Tatlasrrt::ns, PLOT3D_EXT, PLOT_AS_POLYGONS, PlotAtlas(), PlotRRT(), PlotVect3d(), Tatlasrrt::rrt, TSampleInfo::s, Tatlasrrt::si, START2GOAL, StartNew3dObject(), TSampleInfo::t, and Tatlasrrt::w. Referenced by main(). ◆ AtlasRRTMemSize()
Returns the approximated memory used (in bytes) by a given atlasRRT.
Definition at line 8182 of file atlasrrt.c. References Tatlasrrt::atlas, AtlasMemSize(), Tatlasrrt::rrt, and RRTMemSize(). Referenced by main(). ◆ SaveAtlasRRT()
Stores the atlasRRT as a normal atlas and a RRT than can be latter read/plotted with the usual programs. Note that this does not save all the information stored in the AtlasRRT but only that necessary for plotting.
Definition at line 8192 of file atlasrrt.c. References Tatlasrrt::atlas, ATLAS_EXT, ATLAS_RRT_EXT, Tatlasrrt::birrt, Tatlasrrt::ce, Tatlasrrt::chartsAtTree1, Tatlasrrt::chartsAtTree2, Tatlasrrt::ci, CreateFileName(), Tatlasrrt::da, DeleteFileName(), Tatlasrrt::dge, Tatlasrrt::dynamics, Tatlasrrt::e, Error(), GetFileFullName(), Tatlasrrt::k, Tatlasrrt::m, Tatlasrrt::mc, Tatlasrrt::mct1, Tatlasrrt::mct2, Tatlasrrt::ms, Tatlasrrt::nc, Tatlasrrt::nct1, Tatlasrrt::nct2, Tatlasrrt::ns, Tatlasrrt::r, Tatlasrrt::rrt, RRT_EXT, SaveAtlas(), SaveAtlasRRTChartInfo(), SaveAtlasRRTSampleInfo(), SaveRRT(), and Tatlasrrt::si. Referenced by main(). ◆ LoadAtlasRRT()
Construct an atlasRRT from the information previously stored in a file by SaveAtlasRRT.
Definition at line 8255 of file atlasrrt.c. References Tatlasrrt::ambient, Tatlasrrt::atlas, ATLAS_EXT, ATLAS_RRT_EXT, Tatlasrrt::birrt, Tatlasrrt::ce, Tatlasrrt::chartsAtTree1, Tatlasrrt::chartsAtTree2, Tatlasrrt::ci, CreateFileName(), CS_WD_GENERATE_SIMP_INITIAL_BOX, CS_WD_GET_SIMP_JACOBIAN, Tatlasrrt::da, DeleteFileName(), Tatlasrrt::dge, Tatlasrrt::ds, Tatlasrrt::dynamics, Tatlasrrt::e, Error(), FALSE, GetFileFullName(), GetRRTTopology(), GetRRTWeights(), INF, InitDynamicSpace(), Tatlasrrt::J, Tatlasrrt::k, LoadAtlas(), LoadAtlasRRTChartInfo(), LoadAtlasRRTSampleInfo(), LoadRRT(), Tatlasrrt::m, Tatlasrrt::mc, Tatlasrrt::mct1, Tatlasrrt::mct2, Tatlasrrt::ms, Tatlasrrt::nc, Tatlasrrt::nct1, Tatlasrrt::nct2, NEW, Tatlasrrt::ns, Tatlasrrt::parallel, Tatlasrrt::r, Tatlasrrt::rrt, RRT_EXT, Tatlasrrt::si, Tatlasrrt::tp, Tatlasrrt::w, and Tatlasrrt::weights. Referenced by main(). ◆ PrintAtlasRRTDefines()
Prints the defines in atlasrrt.h This is used only for debug purposes.
Definition at line 8359 of file atlasrrt.c. References ADJUST_SA, ATLASRRT_DYNAMIC_CONNECT, ATLASRRT_VERBOSE, DEBUG_SIMULATION, DYNAMICS_ADD_ALL, GET_ATLASRRT_GLOBAL_CURV_CHECK, GET_ATLASRRT_STATISTICS, NN_IN_CHART, NN_IN_NEIGHBOUR_CHART, PrintAtlasDefines(), PrintDynamicsDefines(), PrintRRTDefines(), RANDOM_INT_TIME, RANDOMIZED_LQR, REJECT_USING_DYNAMIC_CONE, RELINEALIZE_DYNAMICS, REPEAT_CHARTS, and REVISIT_CHARTS. Referenced by main(). ◆ DeleteAtlasRRT()
Deletes the information stored in the RRT.
Definition at line 8382 of file atlasrrt.c. References Tatlasrrt::ambient, Tatlasrrt::atlas, Tatlasrrt::birrt, Tatlasrrt::chartsAtTree1, Tatlasrrt::chartsAtTree2, Tatlasrrt::ci, DeleteAtlas(), DeleteBox(), DeleteDynamicSpace(), DeleteJacobian(), DeleteRRT(), Tatlasrrt::ds, Tatlasrrt::dynamics, Tatlasrrt::J, Tatlasrrt::nc, Tatlasrrt::ns, Tatlasrrt::parallel, Tatlasrrt::rrt, Tatlasrrt::si, and TSampleInfo::t. Referenced by main(). |
Follow us!