Isaac Sim Version
4.2.0
4.1.0
4.0.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):
Operating System
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):
GPU Information
- Model: RTX 3070Ti
- Driver Version: 560.35.05
Topic Description
Detailed Description
Objective
I was attempting to simulate a robot in Isaac-Sim with the goal of retaining its pose while external forces were applied. The intention was to ensure that the robot could maintain its position and orientation despite disturbances, which is crucial for applications requiring stability and precision.
Expected Outcome
I expected the robot to successfully maintain its pose under the influence of applied forces. This would involve the robot’s joints actively countering the forces to keep its position stable. I anticipated that by adjusting the max effort and configuring the stiffness and damping parameters appropriately, the robot would exhibit controlled behavior and resist collapsing.
Actual Outcome
Contrary to my expectations, the robot collapsed while trying to maintain its pose. Despite increasing the max effort of the active joints, the robot failed to stabilize itself, indicating that the applied effort was insufficient to counteract the forces.
Upon further investigation, I considered the possibility that the stiffness or clamp values were not configured correctly. I reviewed the joint configuration parameters, which revealed that while the max effort was set, the stiffness values were potentially too high. This high stiffness may have caused the joints to react too aggressively to the target position, leading to instability rather than the desired controlled response.
Steps to Reproduce
- Load a robot with robot arm and robotic hand
- In each step, apply forces on the fingers with dynamic_control method,
- In each step, apply actions to the robot with joint_positions specified.
(Add more steps as needed)
Screenshots or Videos
Position control without external forces
Position control with external forces
Position control with external forces with larger max_effort
Additional Information
What I’ve Tried
I tried to increase the maximum joint efforts by multiple times, and it didn’t collapse at first. But it still collapsed later. In addition, it didn’t generate the expected outcomes.
I also plotted the get_measured_joint_efforts results during procedure, here is it.
Related Issues
(If you’re aware of any related issues or forum posts, please link them here)
Additional Context
This is what happen during each physic step:
def update(self):
"""
This function is called in scenario.py my_script() function, and it is called on every physics step.
"""
self.articulation.apply_action(
self.target_actions
)
self.glove_handler.apply_forces(self.target_forces)
The functions to return target actions and apply_forces:
def apply_forces(self, forces):
for i, force in enumerate(forces):
self.dc.apply_body_force(
self.robot_link_index[i],
carb.Float3(0, 0, -abs(force)),
self.robot_force_location[i],
False
)
# print("Apply Forces", forces)
def map_joint_angles(self):
return ArticulationAction(
joint_positions=[1.57,-1.57,0,-1.57,0,0]+next(self.joint_angle_generator),
joint_indices=[0,1,2,3,4,5]+self.robot_joint_index
)