[Question] TMRobot + Robotiq85 rotating/drifting #5154
Replies: 5 comments 3 replies
-
|
Thank you for posting this. This behavior almost always comes from a mismatch between how the TM7S+Robotiq are modeled in USD and how the Isaac Lab task/controller assumes the robot is structured, plus a few typical physics pitfalls.12 Below is a concrete summary to consider, though still under review. 1. Confirm base and gravity setupUnintended “drifting” often means gravity or the base joint is not configured as expected.1
2. Match joint ordering and DoF between USD and cfgTeleop SE(3) task assumes a specific mapping from robot DoFs to the controller’s joint indices, derived from the env cfg.3 Do the following checks:
If arm and gripper joints are all in 3. Check drive mode, stiffness, and dampingFor position control, every controlled revolute/prismatic joint must have:
Actionable steps:
If you set damping one order of magnitude larger than stiffness (instead of smaller), the system can become sluggish and numerically unstable, leading to strange drift instead of steady holding.1 4. Verify a simple joint-position env firstBefore using SE(3) teleop, validate the robot behaves correctly under the simplest joint-position control.4
Once the simple joint-position control is solid, move to 5. Inspect the gripper coupling and inertiaThe TM7S + Robotiq85 combination can cause rotation if:
Recommendations:
6. Align IK frame and end-effector definitionThe SE(3) teleop script assumes an end-effector frame (e.g., tool frame) consistent with the IK config.3 Check in
As a test, hard-code a fixed EE target equal to the reset pose and run teleop with no key presses; the arm should remain stable. 7. Keyboard teleop scaling and deadzoneWith SE(3) keyboard control, each key press generates incremental pose commands.3 Ensure:
8. Concrete debug path for your setupGiven your description, this is the order I’d go:
Footnotes |
Beta Was this translation helpful? Give feedback.
-
|
Thank you for the detailed explanation, here are the detailed process of me trying to find the issue. Currently the issue has not been solved yet I'll also include my mdp file, although it may have less or no impact on the teleop SE(3) script: 1. Confirm base and gravity setup
2. Match joint ordering and DoF between USD and cfg
we can see that the arm action space only covers arm joints. arm_action = DifferentialInverseKinematicsActionCfg(
joint_names=[
"shoulder_1_joint", # 0
"shoulder_2_joint", # 1
"elbow_joint", # 2
"wrist_1_joint", # 3
"wrist_2_joint", # 4
"wrist_3_joint", # 5
],
body_name="flange_link",
controller=DifferentialIKControllerCfg(
command_type="pose", # 7D unless relative
use_relative_mode=True, # -> 6D: dx,dy,dz,droll,dpitch,dyaw
),
)and for the gripper, binary joint position control was used gripper_action = BinaryJointPositionActionCfg(
joint_names=["finger_joint"], # 1 joint
...
)so robot definition would be: 3. Check drive mode, stiffness, and damping
4. Verify a simple joint-position env firstI created a minimal task and initialize my robot in desired home pose, with no teleoperation, the robot will stay still and won’t drift/rotate, it seems to be correct, and doesn't drift away 5. Inspect the gripper coupling and inertiabased on my differential ik, i don't include the gripper inside of it, only arm joints
6. Align IK frame and end-effector definitionI tried to modify the 7. Keyboard teleop scaling and deadzoneI tried reducing the sensitivity level for the teleoperate SE(3), the rotation/drifting still exist |
Beta Was this translation helpful? Give feedback.
-
|
@RandomOakForest Attached is the flattened USD file, let me know if you have problem accessing it |
Beta Was this translation helpful? Give feedback.
-
|
@RandomOakForest I tried disabling self-collision for the articulation, but this caused the rotation to stop completely. This suggests that the issue might be related to the collision mesh. However, it introduced a new type of rotation: as shown in Video 1, the arm rotates and then stops whenever I open or close the gripper. Next, I attempted to reduce the damping of the robot arm. This decreased the rotation somewhat, as shown in Video 2, but the rotation is still present. Moreover, lowering the damping makes the arm’s movements very stiff, which is undesirable. https://github.com/user-attachments/assets/dccb8ddd-0dab-40b9-828a-e006f43081ab Also when the gripper grasp something, it returns to the turning issue as I posted before |
Beta Was this translation helpful? Give feedback.
-
|
Following up, apologies for the delayed response. If you haven't resolved this issue, let us know know. I'll move this post to our Discussions section for follow up. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I already checked other issues that are similar to mine, but still can't seem to solve this issue.
I'm working on the techman robot + robotiq-85 gripper.
I'm following this tutorial, used the franka example, and created my own folder
https://isaac-sim.github.io/IsaacLab/main/source/overview/imitation-learning/teleop_imitation.html
When I run this command, the robot just starts rotating/drifting out of nowhere
I got the USD file from the official tmrobot company, from this repo
https://github.com/TechmanRobotInc/tm_ros1_isaac_example
As for the robotic config:
tm7s_original.py
Stack joint position config
stack_joint_pos_env_cfg.py
Inverse kinematics config
stack_ik_rel_tm7s_env_cfg.py
I tried to print out the robot.num_joints and also the robot_joint_names, it seems that my both robot arm and gripper joints are defined in robot_joint_names
I tried modifying the stiffness and damping, trying out stiffness one magnitude larger than damping, it all doesn't work well, after a lot of trial and error, I decided to come here to look for help
This is the video of the robot turning
https://github.com/user-attachments/assets/74a7c845-11b3-4b8e-ab5f-30f58a6878c4
Beta Was this translation helpful? Give feedback.
All reactions