Motion Gen result success is True but robot is still collides #285
Replies: 3 comments 4 replies
-
graph_slow.mp4Planning with the graph planner alone does result in a collision-free trajectory, but with a very small step size, which when executed results in a very slow movement. We are not sure how to control this step size. |
Beta Was this translation helpful? Give feedback.
-
This looks like a tracking problem where the low-level controller in sim is unable to track the trajectory generated by cuRobo. You can reduce the speed of the trajectory being planned by adding Change your code to below:
|
Beta Was this translation helpful? Give feedback.
-
Hi Bala, |
Beta Was this translation helpful? Give feedback.
-
Hi Curobo Team,
We are using Curobo to plan for the panda mobile, with simulation in MuJoCo DM Control. Our collision world is shown below
`physics.reset(0)
update_curobo_world(physics,world_config_panda1,'panda1/')
motion_gen_config_1 = MotionGenConfig.load_from_robot_config(
"franka_mobile.yml",
world_config_panda1,
interpolation_dt=0.01,
collision_checker_type=CollisionCheckerType.MESH,collision_activation_distance=0.01,trajopt_dt=0.05
)
motion_gen1 = MotionGen(motion_gen_config_1)
motion_gen1.warmup(parallel_finetune=True)
#retract_cfg = motion_gen.get_retract_config()
print("warm")
update_curobo_world(physics,world_config_panda1,'panda1/')
update_curobo_world(physics,world_config_panda1,'panda1/')
world_config_class=WorldConfig.from_dict(world_config_panda1)
motion_gen1.update_world(world_config_class)
goal_pose = Pose.from_list([0.7, 0.5, 0.5, 0.0, 1.0, 0.0, 0.0],q_xyzw=False,tensor_args=TensorDeviceType(dtype=torch.float32)) # x, y, z, qw, qx, qy, qz
start_state = JointState.from_position(
torch.tensor(physics.data.qpos[[0,1,2,3,4,5,6,7]],dtype=torch.float32).view(1,-1).cuda(),
#joint_names=[
#"shoulder_pan_joint",
#"shoulder_lift_joint",
#"elbow_joint",
#"wrist_1_joint",
#"wrist_2_joint",
#"wrist_3_joint",
#],
)
result = motion_gen1.plan_single(start_state, goal_pose, MotionGenPlanConfig(max_attempts=2,parallel_finetune=True,enable_graph=True,enable_opt=True))
traj = result.get_interpolated_plan() # result.optimized_dt has the dt between timesteps
print("Trajectory Generated: ", result.success)`
We get result.success as True, but when we execute the trajectory it appears to result in a collision
12.mp4
Is this a parameter-tuning problem? We are using graph planning to seed the optimizer. We found a mention of speed_metric but cannot seem to find how to use this. Activation distance helps slightly, but beyond 0.1, the planner fails to converge. For poses where the two arms are separated, the planner succeeds.
Beta Was this translation helpful? Give feedback.
All reactions