Skip to content

Commit 9c65776

Browse files
committed
Finish feature/end-to-end-planner-tests
1 parent c33cddd commit 9c65776

File tree

5 files changed

+291
-10
lines changed

5 files changed

+291
-10
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package us.ihmc.atlas.roughTerrainWalking;
2+
3+
import us.ihmc.atlas.AtlasRobotModel;
4+
import us.ihmc.atlas.AtlasRobotVersion;
5+
import us.ihmc.avatar.drcRobot.DRCRobotModel;
6+
import us.ihmc.avatar.drcRobot.RobotTarget;
7+
import us.ihmc.avatar.roughTerrainWalking.AvatarBipedalFootstepPlannerEndToEndTest;
8+
import us.ihmc.simulationConstructionSetTools.bambooTools.BambooTools;
9+
10+
public class AtlasBipedalFootstepPlannerEndToEndTest extends AvatarBipedalFootstepPlannerEndToEndTest
11+
{
12+
@Override
13+
public DRCRobotModel getRobotModel()
14+
{
15+
return new AtlasRobotModel(AtlasRobotVersion.ATLAS_UNPLUGGED_V5_NO_HANDS, RobotTarget.SCS, false);
16+
}
17+
18+
@Override
19+
public String getSimpleRobotName()
20+
{
21+
return BambooTools.getSimpleRobotNameFor(BambooTools.SimpleRobotNameKeys.ATLAS);
22+
}
23+
}

CommonWalkingControlModules/src/us/ihmc/commonWalkingControlModules/trajectories/SwingOverPlanarRegionsTrajectoryExpander.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import us.ihmc.euclid.tuple3D.Point3D;
1717
import us.ihmc.euclid.tuple3D.Vector3D;
1818
import us.ihmc.graphicsDescription.yoGraphics.YoGraphicsListRegistry;
19+
import us.ihmc.robotics.MathTools;
1920
import us.ihmc.robotics.geometry.FrameConvexPolygon2d;
2021
import us.ihmc.robotics.geometry.FramePose;
2122
import us.ihmc.robotics.geometry.PlanarRegion;
@@ -54,7 +55,7 @@ public class SwingOverPlanarRegionsTrajectoryExpander
5455
private final RecyclingArrayList<FramePoint3D> adjustedWaypoints;
5556
private final double minimumSwingHeight;
5657
private final double maximumSwingHeight;
57-
private final double soleToToeLength;
58+
private double collisionSphereRadius;
5859

5960
private final SphereWithConvexPolygonIntersector sphereWithConvexPolygonIntersector;
6061
private final Map<SwingOverPlanarRegionsTrajectoryCollisionType, FramePoint3D> closestPolygonPointMap;
@@ -106,8 +107,7 @@ public SwingOverPlanarRegionsTrajectoryExpander(WalkingControllerParameters walk
106107
walkingControllerParameters.getSteppingParameters().getMaxSwingHeightFromStanceFoot(), parentRegistry, graphicsListRegistry);
107108
minimumSwingHeight = walkingControllerParameters.getSteppingParameters().getMinSwingHeightFromStanceFoot();
108109
maximumSwingHeight = walkingControllerParameters.getSteppingParameters().getMaxSwingHeightFromStanceFoot();
109-
soleToToeLength = walkingControllerParameters.getSteppingParameters().getActualFootLength() / 2.0;
110-
System.out.println("soltotoelength: " + soleToToeLength);
110+
collisionSphereRadius = walkingControllerParameters.getSteppingParameters().getActualFootLength() / 2.0;
111111

