You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Sequence of Actions in Isaac Lab and Isaac Lab installation #3701
Hello everyone. I have some questions regarding a project that involves pick and place using a UR10e with a Robotiq gripper.
The first question is how I can create a sequence of actions for the training part? In my project robot goes to the first object ( and hits it), but does not go into the picking stage.
The second question is how I can reset the position of the objects (cubes) in every episode? When the robot hits the cubes, they remain there for the rest of the training.
The third question is about the released version of Isaac Lab. I have installed it by cloning the whole repository and then using the --install command. But when I use pip show Isaaclab, it shows the version 0.46.3 ! tried multiple times, but still the version is not 2.2.x !
Hi, For you third question on the release version checking, you can check the VERSION file in you checked out repo, that should show the Isaac Lab version you're using.
What you checked with pip show isaaclab is the isaaclab extension version which contains the core framework of Isaac Lab, you can see its change log here
The robot should follow a sequence: approach the object, position the gripper, grasp (close gripper), lift, move to the target location, and release (open gripper). Usually, the main reason the robot "hits" the object but does not pick is incorrect sequencing or an incomplete action definition.
Use the Manipulator and Gripper API: Define a state machine or a sequence of "stages" in your script: approach (IK to pre-grasp pose), pick (close gripper), place (move via IK), release (open gripper).
Key Example: The official Isaac Sim pick-and-place tutorial demonstrates controlling UR10e with the Robotiq gripper using the Lula kinematics solver for IK. Ensure each stage is defined in code, e.g.:
# Example pseudo-steps in gripper_control.pyrobot.move_to(pre_grasp_pose)
gripper.close() # grasprobot.move_to(place_pose)
gripper.open() # release
Review standalone_examples/api/isaacsim.robot.manipulators/ur10e/gripper_control.py and follow_target_example.py for reference implementations. Confirm that gripper actions are sequenced after the robot reaches the pre-grasp pose. If stuck at "hit object", debug IK targets and timing between motion and gripper commands.
Resetting Cube Positions in Every Episode
When running episodic RL or training, objects (cubes) should be reset for every episode to initial or randomized positions.
Use the Python API to Reset Objects: For each episode, set the transforms of cubes back to their original or randomly chosen positions:
fromomni.isaac.core.objectsimportDynamicCuboid# reference to your cube object:cube=DynamicCuboid(prim_path="/World/Cube", ...)
cube.set_world_pose(position=np.array([x, y, z]), orientation=np.array([0, 0, 0, 1]))
Place this code inside the environment's reset function so the cubes are relocated at the start of each episode.
The robot should follow a sequence: approach the object, position the gripper, grasp (close gripper), lift, move to the target location, and release (open gripper). Usually, the main reason the robot "hits" the object but does not pick is incorrect sequencing or an incomplete action definition.
Use the Manipulator and Gripper API: Define a state machine or a sequence of "stages" in your script: approach (IK to pre-grasp pose), pick (close gripper), place (move via IK), release (open gripper).
Key Example: The official Isaac Sim pick-and-place tutorial demonstrates controlling UR10e with the Robotiq gripper using the Lula kinematics solver for IK. Ensure each stage is defined in code, e.g.:
Example pseudo-steps in gripper_control.py
robot.move_to(pre_grasp_pose)
gripper.close() # grasp
robot.move_to(place_pose)
gripper.open() # release
Review standalone_examples/api/isaacsim.robot.manipulators/ur10e/gripper_control.py and follow_target_example.py for reference implementations. Confirm that gripper actions are sequenced after the robot reaches the pre-grasp pose. If stuck at "hit object", debug IK targets and timing between motion and gripper commands.
Resetting Cube Positions in Every Episode
When running episodic RL or training, objects (cubes) should be reset for every episode to initial or randomized positions.
Use the Python API to Reset Objects: For each episode, set the transforms of cubes back to their original or randomly chosen positions:
from omni.isaac.core.objects import DynamicCuboid
reference to your cube object:
cube = DynamicCuboid(prim_path="/World/Cube", ...)
cube.set_world_pose(position=np.array([x, y, z]), orientation=np.array([0, 0, 0, 1]))
Place this code inside the environment's reset function so the cubes are relocated at the start of each episode.
I appreciate your response. If I use the IK, set the positions, and steps, what does the agent learn during the training? What will be the task for the Reinforcement Learning agent?
When you use inverse kinematics (IK) to set explicit positions and steps, those portions of behavior (exact joint trajectories and transitions between waypoints) are typically defined programmatically. What the Reinforcement Learning (RL) agent learns in such a setup is higher-level decision-making and skillful execution within the constraints of the environment, not the basic kinematic motions.
What Does the RL Agent Learn?
The agent learns which actions to select at each timestep to achieve a successful pick and place, even under variations such as object position, orientation, gripper calibration errors, and environmental disturbances.
RL agents learn to sequence lower-level primitives - such as moving towards an object, grasping, lifting, and placing - based on observations (object pose, end-effector state, etc.), often deciding robustly in challenging or randomized scenarios.
If the task setup uses programmatic IK and simple motion control, RL's role is often to determine the optimal timing (when) and parameters (where, how strongly), or to perform closed-loop adjustment in response to real-time feedback, uncertainty, or perturbations.
What Is the Task for the RL Agent?
Typical RL tasks for pick and place include:
Observe Environment: Input states such as joint positions, object locations, gripper status, and possibly camera data.
Decide Action: Output movement or manipulation command (joint targets, gripper close/open), possibly as high-level navigation points or direct velocity/position commands.
Maximize Reward: Design a reward function that incentivizes successful picks, accurate placements, minimal collisions, or efficient movements. For example:
Positive reward for grasping and lifting an object.
Additional reward for placing it precisely at the goal location.
Penalties for dropping, excessive force, or joint limit violations.
Learn Robust Strategies: Adapt to domain randomization (different cube positions, sizes, lighting, gripper calibration) so agent generalizes beyond a hardcoded script.
So even with IK and scripted steps, RL agents can learn the flexible policies that adapt to real conditions, disturbances, and perceptual uncertainty - making them critical for robust, autonomous manipulation tasks beyond simple pre-defined scripts or controllers.
When you use inverse kinematics (IK) to set explicit positions and steps, those portions of behavior (exact joint trajectories and transitions between waypoints) are typically defined programmatically. What the Reinforcement Learning (RL) agent learns in such a setup is higher-level decision-making and skillful execution within the constraints of the environment, not the basic kinematic motions.
What Does the RL Agent Learn?
The agent learns which actions to select at each timestep to achieve a successful pick and place, even under variations such as object position, orientation, gripper calibration errors, and environmental disturbances.
RL agents learn to sequence lower-level primitives - such as moving towards an object, grasping, lifting, and placing - based on observations (object pose, end-effector state, etc.), often deciding robustly in challenging or randomized scenarios.
If the task setup uses programmatic IK and simple motion control, RL's role is often to determine the optimal timing (when) and parameters (where, how strongly), or to perform closed-loop adjustment in response to real-time feedback, uncertainty, or perturbations.
What Is the Task for the RL Agent?
Typical RL tasks for pick and place include:
Observe Environment: Input states such as joint positions, object locations, gripper status, and possibly camera data.
Decide Action: Output movement or manipulation command (joint targets, gripper close/open), possibly as high-level navigation points or direct velocity/position commands.
Maximize Reward: Design a reward function that incentivizes successful picks, accurate placements, minimal collisions, or efficient movements. For example:
Positive reward for grasping and lifting an object.
Additional reward for placing it precisely at the goal location.
Penalties for dropping, excessive force, or joint limit violations.
Learn Robust Strategies: Adapt to domain randomization (different cube positions, sizes, lighting, gripper calibration) so agent generalizes beyond a hardcoded script.
So even with IK and scripted steps, RL agents can learn the flexible policies that adapt to real conditions, disturbances, and perceptual uncertainty - making them critical for robust, autonomous manipulation tasks beyond simple pre-defined scripts or controllers.
I did as you mentioned, but the robot does not track the target positions, and the movement of the robot is not desired! It seems like there is a problem in the Kinematic solver or the position definition! Here is the link to the 3 main files of my project.
Activity
PeterL-NV commentedon Oct 14, 2025
Hi, For you third question on the release version checking, you can check the
VERSIONfile in you checked out repo, that should show the Isaac Lab version you're using.What you checked with
pip show isaaclabis the isaaclab extension version which contains the core framework of Isaac Lab, you can see its change log herePeterL-NV commentedon Oct 15, 2025
Come back to your other two questions.
Creating a Pick and Place Action Sequence
The robot should follow a sequence: approach the object, position the gripper, grasp (close gripper), lift, move to the target location, and release (open gripper). Usually, the main reason the robot "hits" the object but does not pick is incorrect sequencing or an incomplete action definition.
Review
standalone_examples/api/isaacsim.robot.manipulators/ur10e/gripper_control.pyandfollow_target_example.pyfor reference implementations. Confirm that gripper actions are sequenced after the robot reaches the pre-grasp pose. If stuck at "hit object", debug IK targets and timing between motion and gripper commands.Resetting Cube Positions in Every Episode
When running episodic RL or training, objects (cubes) should be reset for every episode to initial or randomized positions.
Place this code inside the environment's reset function so the cubes are relocated at the start of each episode.
Ashkanpy commentedon Oct 19, 2025
I appreciate your response. If I use the IK, set the positions, and steps, what does the agent learn during the training? What will be the task for the Reinforcement Learning agent?
PeterL-NV commentedon Oct 20, 2025
When you use inverse kinematics (IK) to set explicit positions and steps, those portions of behavior (exact joint trajectories and transitions between waypoints) are typically defined programmatically. What the Reinforcement Learning (RL) agent learns in such a setup is higher-level decision-making and skillful execution within the constraints of the environment, not the basic kinematic motions.
What Does the RL Agent Learn?
What Is the Task for the RL Agent?
Typical RL tasks for pick and place include:
So even with IK and scripted steps, RL agents can learn the flexible policies that adapt to real conditions, disturbances, and perceptual uncertainty - making them critical for robust, autonomous manipulation tasks beyond simple pre-defined scripts or controllers.
Ashkanpy commentedon Oct 28, 2025
I did as you mentioned, but the robot does not track the target positions, and the movement of the robot is not desired! It seems like there is a problem in the Kinematic solver or the position definition! Here is the link to the 3 main files of my project.
https://github.com/Ashkanpy/Pick-place.git