|
16 | 16 | import us.ihmc.euclid.tuple3D.Point3D; |
17 | 17 | import us.ihmc.euclid.tuple3D.Vector3D; |
18 | 18 | import us.ihmc.graphicsDescription.yoGraphics.YoGraphicsListRegistry; |
| 19 | +import us.ihmc.robotics.MathTools; |
19 | 20 | import us.ihmc.robotics.geometry.FrameConvexPolygon2d; |
20 | 21 | import us.ihmc.robotics.geometry.FramePose; |
21 | 22 | import us.ihmc.robotics.geometry.PlanarRegion; |
@@ -54,7 +55,7 @@ public class SwingOverPlanarRegionsTrajectoryExpander |
54 | 55 | private final RecyclingArrayList<FramePoint3D> adjustedWaypoints; |
55 | 56 | private final double minimumSwingHeight; |
56 | 57 | private final double maximumSwingHeight; |
57 | | - private final double soleToToeLength; |
| 58 | + private double collisionSphereRadius; |
58 | 59 |
|
59 | 60 | private final SphereWithConvexPolygonIntersector sphereWithConvexPolygonIntersector; |
60 | 61 | private final Map<SwingOverPlanarRegionsTrajectoryCollisionType, FramePoint3D> closestPolygonPointMap; |
@@ -106,8 +107,7 @@ public SwingOverPlanarRegionsTrajectoryExpander(WalkingControllerParameters walk |
106 | 107 | walkingControllerParameters.getSteppingParameters().getMaxSwingHeightFromStanceFoot(), parentRegistry, graphicsListRegistry); |
107 | 108 | minimumSwingHeight = walkingControllerParameters.getSteppingParameters().getMinSwingHeightFromStanceFoot(); |
108 | 109 | maximumSwingHeight = walkingControllerParameters.getSteppingParameters().getMaxSwingHeightFromStanceFoot(); |
109 | | - soleToToeLength = walkingControllerParameters.getSteppingParameters().getActualFootLength() / 2.0; |
110 | | - System.out.println("soltotoelength: " + soleToToeLength); |
| 110 | + collisionSphereRadius = walkingControllerParameters.getSteppingParameters().getActualFootLength() / 2.0; |
111 | 111 |
|
112 | 112 | numberOfCheckpoints = new YoInteger(namePrefix + "NumberOfCheckpoints", parentRegistry); |
113 | 113 | numberOfTriesCounter = new YoCounter(namePrefix + "NumberOfTriesCounter", parentRegistry); |
@@ -201,12 +201,12 @@ public double expandTrajectoryOverPlanarRegions(FramePose stanceFootPose, FrameP |
201 | 201 |
|
202 | 202 | tempPlaneNormal.sub(swingEndPosition.getPoint(), swingStartPosition.getPoint()); |
203 | 203 | tempPlaneNormal.normalize(); |
204 | | - tempPointOnPlane.scaleAdd(soleToToeLength, tempPlaneNormal, swingStartPosition.getPoint()); |
| 204 | + tempPointOnPlane.scaleAdd(collisionSphereRadius, tempPlaneNormal, swingStartPosition.getPoint()); |
205 | 205 | swingStartToeFacingSwingEndPlane.set(tempPointOnPlane, tempPlaneNormal); |
206 | 206 |
|
207 | 207 | tempPlaneNormal.sub(swingStartPosition.getPoint(), swingEndPosition.getPoint()); |
208 | 208 | tempPlaneNormal.normalize(); |
209 | | - tempPointOnPlane.scaleAdd(soleToToeLength, tempPlaneNormal, swingEndPosition.getPoint()); |
| 209 | + tempPointOnPlane.scaleAdd(collisionSphereRadius, tempPlaneNormal, swingEndPosition.getPoint()); |
210 | 210 | swingEndHeelFacingSwingStartPlane.set(tempPointOnPlane, tempPlaneNormal); |
211 | 211 |
|
212 | 212 | status.set(SwingOverPlanarRegionsTrajectoryExpansionStatus.SEARCHING_FOR_SOLUTION); |
@@ -244,7 +244,7 @@ private SwingOverPlanarRegionsTrajectoryExpansionStatus tryATrajectory(PlanarReg |
244 | 244 | solePoseReferenceFrame.setPositionAndUpdate(trajectoryPosition.getFrameTuple()); |
245 | 245 |
|
246 | 246 | footCollisionSphere.setToZero(WORLD); |
247 | | - footCollisionSphere.setRadius(soleToToeLength); |
| 247 | + footCollisionSphere.setRadius(collisionSphereRadius); |
248 | 248 | footCollisionSphere.getSphere3d().setPosition(solePoseReferenceFrame.getPosition()); |
249 | 249 |
|
250 | 250 | footCollisionSphere.changeFrame(WORLD); |
@@ -315,6 +315,11 @@ private SwingOverPlanarRegionsTrajectoryExpansionStatus tryATrajectory(PlanarReg |
315 | 315 | return SwingOverPlanarRegionsTrajectoryExpansionStatus.SOLUTION_FOUND; |
316 | 316 | } |
317 | 317 |
|
| 318 | + public void setCollisionSphereRadius(double collisionSphereRadius) |
| 319 | + { |
| 320 | + this.collisionSphereRadius = Math.max(0.0, collisionSphereRadius); |
| 321 | + } |
| 322 | + |
318 | 323 | private void updateClosestAndMostSevereIntersectionPoint(SwingOverPlanarRegionsTrajectoryCollisionType collisionType) |
319 | 324 | { |
320 | 325 | if (collisionType.ordinal() > this.mostSevereCollisionType.getEnumValue().ordinal()) |
|
0 commit comments