Your comments

Hello Andreas,

I have a few points that may also help:
1. Distance between both Rigidbodies in Configurable Joint should be almost zero. Therefore, please check if Part Transform is on the conveyor surface, as in the picture below. 

Image 1138

2. For movements with parts such as lifts, I use a reperenting practice. When lift surface collides with part, part is placed as a child of lift. When collider exits part is moved back to pull.

Image 1139


If you can't find a solution, you can contact me at buktop2402@gmail.com

Hello, in this example Box collider and Rigidbody have the default settings. Box collider is not trigger and Rigidbody is not Kinematic. I am not sure how the Guided Transport works now in current version. Please contact the development team directly.

As can be seen in the illustration, the part jumps onto the stopper because the stopper pushes the part upwards and at the same time the rigid body joint tries to keep the part on the projected line on the conveyor surface. 


To avoid this, the stopper should collide with the side edge of the workpiece and act as a barrier to movement along the motion axis. In more specialized applications, the collision stopper and the collision part should be placed on separate layer in the collision matrix.

With kind regards, Viktor

Image 1119


You must check the scaling in whole hierarchy. For such kinematic chains I always do scaling Vector3.one and use scaling only for child gameobjects with mesh renderer.

Hallo xingbutou, have you attached a collider for this object?

Hello, I don't know exactly if there is class for this in package. But you can try GameObjectRecorder

If you have joint angles, it's well doable:

1. Create DH matrixes and calculate Forward Kinematics

2. Calculate the TCP speed and the time span between two frames. Can you do something similar to this post from the ROS forum

Hallo Kadir,

so wie ich das verstehe, musst du nur die Achsenwerte und Binärsignale für Greifer auslesen und dann entsprechend mit Unity koppeln. Auf alle Signale kann man über den Namen in der IO-Liste in RobotStudio zugreifen.

Kannst du bitte etwas mehr dazu schreiben, mit welchem Schritt du Probleme hast?

Mfg

As I wrote before, just use the following trick. For moving transport surface create new flag. If transport is "Dynamic" then collision events are used.

public class Transport : MonoBehaviour 
{
[Header("Settings")]
private bool _isDynamic;
private void OnCollisionEnter(Collision other)
{
if (!_isDynamic) return;
if (other.gameObject.TryGetComponent(out Part part)) part.transform.parent = transform;
}
private void OnCollisionExit(Collision other)
{
if (!_isDynamic) return;
if (other.gameObject.TryGetComponent(out Part part))
{
if (part.transform.parent == transform) part.transform.parent = null;
}
}
}
public class Part: MonoBehaviour
{

}

2022-10-11 22-04-40.mp4