bluerobotics / navigator-lib

Library to unleash the hardware capabilities, packed with features and fuel for your coding adventures
https://docs.bluerobotics.com/navigator-lib/python/
MIT License
11 stars 5 forks source link

Navigator Library

Actions PyPI

This library serves as the entry point for applications that want to use Navigator with Python or C++.

1 . How-to setup the Raspberry Pi computer, please read Instructions. 2 . For Rust πŸ¦€, please check the navigator-rs library.

Features

πŸ“– Documentation:

Check the examples folder for further information and guide.

🐍 Python:

Install the library.

pip install bluerobotics_navigator

With that, you'll bee able to run the examples, or creating your own:

#!/usr/bin/env python

import bluerobotics_navigator as navigator

print("Initializing navigator module.")
navigator.init()

print("Setting led on!")
navigator.set_led(navigator.UserLed.Led1, True)

print(f"Temperature: {navigator.read_temp()}")
print(f"Pressure: {navigator.read_pressure()}")

print(
    f"Data ADC Channels: {navigator.read_adc_all().channel}"
)

print(f"Data ADC Channel: 1 = {navigator.read_adc(navigator.AdcChannel.Ch1)}")

data = navigator.read_mag()
print(f"Magnetic field: X = {data.x}, Y = {data.y}, Z = {data.z}")

πŸ› οΈ C++:

Follow our example folder as a template to create your own project. To compile and run the examples, you can run:

cd examples/cpp
cmake -B build -DCMAKE_BUILD_TYPE=Debug && cmake --build build --config Debug --parallel
# Run one of the examples
./build/simple
./build/rainbow

For an example of C++ code, you can check the following code:

#include "bindings.h"
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

int main() {
  printf("Initiating navigator module.\n");
  init();

  printf("Setting led on!\n");
  set_led(UserLed::Led1, true);

  printf("Temperature: %f\n", read_temp());
  printf("Pressure: %f\n", read_pressure());

  ADCData adc = read_adc_all();
  printf("Reading ADC Channels: 1 = %f, 2 = %f, 3 = %f, 4 = %f\n",
         adc.channel[0], adc.channel[1], adc.channel[2], adc.channel[3]);
  printf("Data ADC Channels: 1 = %f\n", read_adc(AdcChannel::Ch1));

  AxisData mag = read_mag();
  printf("Magnetic field: X = %f, Y = %f, Z = %f\n", mag.x, mag.y, mag.z);

  return 0;
}

Note: The CMakeLists_Standalone.txt is a self-contained CMake project file example. Users can use it as a template to create their standalone projects based on the navigator-lib.

πŸ—οΈ Supported Architectures

Currently, the library supports armv7 and aarch64 architectures, which are the official defaults for BlueOS. The library also provides C++ .so files for both gnu and musl.

For more detailed information, including installation instructions, schematics, and hardware specifications, please refer to the navigator hardware setup guide.

:ocean: Instructions for BlueOS (Recommended)

  1. Open the Autopilot Firmware page, enable Pirate Mode, and "change board" to SITL
    • This stops the autopilot firmware from trying to operate while the WebAssistant is in use
  2. Reboot the vehicle computer, and wait for the interface to re-connect

    Note: Since this library access the Navigator hardware, it canΒ΄t run in parallel with ArduPilot. If you are running ArduPilot, be sure to disable it or set the board as SITL (Software Simulation) before running Navigator WebAssistant

:cherries: Instructions for Raspberry Pi OS

  1. Download the Raspberry OS image (32 or 64 bits)

    Note: To use a kernel that matches with the BlueOS and avoid incompatilities, please use: 32 Bits: raspios_lite_armhf-2023-02-22 64 Bits: raspios_lite_arm64-2023-02-22

  2. Install the Raspberry Pi Imager and flash the image

    Note: You can also automatically setup the ssh, user, hostname and wi-fi settings.

  3. Execute the following command to setup the overlay required for Navigator ( I2C, SPI, GPIOs & others)

sudo su -c 'curl -fsSL https://raw.githubusercontent.com/bluerobotics/blueos-docker/master/install/boards/configure_board.sh | bash'
sudo reboot