ps.setInitialConfig (q1); ps.addGoalConfig (q2) plotSphere (q2, cl, r, "sphere_q2", [0,1,0,1], 0.02) # same as robot nPointsPlot = 50 offsetOrientedPath = 2 # If remove oriented path computation in ProblemSolver, set to 1 instead of 2 plotFrame (r, "_", [0,0,1.5], 0.5) # First parabolas: vmax = 8m/s, mu = 1.2 cl.problem.setFrictionCoef(1.2); cl.problem.setMaxVelocityLim(4.5) plotCone (q1, cl, r, "cone2", "friction_cone2"); plotCone (q2, cl, r, "cone22", "friction_cone2") ps.clearRoadmap(); solveTime = ps.solve () # 0.312 s pahtId = ps.numberPaths()-offsetOrientedPath # path without orientation stuff samples = plotSampleSubPath (cl, r, pahtId, nPointsPlot, "path0", [0,0,1,1]) plotConeWaypoints (cl, pahtId, r, "wp0", "friction_cone2") plotSpheresWaypoints (cl, pahtId, r, "sphere_wp0", [0,0,1,1], 0.02) print "solve duration: " + str(solveTime) print "path length: " + str(ps.pathLength(pahtId)) print "number of waypoints: " + str(len(ps.getWaypoints (pahtId))) print "number of nodes: " + str(ps.numberNodes ()) cl.problem.getResultValues() # Second parabolas: vmax = 6.5m/s, mu = 0.5 plotCone (q1, cl, r, "cone1", "friction_cone"); plotCone (q2, cl, r, "cone12", "friction_cone") cl.problem.setFrictionCoef(0.5); cl.problem.setMaxVelocityLim(4.5) ps.clearRoadmap(); solveTime = ps.solve () # 0.9689 s pahtId = ps.numberPaths()-offsetOrientedPath samples = plotSampleSubPath (cl, r, pahtId, nPointsPlot, "path2", [1,0,0,1]) plotConeWaypoints (cl, pahtId, r, "wp2", "friction_cone")
ps.setInitialConfig (q1); ps.addGoalConfig (q2) offsetOrientedPath = 2 # If remove oriented path computation in ProblemSolver, set to 1 instead of 2 #plotFrame (r, 'frame_group', [0,0,0], 0.6) # First parabolas: vmax = 7m/s, mu = 1.2 cl.problem.setFrictionCoef(1.2); cl.problem.setMaxVelocityLim(7) ps.clearRoadmap(); solveTime = ps.solve () # 299 nodes pathId = ps.numberPaths()-offsetOrientedPath # path without orientation stuff pathSamples = plotSampleSubPath (cl, r, pathId, 70, "path0", [0,0,1,1]) plotCone (q1, cl, r, "cone_first", "friction_cone_SG2"); plotCone (q2, cl, r, "cone_second", "friction_cone_SG2") plotConeWaypoints (cl, pathId, r, "cone_wp_group", "friction_cone_WP2") gui.writeNodeFile('cone_wp_group','cones_path.dae') gui.writeNodeFile('cone_first','cone_start.dae') gui.writeNodeFile('cone_second','cone_goal.dae') # Second parabolas: vmax = 6.5m/s, mu = 0.5 # DO NOT SOLVE FIRST PATH BEFORE cl.problem.setFrictionCoef(0.5); cl.problem.setMaxVelocityLim(6.5) ps.clearRoadmap(); solveTime = ps.solve () # 4216 nodes .... 37848 edges pathId = ps.numberPaths()-offsetOrientedPath pathSamples = plotSampleSubPath (cl, r, pathId, 70, "path1", [1,0,0,1]) plotCone (q1, cl, r, "cone_first", "friction_cone"); plotCone (q2, cl, r, "cone_second", "friction_cone_SG") plotConeWaypoints (cl, pathId, r, "cone_wp_group", "friction_cone_WP")
#r.loadObstacleModel ("animals_description","inclined_plane_3d","inclined_plane_3d") r.loadObstacleModel ("animals_description","environment_3d","environment_3d") #r.loadObstacleModel ("animals_description","environment_3d_with_window","environment_3d_with_window") addLight (r, [-3,3,7,1,0,0,0], "li"); addLight (r, [3,-3,7,1,0,0,0], "li1") r(q11) q1 = cl.robot.projectOnObstacle (q11, 0.001); q2 = cl.robot.projectOnObstacle (q22, 0.001) robot.isConfigValid(q1); robot.isConfigValid(q2) ps.setInitialConfig (q1); ps.addGoalConfig (q2) ps.solve () # PROBLEM !! not finding solution for environment_3d_window with mu=0.5 V0max=6.5 Projectionshooter .... V0 or Vimp too much limiting ?? 'cause V0max=7 gives a too "easy" solution ... samples = plotSampleSubPath (cl, r, 0, 20, "curvy", [0,0.8,0.2,1]) plotConeWaypoints (cl, 0, r, "wp", "friction_cone") #ps.saveRoadmap ('/local/mcampana/devel/hpp/data/PARAB_envir3d_with_window.rdm') r.client.gui.setVisibility('robot/l_bounding_sphere',"OFF") samples = plotSampleSubPath (cl, r, 0, 20, "curvy", [0,0.8,0.2,1]) r(ps.configAtParam(0,0.001)) ps.pathLength(0) ps.getWaypoints (0) ## 3D Plot tools ## q0 = [0, 0, 5, 0, 0, 0, 1, 0, 0, 1, 0];
ps.setInitialConfig (q1); ps.addGoalConfig (q2) plotSphere (q2, cl, r, "sphere_q2", [0,1,0,1], 0.02) # same as robot nPointsPlot = 50 offsetOrientedPath = 2 # If remove oriented path computation in ProblemSolver, set to 1 instead of 2 plotFrame (r, "_", [0,0,2.8], 0.5) # First parabola(s): vmax = 6.8m/s, mu = 1.2 cl.problem.setFrictionCoef(1.2); cl.problem.setMaxVelocityLim(6.8) plotCone (q1, cl, r, "cone2", "friction_cone2"); plotCone (q2, cl, r, "cone22", "friction_cone2") ps.clearRoadmap(); solveTime = ps.solve () # 0.085 s pahtId = ps.numberPaths()-offsetOrientedPath # path without orientation stuff samples = plotSampleSubPath (cl, r, pahtId, nPointsPlot, "path0", [0,0,1,1]) plotConeWaypoints (cl, pahtId, r, "wp0", "friction_cone2") plotSpheresWaypoints (cl, pahtId, r, "sphere_wp0", [0,0,1,1], 0.02) print "solve duration: " + str(solveTime) print "path length: " + str(ps.pathLength(pahtId)) print "number of waypoints: " + str(len(ps.getWaypoints (pahtId))) print "number of nodes: " + str(ps.numberNodes ()) cl.problem.getResultValues () # Second parabola(s): vmax = 5.3m/s, mu = 0.5 plotCone (q1, cl, r, "cone1", "friction_cone"); plotCone (q2, cl, r, "cone12", "friction_cone") cl.problem.setFrictionCoef(0.5); cl.problem.setMaxVelocityLim(5.3) ps.clearRoadmap(); solveTime = ps.solve () # 0.738 s pahtId = ps.numberPaths()-offsetOrientedPath samples = plotSampleSubPath (cl, r, pahtId, nPointsPlot, "path2", [0.2,0.8,0.2,1])
plotFrame (r, "frame", [0,0,0], 0.5) plotPath (cl, 0, r, "pathy", 0.1) plotThetaPlane (q1, q2, r, "ThetaPlane") r.client.gui.removeFromGroup ("ThetaPlane", r.sceneName) r.client.gui.removeFromGroup ("ThetaPlanebis", r.sceneName) plotCone (q1, cl, r, 0.5, 0.4, "c1") plotCone (q2, cl, r, 0.5, 0.4, "c2") index = cl.robot.getConfigSize () - cl.robot.getExtraConfigSize () q = qa[::] plotStraightLine ([q [index],q [index+1],q [index+2]], q, r, "normale2") plotConeWaypoints (cl, 0, r, 0.5, 0.4, "wpcones") wp = cl.problem.getWaypoints (0) for i in np.arange(0, len(wp), 1): plotCone (wp[i], cl, r, 0.5, 0.4, "wpcones"+str(i)) tanTheta = (q2 [1] - q1 [1]) / (q2 [0] - q1 [0]) num_log = 22393 configs, xPlus_vector, xMinus_vector, zPlus_vector, zMinus_vector = parseIntersectionConePlane (num_log, '479: q: ', '480: x_plus: ', '481: x_minus: ', '482: z_x_plus: ', '483: z_x_minus: ') i = 0 plotStraightLine ([xPlus_vector[i], xPlus_vector[i]*tanTheta, zPlus_vector[i]], q1, r, "inter1") plotStraightLine ([xMinus_vector[i], xMinus_vector[i]*tanTheta, zMinus_vector[i]], q1, r, "inter2") i = 1 plotStraightLine ([xPlus_vector[i], xPlus_vector[i]*tanTheta, zPlus_vector[i]], q2, r, "inter33") plotStraightLine ([xMinus_vector[i], xMinus_vector[i]*tanTheta, zMinus_vector[i]], q2, r, "inter44")
# Plot a cone and rotate it! qCone = cl.robot.setOrientation (q2) # wp[15] coneName = "cone5" r.loadObstacleModel ("animals_description","friction_cone2",coneName) r.client.gui.applyConfiguration (coneName, qCone[0:7]) r.client.gui.refresh () #r.client.gui.removeFromGroup (coneName, r.sceneName) ## 3D Plot tools ## q0 = [0, 0, 5, 0, 0, 0, 1, 0, 0, 1, 0]; r(q0) plotFrame (r, "frame", [0,0,0], 0.5) plotCone (q, cl, r, "yep", "friction_cone2") plotConeWaypoints (cl, 0, r, "wp", "friction_cone2") plotThetaPlane (q1, q2, r, "ThetaPlane") r.client.gui.removeFromGroup ("ThetaPlane", r.sceneName) r.client.gui.removeFromGroup ("ThetaPlanebis", r.sceneName) #plotCone (q1, cl, r, 0.5, 0.4, "c1"); plotCone (q2, cl, r, 0.5, 0.4, "c2") index = cl.robot.getConfigSize () - cl.robot.getExtraConfigSize () q = q2[::] plotStraightLine ([q [index],q [index+1],q [index+2]], q, r, "normale2") ## Plot all cone waypoints: #plotConeWaypoints (cl, 0, r, 0.5, 0.4, "wpcones") wp = cl.problem.getWaypoints (0)
ps.setInitialConfig (q1); ps.addGoalConfig (q2) plotSphere (q2, cl, r, "sphere_q2", [0,1,0,1], 0.02) # same as robot nPointsPlot = 50 offsetOrientedPath = 2 # If remove oriented path computation in ProblemSolver, set to 1 instead of 2 plotFrame (r, 'frame_group', [0,0,0], 0.6) # First parabolas: vmax = 7m/s, mu = 1.2 cl.problem.setFrictionCoef(1.2); cl.problem.setMaxVelocityLim(7) plotCone (q1, cl, r, "cone_11", "friction_cone2"); plotCone (q2, cl, r, "cone_21", "friction_cone2") ps.clearRoadmap(); solveTime = ps.solve () pahtId = ps.numberPaths()-offsetOrientedPath # path without orientation stuff samples = plotSampleSubPath (cl, r, pahtId, nPointsPlot, "path0", [0,0,1,1]) plotConeWaypoints (cl, pahtId, r, "cone_wp_group", "friction_cone2") plotSpheresWaypoints (cl, pahtId, r, "sphere_wp_group", [0,0,1,1], 0.02) print "solve duration: " + str(solveTime) print "path length: " + str(ps.pathLength(pahtId)) print "number of waypoints: " + str(len(ps.getWaypoints (pahtId))) print "number of nodes: " + str(ps.numberNodes ()) cl.problem.getResultValues () # Second parabolas: vmax = 6.5m/s, mu = 0.5 plotCone (q1, cl, r, "cone12", "friction_cone"); plotCone (q2, cl, r, "cone22", "friction_cone") cl.problem.setFrictionCoef(0.5); cl.problem.setMaxVelocityLim(6.5) ps.clearRoadmap(); solveTime = ps.solve () pahtId = ps.numberPaths()-offsetOrientedPath samples = plotSampleSubPath (cl, r, pahtId, nPointsPlot, "path2", [0.9,0.1,0.1,1]) # Red plotConeWaypoints (cl, pahtId, r, "cone_wp_group2", "friction_cone")
r(ps.configAtParam(0,0.001)) ps.pathLength(0) wp = ps.getWaypoints (0) r.client.gui.setVisibility('robot/l_bounding_sphere',"OFF") ## 3D Plot tools ## q0 = [0, 0, 5, 0, 0, 0, 1, 0, 0, 1, 0]; r(q0) plotFrame (r, "frame", [0,0,4], 0.5) plotThetaPlane (q1, q2, r, "ThetaPlane") plotCone (q2, cl, r, "yep", "friction_cone2") plotConeWaypoints (cl, 0, r, "wp", "friction_cone") plotConeWaypoints (cl, 1, r, "wp2", "friction_cone") index = cl.robot.getConfigSize () - cl.robot.getExtraConfigSize () q = q2[::] plotStraightLine ([q[index], q[index+1], q[index+2]], q, r, "normale") # --------------------------------------------------------------------# ## Video capture ## import time pp.dt = 0.01; pp.speed=0.5 r(q1) r.startCapture ("capture","png") r(q1); time.sleep(0.2); r(q1) pp(0) #pp(ps.numberPaths()-1)
plotFrame(r, "frame", [0, 0, 0], 0.5) plotPath(cl, 0, r, "pathy", 0.1) plotThetaPlane(q1, q2, r, "ThetaPlane") r.client.gui.removeFromGroup("ThetaPlane", r.sceneName) r.client.gui.removeFromGroup("ThetaPlanebis", r.sceneName) plotCone(q1, cl, r, 0.5, 0.4, "c1") plotCone(q2, cl, r, 0.5, 0.4, "c2") index = cl.robot.getConfigSize() - cl.robot.getExtraConfigSize() q = qa[::] plotStraightLine([q[index], q[index + 1], q[index + 2]], q, r, "normale2") plotConeWaypoints(cl, 0, r, 0.5, 0.4, "wpcones") wp = cl.problem.getWaypoints(0) for i in np.arange(0, len(wp), 1): plotCone(wp[i], cl, r, 0.5, 0.4, "wpcones" + str(i)) tanTheta = (q2[1] - q1[1]) / (q2[0] - q1[0]) num_log = 22393 configs, xPlus_vector, xMinus_vector, zPlus_vector, zMinus_vector = parseIntersectionConePlane( num_log, '479: q: ', '480: x_plus: ', '481: x_minus: ', '482: z_x_plus: ', '483: z_x_minus: ') i = 0 plotStraightLine( [xPlus_vector[i], xPlus_vector[i] * tanTheta, zPlus_vector[i]], q1, r, "inter1") plotStraightLine( [xMinus_vector[i], xMinus_vector[i] * tanTheta, zMinus_vector[i]], q1, r,