I am working with articulations in Isaac Sim 5.1. I created a prismatic joint between two objects and applied forward and backward motion. The joint moves forward correctly, but when I command it to move backward, it does not move. Can someone suggest a solution for this issue? The code and usd model, I am using is shown below.
import numpy as np
from isaacsim.core.utils.stage import add_reference_to_stage
from isaacsim.core.prims import SingleArticulation
from isaacsim.core.utils.types import ArticulationAction
from isaacsim.core.api.world import World
import asyncio
async def robot_control_example():
# Reset world if already running
if World.instance():
World.instance().clear_instance()
world = World()
await world.initialize_simulation_context_async()
world.scene.add_default_ground_plane()
# Load USD
usd_path = "/home/v-b-naik/SVC_II/Script/Script_06Nov_25/assets/New_CAD/Example_prismatic_joint.usd"
prim_path = "/World/envs/env_0/Diver_V0_rev_joints1"
add_reference_to_stage(usd_path, prim_path)
# Create articulation
robot = SingleArticulation(prim_path=prim_path)
await world.reset_async()
robot.initialize()
print("DOF:", robot.num_dof)
await world.play_async()
# Zero velocities
robot.set_joint_velocities(np.zeros(robot.num_dof))
# Helper function to move robot
async def move_joint(target_positions, steps=30, description="Moving"):
action = ArticulationAction(joint_positions=target_positions)
print(f"{description} to {target_positions[0]} ...")
for _ in range(steps):
robot.apply_action(action)
await world.step_async()
# Target positions
target_pos_forward = np.zeros(robot.num_dof)
target_pos_forward[0] = -0.7
target_pos_back = np.zeros(robot.num_dof)
target_pos_back[0] = 0.0
# Move forward and backward
await move_joint(target_pos_forward, description="Moving forward")
await move_joint(target_pos_back, description="Moving backward")
# Print final joint states
print("Final positions:", robot.get_joint_positions())
print("Final velocities:", robot.get_joint_velocities())
world.pause()
# Run the async task
asyncio.ensure_future(robot_control_example())
Example_prismatic_joint.zip (4.9 KB)