112112
numberOfCheckpoints = new YoInteger(namePrefix + "NumberOfCheckpoints", parentRegistry);
113113
numberOfTriesCounter = new YoCounter(namePrefix + "NumberOfTriesCounter", parentRegistry);
@@ -201,12 +201,12 @@ public double expandTrajectoryOverPlanarRegions(FramePose stanceFootPose, FrameP
201201

202202
tempPlaneNormal.sub(swingEndPosition.getPoint(), swingStartPosition.getPoint());
203203
tempPlaneNormal.normalize();
204-
tempPointOnPlane.scaleAdd(soleToToeLength, tempPlaneNormal, swingStartPosition.getPoint());
204+
tempPointOnPlane.scaleAdd(collisionSphereRadius, tempPlaneNormal, swingStartPosition.getPoint());
205205
swingStartToeFacingSwingEndPlane.set(tempPointOnPlane, tempPlaneNormal);
206206

207207
tempPlaneNormal.sub(swingStartPosition.getPoint(), swingEndPosition.getPoint());
208208
tempPlaneNormal.normalize();
209-
tempPointOnPlane.scaleAdd(soleToToeLength, tempPlaneNormal, swingEndPosition.getPoint());
209+
tempPointOnPlane.scaleAdd(collisionSphereRadius, tempPlaneNormal, swingEndPosition.getPoint());
210210
swingEndHeelFacingSwingStartPlane.set(tempPointOnPlane, tempPlaneNormal);
211211

212212
status.set(SwingOverPlanarRegionsTrajectoryExpansionStatus.SEARCHING_FOR_SOLUTION);
@@ -244,7 +244,7 @@ private SwingOverPlanarRegionsTrajectoryExpansionStatus tryATrajectory(PlanarReg
244244
solePoseReferenceFrame.setPositionAndUpdate(trajectoryPosition.getFrameTuple());
245245

246246
footCollisionSphere.setToZero(WORLD);
247-
footCollisionSphere.setRadius(soleToToeLength);
247+
footCollisionSphere.setRadius(collisionSphereRadius);
248248
footCollisionSphere.getSphere3d().setPosition(solePoseReferenceFrame.getPosition());
249249

250250
footCollisionSphere.changeFrame(WORLD);
@@ -315,6 +315,11 @@ private SwingOverPlanarRegionsTrajectoryExpansionStatus tryATrajectory(PlanarReg
315315
return SwingOverPlanarRegionsTrajectoryExpansionStatus.SOLUTION_FOUND;
316316
}
317317

318+
public void setCollisionSphereRadius(double collisionSphereRadius)
319+
{
320+
this.collisionSphereRadius = Math.max(0.0, collisionSphereRadius);
321+
}
322+
318323
private void updateClosestAndMostSevereIntersectionPoint(SwingOverPlanarRegionsTrajectoryCollisionType collisionType)
319324
{
320325
if (collisionType.ordinal() > this.mostSevereCollisionType.getEnumValue().ordinal())

IHMCAvatarInterfaces/src/us/ihmc/avatar/networkProcessor/footstepPlanningToolboxModule/FootstepDataListWithSwingOverTrajectoriesAssembler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,9 @@ public FootstepDataListMessage assemble(List<Footstep> footstepList, double swin
178178
footstepDataListMessage.setExecutionMode(executionMode);
179179
return footstepDataListMessage;
180180
}
181+
182+
public void setCollisionSphereRadius(double collisionSphereRadius)
183+
{
184+
this.swingOverPlanarRegionsTrajectoryExpander.setCollisionSphereRadius(collisionSphereRadius);
185+
}
181186
}

IHMCAvatarInterfaces/src/us/ihmc/avatar/networkProcessor/footstepPlanningToolboxModule/FootstepPlanningToolboxController.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
public class FootstepPlanningToolboxController extends ToolboxController
6464
{
6565
private final boolean visualize = true;
66+
private HumanoidRobotDataReceiver robotDataReceiver;
6667

6768
private enum Planners
6869
{
@@ -88,7 +89,8 @@ private enum Planners
8889
private final WalkingControllerParameters walkingControllerParameters;
8990
private final FootstepDataListWithSwingOverTrajectoriesAssembler footstepDataListWithSwingOverTrajectoriesAssembler;
9091
private final FootstepNodeExpansion expansion;
91-
92+
93+
private final double collisionSphereRadius = 0.2;
9294
private final PacketCommunicator packetCommunicator;
9395
private long plannerCount = 0;
9496
private double dt;
@@ -115,6 +117,7 @@ public FootstepPlanningToolboxController(DRCRobotModel drcRobotModel, FullHumano
115117

116118
humanoidReferenceFrames = createHumanoidReferenceFrames(fullHumanoidRobotModel);
117119
footstepDataListWithSwingOverTrajectoriesAssembler = new FootstepDataListWithSwingOverTrajectoriesAssembler(humanoidReferenceFrames, walkingControllerParameters, parentRegistry, new YoGraphicsListRegistry());
120+
footstepDataListWithSwingOverTrajectoriesAssembler.setCollisionSphereRadius(collisionSphereRadius);
118121

119122
plannerMap.put(Planners.PLANAR_REGION_BIPEDAL, createPlanarRegionBipedalPlanner(contactPointsInSoleFrame, fullHumanoidRobotModel));
120123
plannerMap.put(Planners.PLAN_THEN_SNAP, new PlanThenSnapPlanner(new TurnWalkTurnPlanner(), contactPointsInSoleFrame));
@@ -134,7 +137,7 @@ private PlanarRegionBipedalFootstepPlanner createPlanarRegionBipedalPlanner(Side
134137
footstepPlanner.setFeetPolygons(footPolygonsInSoleFrame, footPolygonsInSoleFrame);
135138
footstepPlanner.setMaximumNumberOfNodesToExpand(Integer.MAX_VALUE);
136139
footstepPlanner.setExitAfterInitialSolution(false);
137-
footstepPlanner.setTimeout(5.0);
140+
footstepPlanner.setTimeout(20.0);
138141

139142
if (visualize)
140143
{
@@ -149,8 +152,9 @@ private PlanarRegionBipedalFootstepPlanner createPlanarRegionBipedalPlanner(Side
149152
@Override
150153
protected void updateInternal()
151154
{
155+
robotDataReceiver.updateRobotModel();
152156
toolboxTime.add(dt);
153-
if (toolboxTime.getDoubleValue() > 10.0)
157+
if (toolboxTime.getDoubleValue() > 20.0)
154158
{
155159
reportMessage(packResult(null, FootstepPlanningResult.TIMED_OUT_BEFORE_SOLUTION));
156160
isDone.set(true);
@@ -272,7 +276,7 @@ public void receivedPacket(PlanarRegionsListMessage packet)
272276
public HumanoidReferenceFrames createHumanoidReferenceFrames(FullHumanoidRobotModel fullHumanoidRobotModel)
273277
{
274278
ForceSensorDataHolder forceSensorDataHolder = new ForceSensorDataHolder(Arrays.asList(fullHumanoidRobotModel.getForceSensorDefinitions()));
275-
HumanoidRobotDataReceiver robotDataReceiver = new HumanoidRobotDataReceiver(fullHumanoidRobotModel, forceSensorDataHolder);
279+
robotDataReceiver = new HumanoidRobotDataReceiver(fullHumanoidRobotModel, forceSensorDataHolder);
276280

277281
packetCommunicator.attachListener(RobotConfigurationData.class, robotDataReceiver);
278282
return robotDataReceiver.getReferenceFrames();
@@ -301,6 +305,7 @@ private FootstepPlanningToolboxOutputStatus packResult(FootstepPlan footstepPlan
301305
}
302306
else
303307
{
308+
System.out.println("Found a plan!");
304309
if (planarRegionsList.isPresent())
305310
{
306311
PrintTools.debug(this, "Planar regions present. Assembling footstep data list message");

0 commit comments

Comments
 (0)