TUM/2016/ppc
Korbinian Ederer 4475ae6df8 added cpp files 2016-07-08 14:47:27 +02:00
..
common/include added files for 2016 workshop 2016-07-03 23:24:04 +02:00
gps added cpp files 2016-07-08 14:47:27 +02:00
.gitignore added files for 2016 workshop 2016-07-03 23:24:04 +02:00
.ruby-gemset added files for 2016 workshop 2016-07-03 23:24:04 +02:00
.ruby-version added files for 2016 workshop 2016-07-03 23:24:04 +02:00
README.mkd fixed formula in ppc 2016-07-04 17:51:21 +02:00
rakefile.rb added files for 2016 workshop 2016-07-03 23:24:04 +02:00

README.mkd

Prerequisites

To be able to compile your solutions and execute the tests, you will need the following:

  • working gcc compiler
  • working ruby installation
  • rubygems: rake and bake-toolkit

Install the bake tool

see https://esrlabs.github.io/bake/

GPS on CAN

In this task you will need to receive Can-frames on the can-bus that contain the GPS location of the vehicle. The raw data has to be converted to arc-milliseconds

Beware that the system you are running your code on will not support floating point operations. Use only unsigned and signed integers! Still the precision of your calculations has to be +-100 milli-arc-seconds

Dynamic allocation is not supported on the system.

You will have to complete the GpsConverter.cpp (and .h).

Conversion between Arc-Degree and arc-milliseconds

1°2'5" == (1*3600+ 2*60 + 5)*1000

Conversion of raw values to Arc-Degree

value [degree] = 180/(2^31-1) * value[raw]

HINT 1

Try to use constants as much as possible, instead of computing stuff on the go.

HINT 2

In order to avoid losing decimals first, multiply with a large factor and then divide to get the result in ms.

GPS Datalayout in CAN Message

	Byte7 ST_LAT_NAVI
	Byte6 ST_LAT_NAVI
	Byte5 ST_LAT_NAVI
	Byte4 ST_LAT_NAVI
	Byte3 ST_LONG_NAVI
	Byte2 ST_LONG_NAVI
	Byte1 ST_LONG_NAVI
	Byte0 ST_LONG_NAVI

Byteorder

Little Endian (Least Significant Byte is at lowest address)

Signal Descriptions

Status Longitude Navigation

	ST_LONG_NAVI

Possible Values

	-180° ...  +180°

Signal type

32 Bit Signed Integer (Byte 0 ... Byte 3)

Invalid Data

Invalid-Value: 80 00 00 00

Signal not available value: 7F FF FF FF and FF FF FF FF

Do not forget to check for these values

Status Latitude Navigation

	ST_LAT_NAVI

Possible Values

	-180° ...  +180°

Signal type

32 Bit Signed Integer (Byte 4 ... Byte 7)

Invalid Data

Invalid-Value: 80 00 00 00

Signal not available value: 7F FF FF FF and FF FF FF FF

Tests

Use the rake file in the "ppc" folder to build your project and run the tests

Building the project

execute rake build from this directory

Running the tests

execute rake run from this directory