Kalman filtering for position using GPS,accelerometer and speed sensors
In my experience at the very least you need a nine or ten state Kalman (velocity, position, and angle -- that's nine states if you attempt to use Euler angles, ten if you use quaternions).  Practically, you need to use IMU offset, so add six more states.  If you use the IMU's compass function, add three more.  It may not be a bad idea to monitor the acceleration due to gravity -- one more.  If you use the vehicle's odometer function (from CAN), then add a state for proportionality error, and possibly offset error.
You need vehicle orientation.  That's because the ground is accelerating upwards at $9.81 \mathrm{m/s^2}$ (if Einstein is to be believed), or the accelerometer's proof mass is being pulled down with a force equal to $9.81 \mathrm{m/s^2/kg}$ (if Sir Isaac Newton is to be believed).  Either way, to get the actual acceleration with respect to the ground you need to null out the acceleration with respect to gravity, and you can only do that if you have the vehicle's orientation in 3D.
It's been over a decade since I worked on this last, but there has to be canned packages available open source -- have you done a search?