com.kuka.nav.fleet.graph.properties
Interface EdgeMotion

All Superinterfaces:
Property, Serializable
All Known Subinterfaces:
EdgeGoalBasedMotion, EdgeTrackingBasedMotion
All Known Implementing Classes:
AbstractEdgeMotionProperty, AbstractGoalBasedMotionProperty, EdgeAction

public interface EdgeMotion
extends Property

Interface defining access to common motion parameter values.


Method Summary
 boolean blocksCompleteEdge()
          Returns true if executing the corresponding motion requires the complete edge to be considered as blocked.
 com.kuka.nav.geometry.BlendingDiscretizationInfo computeBlendingPoses(com.kuka.nav.Pose start1, com.kuka.nav.Pose goal1, double blendingCart, EdgeMotion motion2, com.kuka.nav.Pose start2, com.kuka.nav.Pose goal2, com.kuka.nav.robot.DriveType type)
          Computes the blending poses on the blending segment and the actual blending radius.
 com.kuka.nav.geometry.BlendingContext getBlendingContext(com.kuka.nav.Pose start, com.kuka.nav.Pose goal)
          Gets the blending context for the specific motion (its more for internal usage, method computeBlendingPOses calls this method).
 com.kuka.nav.Position getClosestPointOnMotion(com.kuka.nav.Position start, com.kuka.nav.Position end, com.kuka.nav.Position position)
          Computes the point on this edge motion which is closest to the given position.
 EdgeMotion getCopyWithOrientation(double ori)
          Creates a copy of this edge motion which has no edge-orientations and the single goal orientation is the one given as input parameter.
 Collection<Double> getGoalOrientations(TopologyNode node)
          Returns a list containing all allowed goal orientations of this edge motion.
 List<com.kuka.nav.TupleSE2> getMotions(com.kuka.nav.TupleSE2 startPose, com.kuka.nav.Pose entryPose, com.kuka.nav.TupleSE2 goalPose, com.kuka.nav.Pose exitPose, double oriDelta)
          Returns a list of the relative motions (each motion is relative to the (global) end pose of the previous motion, the first one being relative the the global start pose of the vehicle) to be performed in order to travel this edge motion.
 Collection<Double> getPathOrientations()
          Returns a list containing all allowed path orientations of this edge motion.
 Collection<Double> getRelativeGoalOrientations(TopologyNode node)
          Returns a list containing all allowed goal orientations of this edge motion in radians and relative to the edge orientation, also known as line orientation.
 Collection<Double> getRelativeStartOrientations(TopologyNode node)
          Returns a list containing all allowed start orientations of this edge motion in radians and relative to the edge orientation, also known as line orientation.
 Collection<Double> getStartOrientations(TopologyNode node)
          Returns a list containing all allowed start orientations of this edge motion.
 boolean isBlendingSupported()
          Checks whether this edge motion supports blending.
 boolean isReachableOrientation(double startOri, double goalOri, double edgeAngle, double allowedOriDelta, com.kuka.nav.robot.DriveType drive)
          Checks whether the given goal orientation is reachable from the given start orientation based on this edge motion.
 boolean isRecoverable()
          Checks whether recovery actions (start- or path-recovery) are applicable to this motion property.
 boolean isRotationAllowed()
          Checks whether this edge motion allows the robot to rotate while moving along the corresponding edge.
 
Methods inherited from interface com.kuka.nav.fleet.graph.properties.Property
getAllowedTypes, getId, getValueToDisplay, setId
 

Method Detail

getStartOrientations

Collection<Double> getStartOrientations(TopologyNode node)
Returns a list containing all allowed start orientations of this edge motion. Each orientation is in radians and to be understood relative to the map coordinate system. An empty list means all orientations are allowed.

Parameters:
node - the topology node at the start position of this motion
Returns:
a list containing all allowed start orientations of this edge motion in [rad]

getRelativeStartOrientations

Collection<Double> getRelativeStartOrientations(TopologyNode node)
Returns a list containing all allowed start orientations of this edge motion in radians and relative to the edge orientation, also known as line orientation. An empty list means all orientations are allowed.

Parameters:
node - the topology node at the start position of this motion
Returns:
a list containing all allowed start orientations of this edge motion in [rad]

getGoalOrientations

Collection<Double> getGoalOrientations(TopologyNode node)
Returns a list containing all allowed goal orientations of this edge motion. Each orientation is in radians and to be understood relative to the map coordinate system.

Parameters:
node - the topology node at the goal position of this motion
Returns:
a list containing all allowed goal orientations of this edge motion in [rad]

getRelativeGoalOrientations

Collection<Double> getRelativeGoalOrientations(TopologyNode node)
Returns a list containing all allowed goal orientations of this edge motion in radians and relative to the edge orientation, also known as line orientation.

Parameters:
node - the topology node at the goal position of this motion
Returns:
a list containing all allowed goal orientations of this edge motion in [rad]

getPathOrientations

Collection<Double> getPathOrientations()
Returns a list containing all allowed path orientations of this edge motion. Path orientations are sometimes called edge orientations or line orientations. Each orientation is in radians and to be understood relative to the map coordinate system.

