Q:

SceneKit SCNPhysicsVehicle wheels point toward centre of vehicle

I'm trying to get the SceneKit Physics Vehicle demonstration from WWDC working using Swift 2 and also the Scene Editor and .scnassets. I'm adapting this port of the demo to Swift 1.
I've also been experimenting with some of the Model I/O functions, such as SkyBox and normal map generation.
Everything works fine, except that the wheels are rotated 180 degrees around their steering axes, so that the hubcaps point in towards the centre of the car:

Hubcaps pointing inwards
The wheels spin in the right direction, and the car can be driven and steered fine, but it just looks very weird (and the left-right wheelbase is narrower than it should be).
If I comment out the SCNPhysicsVehicle and SCNPhysicsVehicleWheel code, so that it's just geometry with a physics body for the chassis, the geometry displays correctly, with the wheel hubs pointing outward:

Hubcaps pointing outwards
I've tried rotating the wheelnodes using wheelnode0.rotation before defining the SCNPhysicsVehicleWheel, but it has no effect. 
I tried reversing the wheel axles with wheel0.axle = SCNVector3(x: 1,y: 0,z: 0) and that makes the wheels face the right way, hubcap outwards, (and they still spin the right way), but the car moves backwards (ie the opposite direction to how the wheels are spinning).
It feels like something weird is going on with how axes are being translated, but I can't figure what it is. I've tried it with the original .dae model from the Apple demo, as well as converted to an .scn file. I've tried it inside and outside an .scnassets folder (in case it was something to do with scnassets auto correction of up axis). I tried inverting the wheel steering axes, but that just resulted in the wheels pointing up in the air.
Here's my vehicle creation function, with all the stuff I've tried commented out. Full repo is here: https://github.com/Utsira/SCNPhysicsVehicle-test. Can anyone see what's going wrong here? Thanks in advance.
func setupCar() -> SCNNode {
    let carScene = SCNScene(named: "art.scnassets/rc_car.scn") //rc_car.dae
    let chassisNode = carScene!.rootNode.childNodeWithName("rccarBody", recursively: true)!
    chassisNode.position = SCNVector3Make(0, 10, 30)
    //chassisNode.rotation = SCNVector4(0, 1, 0, CGFloat(M_PI))
    let body = SCNPhysicsBody.dynamicBody()
    body.allowsResting = false
    body.mass = 80
    body.restitution = 0.1
    body.friction = 0.5
    body.rollingFriction = 0
    chassisNode.physicsBody = body
    scnScene.rootNode.addChildNode(chassisNode)
     //getNode("rccarBody", fromDaePath: "rc_car.dae")
    let wheelnode0 = chassisNode
        .childNodeWithName("wheelLocator_FL", recursively: true)!
    let wheelnode1 = chassisNode
        .childNodeWithName("wheelLocator_FR", recursively: true)!
    let wheelnode2 = chassisNode
        .childNodeWithName("wheelLocator_RL", recursively: true)!
    let wheelnode3 = chassisNode
        .childNodeWithName("wheelLocator_RR", recursively: true)!

    //wheelnode0.geometry!.firstMaterial!.emission.contents = UIColor.blueColor()
    //        SCNTransaction.begin()
    //        wheelnode0.rotation = SCNVector4(x: 0, y: 1, z: 0, w: Float(M_PI)) //CGFloat(M_PI)
    //        wheelnode1.rotation = SCNVector4(x: 0, y: 1, z: 0, w: Float(M_PI))
    //        wheelnode2.rotation = SCNVector4(x: 0, y: 1, z: 0, w: Float(M_PI))
    //        wheelnode3.rotation = SCNVector4(x: 0, y: 1, z: 0, w: Float(M_PI))
    //        SCNTransaction.commit()
    //        wheelnode0.eulerAngles = SCNVector3Make(0, Float(M_PI), 0 )
    let wheel0 = SCNPhysicsVehicleWheel(node: wheelnode0)
    let wheel1 = SCNPhysicsVehicleWheel(node: wheelnode1)
    let wheel2 = SCNPhysicsVehicleWheel(node: wheelnode2)
    let wheel3 = SCNPhysicsVehicleWheel(node: wheelnode3)
    //        wheel0.steeringAxis = SCNVector3Make(0, -1, 1) //wheels point up in the air with 0,1,0
    //        wheel1.steeringAxis = SCNVector3Make(0, -1, 1)
    //        wheel2.steeringAxis = SCNVector3Make(0, -1, 1)
    //        wheel3.steeringAxis = SCNVector3Make(0, -1, 1)
    //        
    //        wheel0.axle = SCNVector3(x: 1,y: 0,z: 0) //wheels face and spin the right way, but car moves in opposite direction with 1,0,0
    //        wheel1.axle = SCNVector3(x: 1,y: 0,z: 0)
    //        wheel2.axle = SCNVector3(x: 1,y: 0,z: 0)
    //        wheel3.axle = SCNVector3(x: 1,y: 0,z: 0)
           // wheel0.steeringAxis = SCNVector3()
    //        var min = SCNVector3(x: 0, y: 0, z: 0)
    //        var max = SCNVector3(x: 0, y: 0, z: 0)
    //        wheelnode0.getBoundingBoxMin(&min, max: &max)
    //        let wheelHalfWidth = Float(0.5 * (max.x - min.x))
    //        var w0 = wheelnode0.convertPosition(SCNVector3Zero, toNode: chassisNode)
    //        w0 = w0 + SCNVector3Make(wheelHalfWidth, 0, 0)
    //        wheel0.connectionPosition = w0
    //        var w1 = wheelnode1.convertPosition(SCNVector3Zero, toNode: chassisNode)
    //        w1 = w1 - SCNVector3Make(wheelHalfWidth, 0, 0)
    //        wheel1.connectionPosition = w1
    //        var w2 = wheelnode2.convertPosition(SCNVector3Zero, toNode: chassisNode)
    //        w2 = w2 + SCNVector3Make(wheelHalfWidth, 0, 0)
    //        wheel2.connectionPosition = w2
    //        var w3 = wheelnode3.convertPosition(SCNVector3Zero, toNode: chassisNode)
    //        w3 = w3 - SCNVector3Make(wheelHalfWidth, 0, 0)
    //        wheel3.connectionPosition = w3

    vehicle = SCNPhysicsVehicle(chassisBody: chassisNode.physicsBody!,
                                wheels: [wheel0, wheel1, wheel2, wheel3])
    scnScene.physicsWorld.addBehavior(vehicle)
    return chassisNode

}

A:

I Found A Solution:
(but not the solution I hoped for)
My fix was to adjust the connectionPosition of "FrontLeftWheel", so much to the right, that it took the role of "FrontRightWheel".

And "FrontRightWheel", so much to the left, that it took the role of "FrontLeftWheel".

I also did this for the back.

Basically, where you have:
SCNVector3Make(wheelHalfWidth, 0, 0)

I replaced it with:
SCNVector3Make(wheelHalfWidth * 5.2, 0, 0)

However, you may have to fool around with the number "5.2" to match up with your COLLADA (.dae).
A Note:
Do Not forget to replace:
 vehicle = SCNPhysicsVehicle(chassisBody: chassisNode.physicsBody!,
                            wheels: [wheel0, wheel1, wheel2, wheel3])

With:
 vehicle = SCNPhysicsVehicle(chassisBody: chassisNode.physicsBody!,
                            wheels: [wheel1, wheel0, wheel3, wheel2])

This way, when you use car.wheels[0].You get the wheel you are expecting

