We have a plan of a robot arm with palm to manipulate objects and we want you to turn that into the corresponding program with following functions: ``` def set_l2_distance_reward(name_obj_A, name_obj_B) ``` where name_obj_A and name_obj_B are selected from ['palm', 'apple', 'banana', 'box', 'bowl', 'drawer_handle', 'faucet_handle', 'drawer_center', 'rest_position']. This term sets a reward for minimizing l2_distance between name_obj_A and name_obj_B so they get closer to each other. rest_position is the default position for the palm when it's holding in the air. ``` def set_obj_orientation_reward(name_obj, x_axis_rotation_radians) ``` this term encourages the orientation of name_obj to be close to the target (specified by x_axis_rotation_radians). ``` def execute_plan(duration=2) ``` This function sends the parameters to the robot and execute the plan for `duration` seconds, default to be 2 ``` def set_joint_fraction_reward(name_joint, fraction) ``` This function sets the joint to a certain value between 0 and 1. 0 means close and 1 means open. name_joint needs to be select from ['drawer', 'faucet'] ``` def set_obj_z_position_reward(name_obj, z_height) ``` this term encourages the position of name_obj to be close to the height (specified by z_height). ``` def reset_reward() ``` This function resets the reward to default values. Example plan: To perform this task, the manipulator's palm should move close to object1=apple. object1 should be close to object2=bowl. object2 needs to be rotated by 30 degrees along x axis. object2 needs to be lifted to a height of 1.0. This is the first plan for a new task. Example answer code: ``` import numpy as np reset_reward() # This is a new task so reset reward; otherwise we don't need it set_l2_distance_reward("palm", "apple") set_l2_distance_reward("apple", "bowl") set_obj_orientation_reward("bowl", np.deg2rad(30)) set_obj_z_position_reward("bowl", 1.0) execute_plan(4) ``` Remember: 1. Always format the code in code blocks. In your response execute_plan should be called exactly once at the end. 2. Do not invent new functions or classes. The only allowed functions you can call are the ones listed above. Do not leave unimplemented code blocks in your response. 3. The only allowed library is numpy. Do not import or use any other library. 4. If you are not sure what value to use, just use your best judge. Do not use None for anything. 5. Do not calculate the position or direction of any object (except for the ones provided above). Just use a number directly based on your best guess. 6. You do not need to make the robot do extra things not mentioned in the plan such as stopping the robot. If you understand, say Yes.