Returns:
a list containing all allowed path orientations of the edge motion in [rad]

isRotationAllowed

boolean isRotationAllowed()
Checks whether this edge motion allows the robot to rotate while moving along the corresponding edge.

Returns:
true if this edge motion allows rotation, false otherwise

isRecoverable

boolean isRecoverable()
Checks whether recovery actions (start- or path-recovery) are applicable to this motion property.

Returns:
true if and only if this motion property is recoverable.

isReachableOrientation

boolean isReachableOrientation(double startOri,
                               double goalOri,
                               double edgeAngle,
                               double allowedOriDelta,
                               com.kuka.nav.robot.DriveType drive)
Checks whether the given goal orientation is reachable from the given start orientation based on this edge motion.

Parameters:
startOri - the start orientation (in [rad] with respect to the global coordinate system)
goalOri - the goal orientation (in [rad] with respect to the global coordinate system)
edgeAngle - the angle of the edge where this motion is parameterized in [rad] with respect to the global coordinate system)
allowedOriDelta - the maximum difference until which orientation are considered equal
drive - the drive type of the vehicle
Returns:
true if this edge motion allows rotation from the given start to the given goal orientation, false otherwise

isBlendingSupported

boolean isBlendingSupported()
Checks whether this edge motion supports blending.

Returns:
true if this this edge motion supports blending.

blocksCompleteEdge

boolean blocksCompleteEdge()
Returns true if executing the corresponding motion requires the complete edge to be considered as blocked. Otherwise only start and goal pose are considered as blocked.

Returns:
true if executing the corresponding motion requires the complete edge to be considered as blocked

getMotions

List<com.kuka.nav.TupleSE2> getMotions(com.kuka.nav.TupleSE2 startPose,
                                       com.kuka.nav.Pose entryPose,
                                       com.kuka.nav.TupleSE2 goalPose,
                                       com.kuka.nav.Pose exitPose,
                                       double oriDelta)
Returns a list of the relative motions (each motion is relative to the (global) end pose of the previous motion, the first one being relative the the global start pose of the vehicle) to be performed in order to travel this edge motion. Depending on the type of the underlying motion, one or more subMotions are required.

Parameters:
startPose - the global pose in map coordinates where the motion would start if it was not blended to (usually the position of the source node of the edge enriched by the orientation at the node) --- note that this pose does not necessarily have to be reached by the robot if the motion is blended to
entryPose - the global pose in map coordinates where the robot completes the blending arc and reaches the actual motion, may not coincide with the start pose
goalPose - the global pose in map coordinates where the motion would be completed if it was not blended from (usually the position of the target node of the edge enriched by the orientation at the node), note that this does not have to be reached by the robot if the motion is blended from
exitPose - the global pose in map coordinates where the robot leaves the actual motion and starts blending to the next motion, may not coincide with the goal pose
oriDelta - the maximum difference until which orientation are considered equal
Returns:
a list of intermediate motions.

computeBlendingPoses

com.kuka.nav.geometry.BlendingDiscretizationInfo computeBlendingPoses(com.kuka.nav.Pose start1,
                                                                      com.kuka.nav.Pose goal1,
                                                                      double blendingCart,
                                                                      EdgeMotion motion2,
                                                                      com.kuka.nav.Pose start2,
                                                                      com.kuka.nav.Pose goal2,
                                                                      com.kuka.nav.robot.DriveType type)
Computes the blending poses on the blending segment and the actual blending radius. If blending is possible it includes at least start and end pose on blending (by default 2 additional poses on 33% and 66% of the path distance are returned, i.e. the returned list contains 4 poses). If blending is not possible the returned list is empty. This can only happen if the drive type is DriveType.DIFFERENTIAL and the relative orientations to the path at start and goal position differ.

Parameters:
start1 - start pose on edge 1
goal1 - goal pose on edge 1
blendingCart - blending parameter
motion2 - motion for second edge
start2 - start pose on edge 2
goal2 - goal pose on edge 2
type - drive type holonomic or differential
Returns:
the discretization information for the blending segment

getBlendingContext

com.kuka.nav.geometry.BlendingContext getBlendingContext(com.kuka.nav.Pose start,
                                                         com.kuka.nav.Pose goal)
Gets the blending context for the specific motion (its more for internal usage, method computeBlendingPOses calls this method).

Parameters:
start - start pose
goal - goal pose
Returns:
blending context

getClosestPointOnMotion

com.kuka.nav.Position getClosestPointOnMotion(com.kuka.nav.Position start,
                                              com.kuka.nav.Position end,
                                              com.kuka.nav.Position position)
Computes the point on this edge motion which is closest to the given position.

Parameters:
start - the start pose of the motion
end - the end pose of the motion
position - the position for which the closest point has to be computed
Returns:
the position on the motion which is closest to the given position.

getCopyWithOrientation

EdgeMotion getCopyWithOrientation(double ori)
Creates a copy of this edge motion which has no edge-orientations and the single goal orientation is the one given as input parameter. Otherwise, the copied motion has the same properties.

Returns:
the copy.


Copyright © 2019. All rights reserved.