Hi Developers,

We would like to ask about the calculations of tire forces in tire frame of 
wheeled vehicle. The function ReportTireForce reports the tire forces in 
global frame and we want to examine it in local frame. Here are our 
calculations:

        WheelState state0 = vehicle.GetWheel(0, 
VehicleSide::LEFT)->GetState();
        ChVector<> wheel_normal0 = state0.rot.GetYaxis();
        ChVector<> contact_point = ChVector<>(state0.pos.x(), 
state0.pos.y(), terrain.GetHeight(state0.pos));
        ChVector<> Z_dir0 = terrain.GetNormal(contact_point);
        ChVector<> X_dir0 = Vcross(wheel_normal0, Z_dir0);
        X_dir0.Normalize();
        ChVector<> Y_dir0 = Vcross(Z_dir0, X_dir0);
        ChMatrix33<> rot0;
        rot0.Set_A_axis(X_dir0, Y_dir0, Z_dir0);
        ChMatrix33<> rot0inv = rot0.transpose();
        double alpha_fl = vehicle.GetTire(0, 
VehicleSide::LEFT)->GetSlipAngle();
        double kappa_fl = vehicle.GetTire(0, 
VehicleSide::LEFT)->GetLongitudinalSlip();
        ChVector<> F_fl = rot0inv * (vehicle.GetTire(0, 
VehicleSide::LEFT)->ReportTireForce(&terrain).force);
        ChVector<> M_fl = rot0inv * (vehicle.GetTire(0, 
VehicleSide::LEFT)->ReportTireForce(&terrain).moment);

This calculation meets our expectation to some extent. We reimplement the 
exact same Pacejka tire force as used in Project Chrono. And we use the 
exact tire force parameters. To make sure it's not the camber angle 
problem, we override the camber angle in ChPac02tire.cpp and make it 0 all 
the time. Our expectations are that they should behave the exactly the 
same. But the calculation shows that there's an offset when we are using 
our matlab calculation. 
[image: tire_force.png]
It is not a big deviation in terms of tire force, but it does matter when 
we are using this in yaw rate calculation.

The other one is to use the spindle's rotation to transform the tire 
forces. That result huge deviations, so we suspect we got it wrong 
somewhere. Here's the code:
        ChQuaternion<> rot0inv = vehicle.GetSpindleRot(0, 
VehicleSide::LEFT);
        double alpha_fl = vehicle.GetTire(0, 
VehicleSide::LEFT)->GetSlipAngle();
        double kappa_fl = vehicle.GetTire(0, 
VehicleSide::LEFT)->GetLongitudinalSlip();
        ChVector<> F_fl = rot0inv.Rotate((vehicle.GetTire(0, 
VehicleSide::LEFT)->ReportTireForce(&terrain).force));
        ChVector<> M_fl = rot0inv.Rotate(vehicle.GetTire(0, 
VehicleSide::LEFT)->ReportTireForce(&terrain).moment);

We are wondering what is the exact correct way to get the tire forces in 
tire frame.

Thanks in advance!
Siyuan



-- 
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/8f4acfa4-81a7-411c-9490-cff47d94f77bn%40googlegroups.com.

Reply via email to