python-OBD icon indicating copy to clipboard operation
python-OBD copied to clipboard

Steering wheel angle?

Open smilanko opened this issue 9 years ago • 14 comments

Looking at the original project, there are some references to the steering wheel angle. Is this not supported in this forked version? I cannot seem to find the command that can be invoked.

smilanko avatar Mar 30 '16 22:03 smilanko

Not that I know of. I grepped the original codebase and only found a couple error descriptions in the DTC tables:

obd2_codes.py
1918:   "U0126" : "Lost Communication With Steering Angle Sensor Module" , 
2056:   "U0328" : "Software Incompatibility with Steering Angle Sensor Module" , 
2088:   "U0428" : "Invalid Data Received From Steering Angle Sensor Module" , 

I do not know how to access this sensor. As far as I (and wikipedia) know, it is not in the "standard" range of PIDs. It is possible that it is a manufacturer-specific command (something which python-OBD doesn't handle out of the box).

Good question though, I'd love to find out.

brendan-w avatar Mar 31 '16 00:03 brendan-w

hmm it seems that you are right. I might have misread something. What's odd here is that some cars have a SAS (Steering wheel Angle Sensor) while others do not, so I am guessing its still not part of the standard/requirement. I am also unsure how to query for it as well to be honest. :/

smilanko avatar Mar 31 '16 13:03 smilanko

I found a reference to this (pg. 17). It claims that Wheel Angle is 300E. I'm not really clear on how standardized this is, or if it's accurate at all (it is from 1999 after all), but it might be worth a shot.

brendan-w avatar Jun 30 '16 20:06 brendan-w

if we could make that work, at least on some vehicles, you have no idea how many scholarly students/researchers we would be helping. I will take a look over the next few weeks, and maybe try out this code on different cars. I'll let you know what I come up with.

smilanko avatar Jun 30 '16 21:06 smilanko

More snooping turned up this one for Toyota: 2147 Edit: and this one: 2106. wow these are all over the map. And even conflicting.

brendan-w avatar Jun 30 '16 22:06 brendan-w

How would you try those codes?

I tried


def angle(messages):
    """ decoder for angle messages """
    print(messages[0].data)
    print(messages[1].data)
    return 0

cmd = OBDCommand("Angle",
                 "Steering Wheel Angle",
                 b"2147",
                 0,
                 angle,
                 ECU.ALL,
                 False)

connection.supported_commands.add(cmd)
connection.query(cmd)

On my toyota, with 2106, 2147, 3001, 300E. But I don't know if it's the right thing to do.

I am trying to get the steering wheel position.

kuon avatar Nov 20 '16 13:11 kuon

How is it going? Did someone find the solution for it? @kuon Did your code work?

@smilanko Thats is true! This would help a lot of researchers out there, myself inclued =)

raphaottoni avatar May 07 '17 23:05 raphaottoni

I ended up writing a small bit of C:

https://github.com/kuon/backup-camera/blob/master/src/canbus.c

The steering filter is hardcoded at line 27 and 28.

kuon avatar May 08 '17 00:05 kuon

@kuon Thanks for the tip but i didnt follow =/

What does this code mean? In terms of python-obd.

device_filter.can_id = 0x25; device_filter.can_mask = 0x7ff;

Does it mean that the command PID for steering wheel on your car is 0x25? How did u find that?

What is this mask?

Is it possible to reproduce this with the coded u posted on 20 nov 2016 up here?

thanks

raphaottoni avatar May 08 '17 23:05 raphaottoni

In term of python-obd, I am not sure. But it is the filter for the socket. What it does, is that it will accept all messages (can_mask) from device 0x25. So yes, in my car, the PID for steering is 0x25.

I found this id here http://tucrrc.utulsa.edu/ToyotaCAN.html i used candump from https://github.com/linux-can/can-utils to check for messages. When I verified that 0x25 was the correct ID, it was straightforward.

The thing is, 0x25 is the ECU id. And I have no idea how to get that with python-odb, as I gave up quite quickly.

Also, note that my code is hooked directly to CANBUS, it is not using ODB II. I hooked directly to the CANBUS via a PICAN on a raspberry pi.

I know that some cars (mine does), provide direct access to CANBUS via the ODB II port, and some USB adapters allow you to actually access the CANBUS directly. But I don't know how.

kuon avatar May 09 '17 02:05 kuon

dde = OBDCommand("DDE",          
               "Driver's Demand Engine - Percent Torque",    
               b"0161", 
               1,         
               driverDemandEngine,        
               ECU.ENGINE, 
               True)             

response` = o.query(dde,force=True)
print(response.value)

I tried to make it run but also got as response "None", I'm very interested in torque information from obd2. Why can't I get this parameter from the custom command above? Is there another way to get it?

Thanks, Felipe

ergueta avatar Jan 29 '19 19:01 ergueta

I guess, at python-OBD, command <b"xxyy">, xx is Mode, yy is PID. I want to get Steering Angle, too. I will try <b"0625">. (Mode 06 - CAN protocol, PID 25 from ToyotaCAN

selffactory avatar Sep 17 '20 02:09 selffactory

How is it going? Did anyone achieved to determine the steering wheel angle?

Thanks, David

DavidTMuc avatar Jun 17 '21 07:06 DavidTMuc

Stop the project now. I have never obtained any responce from my ZN6.

selffactory avatar Jun 18 '21 13:06 selffactory