Skip to content

gmnvh/pycarmaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

pycarmaker

Python class to control, write and read information from CarMaker (https://ipg-automotive.com/).

If you are writing your application in C, use the APO library. Here is an example: https://github.com/gmnvh/pycarmaker/tree/master/examples/C

How to install

pip install -e .

How to use pycarmaker

from pycarmaker import CarMaker, Quantity

# 1 - Open CarMaker with option -cmdport
'''
    For example: on a Windows system with CarMaker 8.0.2 installed on the default
    folder send the command C:\IPG\carmaker\win64-8.0.2\bin\CM.exe -cmdport 16660
'''

# 2 - Start any TesRun

# 3 - Initialize pyCarMaker
IP_ADDRESS = "localhost"
PORT = 16660
cm = CarMaker(IP_ADDRESS, PORT)

# 4 - Connect to CarMaker
cm.connect()

# 5 - Subscribe to vehicle speed
# Create a Quantity instance for vehicle speed (vehicle speed is a float type variable)
vehspd = Quantity("Car.v", Quantity.FLOAT)

# Initialize with negative speed to indicate that value was not read
vehspd.data = -1.0

# Subscribe (TCP socket need to be connected)
cm.subscribe(vehspd)

# Let's also read the simulation status (simulation status is not a quantity but a command
# so the command parameter must be set to True)
sim_status = Quantity("SimStatus", Quantity.INT, True)
cm.subscribe(sim_status)

# 6 - Read all subscribed quantities. In this example, vehicle speed and simulation status
# For some reason, the first two reads will be incomplete and must be ignored
# You will see 2 log errors like this: [ ERROR]   CarMaker: Wrong read
cm.read()
cm.read()
time.sleep(0.1)
c = 5
while(c > 0):
    c = c - 1
    # Read data from carmaker
    cm.read()
    print()
    print("Vehicle speed: " + str(vehspd.data * 3.6) + " km/h")
    print("Simulation status: " + ("Running" if sim_status.data >=
                                   0 else cm.status_dic.get(sim_status.data)))
    time.sleep(1)

How to use VDS:

  1. First you need to create a VDS.cfg config file in Movie directory inside your project folder. Example cfg:
    nViews 1
    # First camera
    0 {
    Width 640
    Height 480
    Export {rgb}
    VPtOffset_x 3.1
    VPtOffset_y 0
    VPtOffset_z 1.1
    FrameRate 25
    }
    
  2. Run a Tes run and open IPGMovie.
  3. Launch the following script
import cv2
from pycarmaker import VDS

# initalize VDS
vds = VDS()
# Connect
vds.connect()
# Read Images
while(True):
    # Capture frame-by-frame
    frame = vds.read()
    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
    # Display the resulting frame
    cv2.imshow('Frame', frame)
    # Press Q on keyboard to  exit
    if cv2.waitKey(25) & 0xFF == ord('q'):
        break

About

Class to control and read information from CarMaker (https://ipg-automotive.com/)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages