Yaqing,

I only looked briefly over the code you sent, so I may be missing something 
else.

Many of these issues are likely due to misconfiguration of your Chrono code.  
This is in large part due to confusing API of the Chrono code and something 
we’re currently working on. In a few days we will merge into the main branch a 
pretty extensive refactoring of the Chrono code which we hope will make things 
less confusing for users.

As you correctly inferred, the linear motor with prismatic guide constraints 
will act like a prismatic joint with an actuated translation DOF.  The fact 
that the constraints are not satisfied suggests that the simulation is not 
properly converged.  Reducing the step size would be the first thing to try.  I 
noticed that you use DoFrameDynamics to advance the system state.  Yet, you do 
not change the integration step size with a call to ChSystem::SetStep.  Without 
that, Chrono will use the default step size and you likely end up taking a 
single step between those “frames”.  By the way, this is one of the things that 
will be changed in the refactored API (the signature of DoFrameDynamics will 
explicitly ask for the integration step size).  In the meantime, I suggest you 
switch to using DoStepDynamics and experiment with different step sizes.

The problem you ran into when you tried to add a (redundant) prismatic joint is 
again likely due to inconsistency in the current Chrono API.  Indeed, the 
specification of a linear motor with prismatic constraints and a prismatic 
joint assume different frames (the former assumes the (actuated) translational 
DOF is in the X directions, while the latter assumes the translational DOF is 
in the Z direction). If this is not properly taken into account, adding the 
prismatic joint will effectively lock the mechanism.  Again, something that is 
being straightened out in the refactoring I mentioned.

Finally, to resolve the problems you have with actuating your mechanism, I 
suggest you start with a simpler setup. Start with a mechanism that only 
includes the ellipsoid body and the linear motor and make sure you get that 
working properly. Then add the other components and bodies.

--Radu

From: [email protected] <[email protected]> On Behalf 
Of Yaqing Wang
Sent: Thursday, March 14, 2024 3:30 AM
To: ProjectChrono <[email protected]>
Subject: [chrono] "ChLinkMotorLinearPosition" fails to serve as a prismatic link

Hi,

I am having a problem: the "ChLinkMotorLinearPosition" fails to serve as a 
prismatic link after some time.

I want to simulate an ellipsoid (blue-ish) hanging on a rod under a slider 
(called LA) that goes to two beams (green), and the slider should push the rod 
forward and constrain it from moving laterally and vertically.

But now, in my simulation, the rod can drop to the ground.
See videos:
At the top left, the robot drops before contacting the beams.
At the top right, I deleted the link between the rod and the robot, and this 
dropping of the rod still happens but is postponed.
At the bottom left, I added a prismatic link to secure this sliding motion, but 
the system is not moving but only shaking, maybe due to over-constraint.

Here is the motor code.
auto motor = chrono_types::make_shared<ChLinkMotorLinearPosition>();
motor->Initialize(LA, rod, ChFrame<>(ChVector<>(0, 0.02, 0), 
Q_from_AngY(CH_C_PI/2)));
motor->SetGuideConstraint(ChLinkMotorLinear::GuideConstraint::PRISMATIC);
motor->SetMotionFunction(f_ramp2);
mphysicalSystem.Add(motor);

Here are the files:
https://www.dropbox.com/scl/fi/uqv0wvjow36n694436w5f/v2_feedback_vis.zip?rlkey=2o8jqw3o3l7p34lnbeza8b9py&dl=0<https://urldefense.com/v3/__https:/www.dropbox.com/scl/fi/uqv0wvjow36n694436w5f/v2_feedback_vis.zip?rlkey=2o8jqw3o3l7p34lnbeza8b9py&dl=0__;!!Mak6IKo!O4deCfyUfKTqEV6QHn8TQ2RnqrZO7CTh2KPpCpvfxl5sZJ-GIZs7Bhp4sblUjq6wEtjQ1o8Y98uiNVC5gspj7Q$>

And here are the videos, on page 3:
https://www.dropbox.com/scl/fi/zadvx4oonw8zp71u7i6gs/Yaqing_20240313_learn_Chrono.pptx?rlkey=3rpnrv9r34k1g0bi3tu847vhw&dl=0<https://urldefense.com/v3/__https:/www.dropbox.com/scl/fi/zadvx4oonw8zp71u7i6gs/Yaqing_20240313_learn_Chrono.pptx?rlkey=3rpnrv9r34k1g0bi3tu847vhw&dl=0__;!!Mak6IKo!O4deCfyUfKTqEV6QHn8TQ2RnqrZO7CTh2KPpCpvfxl5sZJ-GIZs7Bhp4sblUjq6wEtjQ1o8Y98uiNVAMtNKyEg$>

Would anyone help?

Thanks,
Yaqing
--
You received this message because you are subscribed to the Google Groups 
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
[email protected]<mailto:[email protected]>.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/projectchrono/377d4585-3ec1-409f-b684-eaa0d036febcn%40googlegroups.com<https://urldefense.com/v3/__https:/groups.google.com/d/msgid/projectchrono/377d4585-3ec1-409f-b684-eaa0d036febcn*40googlegroups.com?utm_medium=email&utm_source=footer__;JQ!!Mak6IKo!O4deCfyUfKTqEV6QHn8TQ2RnqrZO7CTh2KPpCpvfxl5sZJ-GIZs7Bhp4sblUjq6wEtjQ1o8Y98uiNVA-rIlMvw$>.

-- 
You received this message because you are subscribed to the Google Groups 
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/projectchrono/PH0PR06MB82372733EB19FC04DE02A22DA7292%40PH0PR06MB8237.namprd06.prod.outlook.com.

Reply via email to