Skip to content

v2.1 GPS and IMU support + Debugging Features

Compare
Choose a tag to compare
@AarjavJain101 AarjavJain101 released this 23 May 05:46
· 4 commits to main since this release
9af803b

What's new

  • The main difference between this release (v2.1) and the last release (v2.0) is generalizing sunlink's parsing ability for any data type. Using this support we were able to accommodate GPS and IMU messages not only in parsing but also for sending their data to InfluxDB and Grafana (#67).
  • In addition to GPS and IMU support, significantly more documentation was written to describe sunlink at various levels of depth (a high level overview to implementation details) so that developers can understand sunlink at any level (#67).
  • Furthermore, major debugging features such as PARSE_FAIL messages have been created so that when incoming data cannot be parsed sunlink does not just crash or give an ambiguous error message; instead sunlink will display a pretty printed message indicating the exact location and cause of the error as well as contextual information and values.
    image
  • Live streaming data also significantly improved because you can now specify what data types (CAN, IMU, GPS, etc) and/or ID's to live stream. This choice also applies to logging certain types of messages to view later (#67).
  • Printing of data tables has also changed to enable more flexibility in choosing not only what data to display but also how to display that data so that the table's maintain their easy-to-read style (#82 ).
    image
  • The brightside.dbc has also been updated to match v0.3.0 of the CAN ID table in the BOM (#83).
  • Log uploading functionality for the Kvaser Memorator's SD card is implemented with the ability to parse the .kmf files on the card and upload their data to the parser as well as clear all the logfiles after (#86). These uploaded logs currently go to the *_log buckets on InfluxDB.
  • Lastly, more Grafana dashboards were created to support multiple testing and production circumstances in which different configurations of CAN nodes are set up (testing with the battery vs the MCB vs a full integration test, for example) (#67).
  • Please see the following slideshow for details on multiple data type support. Note that there are changes in the printing of the data tables now: Support_for_IMU_GPS_Sunlink.pdf

Fundamental Changes

  • With v2.1 the way sunlink's features have been implemented are meant to reduce the time taken to make changes. In particular, using data classes to separate parsing logic from the rest of sunlink's functions is especially abstracted in this release because a developer will spend 90% of their work creating the data class for their data type and 10% of the time making minor tweaks within the parser/ folder to integrate their new data type. Essentially, implementers can follow a simple 2 step process of first creating the data type as a contained class and secondly adding a couple of lines to let sunlink know your data exists.

Useful Commands

  • ./link_telemetry.py --live-on GPS 0x403 -r all --debug: Runs link telemetry and live streams all GPS messages and CAN 0x403 messages to Grafana and writes to the debug bucket of influx. Also randomly generates all types of messages.
  • ./link_telemetry.py -u: Perfoms log uploading on the log files in the Kvaser Memorator.
  • ./link_telemetry.py -l 0x627 imu -r can imu --debug: Will run randomizer only on CAN and IMU messages and will log only 0x627 messages and IMU messages. Also writes to the debug buckets on InfluxDB.
  • ./link_telemetry.py -p /dev/ttyUSB0 -b 230400 --prod: Checks the port on which the serial converter for radio is on and specifies a baud rate of 230400 bits/s.
    ./link_telemetry.py --prod -o: Runs link_telemetry in offline mode and writes all data to the production buckets on InfluxDB.

Future Features:

Generated Release Notes Per PR:

New Contributors

Full Changelog: v2.0.0...v2.1