Excluding joint from articulation causes some issue

Hello everyone!
I connected the panda_link0 of frank robot to chassis of the car with fixed joints, then excluded the fixed joint from articulations. the robot base would wiggle and rotate randomly on the car base. when car moving, panda_link0 of frank base cannot remain relatively stationary to car base. i have set the collision group for frank and car.
video
video2
Can anyone help me understand what could be the problem?

Did you solve the problem, I had the same problem, mir base and franka ,thanks

I dont think excluding from articulation would help here.
The franka arm is a fixed based articulation, its root fixed joint has to be disabled (not excluded). Then you should select the franka root body and the moving robot body and connect it with a new fixed joint.
Then the whole connected hierarchy would be solved as one articulation. If you require to have still two articulations created in PhysX, then this new fixed joint between the articulations have to be excluded from the articulation. Hope that helps.
Regards,
Ales

thank your replay
i disable the root joint of frank, and create a fixed joint between panda_link0 of frank and chassis of the car, i also set the collision group for frank and car to abvoid the collision. but the robot base would wiggle and rotate randomly on the car base when I exclude newly created joints from the articulations, it have been fixed when I dont exclude newly created joints. just like in the video. the car i used is iw.hub.

Is there anything else I did wrong? I would greatly appreciate it if you can reply.

When its excluded from articulation then its a maximal coordinate joint, that does have tolerances, if you want that joint to not have any movement then it would have to be part of the articulation (not excluded)

thank your replay,
I took a trick. dont use fixed joint to connect 2 robots, get the world pose of car chassis and set the value to franka world pose on every physics step.

Hello, I dont use fixed joint to connect 2 robots, get the world pose of car chassis and set the value to franka world pose on every physics step.

example code

robot_to_chassis_rt_mat = np.eye(4)
robot_to_chassis_rt_mat[:3, 3] = np.array([-0.4, 0.0, 0.155])

def on_physics_step(self, step: float):
    chassis_pos, chassis_quat = mobile_robot_chassis.get_world_pose()
    chassis_r_mat = quats_to_rot_matrices(chassis_quat)
    chassis_rt_mat = np.eye(4)
    chassis_rt_mat[:3, :3] = chassis_r_mat
    chassis_rt_mat[:3, 3] = chassis_pos
    robot_pose = np.dot(chassis_rt_mat, robot_to_chassis_rt_mat)
    robot_pos = robot_pose[:3, 3]
    robot_quat = rot_matrices_to_quats(robot_pose[:3, :3])
    robot.set_world_pose(robot_pos, robot_quat)

Hope that helps

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.