constrained planning, robot segmentation
This commit is contained in:
@@ -42,8 +42,9 @@ def plot_traj(trajectory, dt):
|
||||
axs[3].plot(timesteps, qddd[:, i], label=str(i))
|
||||
|
||||
plt.legend()
|
||||
# plt.savefig("test.png")
|
||||
plt.show()
|
||||
plt.savefig("test.png")
|
||||
plt.close()
|
||||
# plt.show()
|
||||
|
||||
|
||||
def plot_iters_traj(trajectory, d_id=1, dof=7, seed=0):
|
||||
@@ -140,37 +141,54 @@ def demo_motion_gen(js=False):
|
||||
world_file,
|
||||
tensor_args,
|
||||
interpolation_dt=0.01,
|
||||
# trajopt_dt=0.15,
|
||||
# velocity_scale=0.1,
|
||||
use_cuda_graph=True,
|
||||
# finetune_dt_scale=2.5,
|
||||
interpolation_steps=10000,
|
||||
)
|
||||
|
||||
motion_gen = MotionGen(motion_gen_config)
|
||||
motion_gen.warmup(parallel_finetune=True)
|
||||
|
||||
motion_gen.warmup(enable_graph=True, warmup_js_trajopt=js)
|
||||
robot_cfg = load_yaml(join_path(get_robot_configs_path(), robot_file))["robot_cfg"]
|
||||
robot_cfg = RobotConfig.from_dict(robot_cfg, tensor_args)
|
||||
# motion_gen.warmup(enable_graph=True, warmup_js_trajopt=js, parallel_finetune=True)
|
||||
# robot_cfg = load_yaml(join_path(get_robot_configs_path(), robot_file))["robot_cfg"]
|
||||
# robot_cfg = RobotConfig.from_dict(robot_cfg, tensor_args)
|
||||
retract_cfg = motion_gen.get_retract_config()
|
||||
state = motion_gen.rollout_fn.compute_kinematics(
|
||||
JointState.from_position(retract_cfg.view(1, -1))
|
||||
)
|
||||
|
||||
retract_pose = Pose(state.ee_pos_seq.squeeze(), quaternion=state.ee_quat_seq.squeeze())
|
||||
start_state = JointState.from_position(retract_cfg.view(1, -1) + 0.1)
|
||||
start_state = JointState.from_position(retract_cfg.view(1, -1))
|
||||
goal_state = start_state.clone()
|
||||
goal_state.position[..., 3] -= 0.1
|
||||
|
||||
start_state.position[0, 0] += 0.25
|
||||
# goal_state.position[0,0] += 0.5
|
||||
if js:
|
||||
result = motion_gen.plan_single_js(
|
||||
start_state,
|
||||
goal_state,
|
||||
MotionGenPlanConfig(
|
||||
max_attempts=1, enable_graph=False, enable_opt=True, enable_finetune_trajopt=True
|
||||
),
|
||||
MotionGenPlanConfig(max_attempts=1, parallel_finetune=True),
|
||||
)
|
||||
else:
|
||||
result = motion_gen.plan_single(
|
||||
start_state, retract_pose, MotionGenPlanConfig(max_attempts=1)
|
||||
start_state,
|
||||
retract_pose,
|
||||
MotionGenPlanConfig(
|
||||
max_attempts=1, parallel_finetune=True, enable_finetune_trajopt=True
|
||||
),
|
||||
)
|
||||
traj = result.get_interpolated_plan()
|
||||
print("Trajectory Generated: ", result.success, result.solve_time, result.status)
|
||||
print(
|
||||
"Trajectory Generated: ",
|
||||
result.success,
|
||||
result.solve_time,
|
||||
result.status,
|
||||
result.optimized_dt,
|
||||
)
|
||||
if PLOT and result.success.item():
|
||||
traj = result.get_interpolated_plan()
|
||||
|
||||
plot_traj(traj, result.interpolation_dt)
|
||||
# plt.save("test.png")
|
||||
# plt.close()
|
||||
@@ -261,6 +279,45 @@ def demo_motion_gen_batch():
|
||||
plot_traj(traj[1, : result.path_buffer_last_tstep[1], :].cpu().numpy())
|
||||
|
||||
|
||||
def demo_motion_gen_goalset():
|
||||
tensor_args = TensorDeviceType()
|
||||
world_file = "collision_cubby.yml"
|
||||
robot_file = "franka.yml"
|
||||
motion_gen_config = MotionGenConfig.load_from_robot_config(
|
||||
robot_file,
|
||||
world_file,
|
||||
tensor_args,
|
||||
collision_checker_type=CollisionCheckerType.PRIMITIVE,
|
||||
use_cuda_graph=True,
|
||||
num_trajopt_seeds=12,
|
||||
num_graph_seeds=1,
|
||||
num_ik_seeds=30,
|
||||
)
|
||||
motion_gen = MotionGen(motion_gen_config)
|
||||
robot_cfg = load_yaml(join_path(get_robot_configs_path(), robot_file))["robot_cfg"]
|
||||
robot_cfg = RobotConfig.from_dict(robot_cfg, tensor_args)
|
||||
retract_cfg = motion_gen.get_retract_config()
|
||||
state = motion_gen.rollout_fn.compute_kinematics(
|
||||
JointState.from_position(retract_cfg.view(1, -1))
|
||||
)
|
||||
|
||||
start_state = JointState.from_position(retract_cfg.view(1, -1) + 0.6)
|
||||
|
||||
state = motion_gen.compute_kinematics(JointState.from_position(retract_cfg.view(1, -1)))
|
||||
|
||||
goal_pose = Pose(
|
||||
state.ee_pos_seq.repeat(2, 1).view(1, -1, 3),
|
||||
quaternion=state.ee_quat_seq.repeat(2, 1).view(1, -1, 4),
|
||||
)
|
||||
goal_pose.position[0, 0, 0] -= 0.1
|
||||
|
||||
start_state = JointState.from_position(retract_cfg.view(1, -1) + 0.3)
|
||||
|
||||
m_config = MotionGenPlanConfig(False, True, num_trajopt_seeds=10)
|
||||
|
||||
result = motion_gen.plan_goalset(start_state, goal_pose, m_config)
|
||||
|
||||
|
||||
def demo_motion_gen_api():
|
||||
tensor_args = TensorDeviceType(device=torch.device("cuda:0"))
|
||||
interpolation_dt = 0.02
|
||||
@@ -373,8 +430,9 @@ def demo_motion_gen_batch_env(n_envs: int = 10):
|
||||
|
||||
if __name__ == "__main__":
|
||||
setup_curobo_logger("error")
|
||||
# demo_motion_gen(js=True)
|
||||
demo_motion_gen_batch()
|
||||
demo_motion_gen(js=False)
|
||||
# demo_motion_gen_batch()
|
||||
# demo_motion_gen_goalset()
|
||||
# n = [2, 10]
|
||||
# for n_envs in n:
|
||||
# demo_motion_gen_batch_env(n_envs=n_envs)
|
||||
|
||||
Reference in New Issue
Block a user