[ODE] Bike Balancing!

Eike Decker eike at cube3d.de
Thu Nov 8 17:13:14 MST 2007

```Putting the COG below the vehicle did not work in my case as it changed the
behaviour of the bike in case of jumps or uphill/downhill driving in an
unrealistic way. And in case of a collision, the bike did not flip over but was
pressed to the ground, which also looked unrealistic.

If the COG is on the ground, the vehicle is quite stable, but it also stays in
its position when it should turn over...

Putting it high above the bike made it easier to balance but it became slower to
move. I've put it a bit below the wheel's axis. The hardest part was to find
right parameters to damp the required countersteering for the balancing code so
that it stabilizes well at low and high speed, as well as switching on external
forces when at very low speed so that the bike does not tip over. I would
suggest to implement the countersteering mechanism, it can be done quite
quickly and works really well, and maybe you don't even need a different
approach for high speeds. After all the stuff I tried out I think that if I did
the balancing code that way at first, I would have saved lot's of time.

My problem at high speeds is not because of the steering but because the bodies
make too much movement between two simulation steps.

Eike

> This is for a game :)
>
> The problem with having the COG below the wheels is that, it then
> revereses the pitch of the body under acceleration and braking.  This is
> not really what I want, as this will also have a horrible effect on the
> weight distribution on the wheels.
>
> I'm pretty sure I can balance the bike with a "push force" at a certain
> point, and possibly use Eike's idea for low-speed balancing.  Then after
> a certain point, switch to the "fast balance" mode
>
> All I need to do is to be able to get the momentum at a certain point on
> one of the axis of the COG and produce a force in the opposite direction
> with some dampening term to minimize jittering/osscilations.
>
> Jon Watte wrote:
> >
> >
> > James Steele wrote:
> >> Hmmm....that's a good article, and I guess as you say; for low
> >> speeds, counter-steering would work ok to balance the bike.  But as
> >> this is a motor bike and typical reaches speeds of 210-250kpm, I
> >> think a different approach may be needed. Counter-steering at those
> >> speeds could lead to massive under-steer and loss of traction which
> >> is not so great :)
> >>
> >
> > If this is for research, ODE is not a good library to use, because
> > bikes have gyroscopic forces that are not modeled in ODE.
> >
> > If this is for a game, then I would suggest putting the center of
> > gravity close to or UNDER the road surface; in effect creating a
> > motorcycle that rights itself, similar to those tipping clown dolls
> > with a heavy weight at the bottom of a round base. Also, when the COG
> > is under the road surface, the bike will lean "naturally" as you turn
> > corners.
> >
> > Cheers,
> >
> >          / h+
> >
> >
> >
>
>
> --
>
> James Steele
>
> 3D / Physics Programmer
>
>
>
> james.steele at greentube.com
>
>
>
> Greentube Internet Entertainment Solutions AG
>
> Mariahilfer Straße 47/1/102
>
> A-1060 Wien
>
> FN 197003k, HG Wien
>
>
>
> Tel: +43 1 494 50 56
>
> Fax: +43 1 494 50 56 - 14
>
> http://www.greentube.com/
>
>
>
> ------------------------------------
> Internet Email Confidentiality Footer
> ------------------------------------
> Privileged/confidential information may be contained in this message. If
> you are not the addressee indicated in this message (or responsible for
> delivery of the message to this person), you may not copy or deliver
> this message to anyone. In such a case, you should destroy this message
> and kindly notify the sender by replying. Please make it known
> immediately  f you or your employer does not consent to the medium of
> e-mail for messages of this kind. Opinions, conclusions and other
> information in this message that do not relate to the official business
> of my firm shall be understood as neither given nor endorsed by it.
>
>

```