I'm tracking the position of a vehicle along a certain trajectory using the Kalman filter and we have odometry data provided to us which gives the x-position of the vehicle, y-position of the vehicle and orientation of the vehicle. This is calculated based on the wheelticks and is relative to the inertial origin of coordinates. We also have data which tells us about the number of received wheel impulses from each of the wheels.

  1. What exactly are the differences between wheel ticks and wheel impulses? Does wheel impulse mean the wheel speed (rpm)?
  2. If steering angle data (Averaged steering wheel angle) is additionally available, can this also be used to calculate velocity and position?
  • 1
    $\begingroup$ when you were a child, did you ever attach a piece of cardboard to the front fork of your bicycle so that the wheel spokes would make a clicking sound when the front wheel turned? ... that is very similar to the tick sensor $\endgroup$ – jsotola Sep 12 '19 at 2:45
  • $\begingroup$ Nicely explained. So the tick sensor basically counts the notches on a toothed ring on the wheel as it rotates and gives this as some pulsed data to the ECU (Higher the speed, larger the number of notches counted), where it calculates velocity from this data. Is this understanding correct? $\endgroup$ – surajr Sep 12 '19 at 9:38
  • $\begingroup$ @jsotola - Nice answer! Could you please copy your comment into an answer, so OP can accept it? $\endgroup$ – Chuck Sep 12 '19 at 12:44
  • $\begingroup$ @surajr - I haven't heard of "wheel impulses" as a term before. Could you please link the datasheet for the sensor you have that is providing you with this information? $\endgroup$ – Chuck Sep 12 '19 at 12:46
  • $\begingroup$ @Chuck - Unfortunately, we received only a data file (HDF5 format) and a signal list description at the uni from an external supplier. And some of this data contained values termed Wheel Impulses and Wheel Pulses for each of the wheels in it. If it helps, I can attach the link to the data file and the Python Code for reading it $\endgroup$ – surajr Sep 12 '19 at 13:18

Regarding question 2, you can use steering angle for velocity (directional speed) estimation, but Ackermann steering results in a heading that is a function of starting orientation, steering angle, speed, and time.

Ackermann-steered vehicles are always turning along the tangent of a circle, where the circle's radius is set by the steering angle. As the vehicle moves, the steering angle sets the radius of curvature and then the vehicle speed causes you to traverse some arc length, which results in your new heading.

It's not enough to just know what the steering angle is currently, you've got to integrate the entire path. If the radius of curvature is such that the circle being traversed has a circumference of 1 meter, and you drive 1 meter, then the current heading is equal to the starting heading. If the circumference is 2 meters and you drive 1 meter then your current heading is the opposite of your starting heading, etc.

| improve this answer | |
  • $\begingroup$ In essence, we must know the speed of the vehicle (Magnitude component) and we calculate the direction component of velocity from the above Ackermann steering method. $\endgroup$ – surajr Sep 12 '19 at 15:16
  • $\begingroup$ What does it exactly mean to integrate the entire path? Does it mean to consider the entire circumference of the circle traced from the arc? $\endgroup$ – surajr Sep 12 '19 at 15:17
  • $\begingroup$ @surajr - I mean you've got to convert steering angle to a radius of curvature (which is based on steering angle and the vehicle's wheel base), and then calculate your change in heading based on the arc length that is traversed ($s = r\theta$, so you're looking at $\Delta \theta = \Delta s/r$). You have to do this incrementally at each time step and sum the increments as opposed to, e.g., taking the average steering angle and applying the average vehicle speed. $\endgroup$ – Chuck Sep 12 '19 at 15:36
  • $\begingroup$ We use the arc length definition to relate steering angle 's', the radius of the wheel base 'r' to calculate the arc length 'πœƒ'. Should it not be Ξ”πœƒ=Δ𝑠/π‘Ÿ? We do this incrementally meaning, we check the value of Ξ”πœƒ for each time step of the sensor that we receive a steering angle value and sum these values? $\endgroup$ – surajr Sep 12 '19 at 16:04
  • $\begingroup$ @surajr - Yes, sorry I corrected it. Yeah, at each step you'd count your wheel encoder ticks and figure how far you've traveled ($\Delta s$) based on ticks per revolution and wheel radius, figure the radius of curvature $r$, and get the incremental heading change and add that to your running total. $\endgroup$ – Chuck Sep 12 '19 at 16:14

Your Answer

By clicking β€œPost Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.