Logging Arbitrary Data Persistently

In most cases using ROS topics and printfs should fulfill your logging needs. This serves as a reference for rarer and specific logging needs.

You can also store application information on the Skynode SD card. This is useful to save any arbitrary data and have it persist beyond the lifecycle of the app. By default, the app container /data directory serves as a mount point for that app data directory on Skynode, which is located under Skynode /data/app/<app-name>/data directory.

For instance you can create a text file to retrieve later on Skynode by implementing the following in your application:

#include <iostream>
#include <fstream>

int main() {
    std::ofstream outputFile("/data/my_file.txt"); 
    if (outputFile.is_open()) {
        outputFile << "Hello, File!\n";
        outputFile.close();
    }
    return 0;
}

With the app installed and running, you can SSH into Skynode and retrieve this file at any time:

root@skynode$ cat /data/app/com.auterion.example-app/data/my_file.txt 
Hello, File!

Mounting Other Volumes

To mount any arbitrary volume to your app, you may specify your custom volume using docker-compose properties in your app auterion-app.yml as explained in the Native Docker Compose page.

Last updated