Adelaide-Autonomous-Racing-Kit / ac-interface

An interface between autonomous agents and Assetto Corsa
GNU General Public License v3.0
3 stars 0 forks source link

Broadcast shared memory only contains other cars position, not rotation. #23

Open MatthewHowe opened 1 year ago

MatthewHowe commented 1 year ago

To spoof LiDAR or make a 3D object detection dataset it would be good to have other cars rotations. The normal shared memory used for broadcasting only contains position which is why rotations aren't shown in apps like helicorsa. To get around this I found Car Radar which claims to get shape and rotation of cars around using mesh data. We should look into how this works to get the rotations.

MatthewHowe commented 1 year ago

It looks like the person who made Car Radar utilises the ac python API and calls:

    fx1,fy1,fz1 = ac.getCarState(car.carId,acsys.CS.TyreContactPoint,acsys.WHEELS.FL)
    fx2,fy2,fz2 = ac.getCarState(car.carId,acsys.CS.TyreContactPoint,acsys.WHEELS.FR)

to get the locations of the front and rear wheels. Spoke with Jame and we have decided setting up a socket between the AC python package and our host machine would be good, and likely get all the information contained. Need to confirm we can in fact get the wheel positions. Car Radar also converts each cars kn5 mesh into obj then retrieves the shape. This could come in handy when spoofing LiDAR more realistically.

XDynames commented 1 year ago

As an update, the Assetto Corsa shared memory only contains ego car location. To get the other car locations we will need another solution

MatthewHowe commented 1 year ago

I believe using import ac package in AC's python, grabbing all the info we need, then sending that information over to our side (maybe with other observations/camera feed) to use would be fine, right?

XDynames commented 1 year ago

Maybe ¯_(ツ)_/¯

XDynames commented 1 year ago

AC Application Docs Getting Started forum post