Isaac Sim Version
5.0.0
Operating System
Ubuntu 24.04
GPU Information
- Model: GeForce RTX 3090
- Driver Version: 575.64.03
Topic Description
Detailed Description
Velocities are not being honored at all by ArticulationAction(). Instead, my quadruped seemingly consistently defaults to the maximum velocity as set in my urdf of 9.52rad/s, even when I assign the velocities to all be 0 rad/s
Steps to Reproduce
Code:
########## ISAAC SIM AI AGENT JOINT CONTROL ##########
def apply_joint_angles_isaac(current_servo_config, target_angles, mid_angles, movement_rates):
"""
Apply joint angles directly for Isaac Sim AI agent training.
This function moves all joints to their target angles in a single ArticulationAction.
Args:
current_servo_config: Current servo configuration with CURRENT_ANGLE values
target_angles: Target joint angles for each leg (similar to SERVO_CONFIG structure)
mid_angles: Mid joint angles for each leg (similar to SERVO_CONFIG structure)
movement_rates: Movement rate parameters for each leg
"""
try:
joint_count = len(config.ISAAC_ROBOT.dof_names)
joint_positions = numpy.zeros(joint_count)
joint_velocities = numpy.zeros(joint_count)
# Define joint order (same as working functions)
joint_order = [
('FL', 'hip'), ('FL', 'upper'), ('FL', 'lower'),
('FR', 'hip'), ('FR', 'upper'), ('FR', 'lower'),
('BL', 'hip'), ('BL', 'upper'), ('BL', 'lower'),
('BR', 'hip'), ('BR', 'upper'), ('BR', 'lower')
]
# STEP 1: Move to mid angles first
logging.info("(fundamental_movement.py): === MOVING TO MID ANGLES ===")
for leg_id, joint_name in joint_order:
joint_full_name = f"{leg_id}_{joint_name}"
joint_index = config.JOINT_INDEX_MAP.get(joint_full_name)
if joint_index is not None:
# Get mid angle from the AI agent's output
mid_angle = mid_angles[leg_id][joint_name]
# FORCE VELOCITY TO 0 TO PROVE ISAAC SIM IGNORES VELOCITY TARGETS
velocity = 0.0 # Force to 0 to demonstrate velocity targets are ignored
joint_positions[joint_index] = mid_angle
joint_velocities[joint_index] = velocity
# Update the current angle in config
config.SERVO_CONFIG[leg_id][joint_name]['CURRENT_ANGLE'] = mid_angle
# DETAILED LOGGING FOR FORUM POST
logging.info(f"(fundamental_movement.py): {joint_full_name}: MID angle={math.degrees(mid_angle):.1f}° ({mid_angle:.4f} rad), velocity={velocity:.4f} rad/s")
else:
logging.error(f"(fundamental_movement.py): Joint {joint_full_name} not found in JOINT_INDEX_MAP\n")
# Apply mid angle positions
mid_action = ArticulationAction(
joint_positions=joint_positions,
joint_velocities=joint_velocities
)
logging.info(f"(fundamental_movement.py): Applying mid angles with velocities forced to 0.0")
ARTICULATION_CONTROLLER.apply_action(mid_action)
time.sleep(0.1)
# NOTE: I omitted moving to target angles as its logically identical to the above
except Exception as e:
logging.error(f"(fundamental_movement.py): Failed to apply AI agent joint angles for Isaac Sim: {e}\n")
Error Messages
No errors, but my log displays pitifully slow velocity radians and yet the legs clearly move at 9.52 rad/s, the URDF limit:
… more log …
(fundamental_movement.py): === MOVING TO MID ANGLES ===
(fundamental_movement.py): FL_hip: MID angle=11.6° (0.2018 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FL_upper: MID angle=25.7° (0.4490 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FL_lower: MID angle=25.1° (0.4377 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FR_hip: MID angle=6.3° (0.1102 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FR_upper: MID angle=1.2° (0.0207 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FR_lower: MID angle=13.5° (0.2349 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BL_hip: MID angle=2.2° (0.0379 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BL_upper: MID angle=-10.2° (-0.1774 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BL_lower: MID angle=35.1° (0.6131 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BR_hip: MID angle=7.4° (0.1288 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BR_upper: MID angle=-32.4° (-0.5661 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BR_lower: MID angle=4.3° (0.0743 rad), velocity=0.0000 rad/s
(fundamental_movement.py): Applying mid angles with velocities forced to 0.0
(fundamental_movement.py): === MOVING TO TARGET ANGLES ===
(fundamental_movement.py): FL_hip: TARGET angle=-6.3° (-0.1102 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FL_upper: TARGET angle=7.8° (0.1363 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FL_lower: TARGET angle=-30.5° (-0.5328 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FR_hip: TARGET angle=14.4° (0.2512 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FR_upper: TARGET angle=-31.4° (-0.5484 rad), velocity=0.0000 rad/s
(fundamental_movement.py): FR_lower: TARGET angle=-14.9° (-0.2600 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BL_hip: TARGET angle=-10.4° (-0.1813 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BL_upper: TARGET angle=34.5° (0.6013 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BL_lower: TARGET angle=-12.3° (-0.2143 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BR_hip: TARGET angle=7.3° (0.1276 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BR_upper: TARGET angle=-20.5° (-0.3576 rad), velocity=0.0000 rad/s
(fundamental_movement.py): BR_lower: TARGET angle=-27.5° (-0.4793 rad), velocity=0.0000 rad/s
(fundamental_movement.py): Applying target angles with velocities forced to 0.0
(fundamental_movement.py): Applied AI agent joint angles for Isaac Sim (mid → target) - VELOCITIES FORCED TO 0.0 TO DEMONSTRATE ISAAC SIM IGNORES VELOCITY TARGETS
… more log …
Screenshots or Videos
Additional Information
What I’ve Tried
-
set_joint_drive_properties() - Failed: Robot still moved at max speed
-
Physics timestep adjustment - Increased to 1000 Hz (physics_dt=0.001) - Failed: No effect on velocity control
-
Enhanced physics solver settings - solver_iteration_count=8, solver_type=“TGS” - Failed: No effect on velocity control
-
Zero velocity test - Set all velocities to 0.0 - Failed: Robot still moved, proving ArticulationAction() velocities completely ignored
Related Issues
I understand that this has been an issue in the past and was fixed, so I know that it’s 99.9% my fault… Am I missing something here? Any help regarding controlling both position and velocity at the same time from Isaac Sim Veterans would be extremely appreciated