Skip to main content

RaccoonLab tools

Project description

Quality Gate Status cyphal_init.sh specification_checker.py

Cyphal/DroneCAN nodes tools

tools is a collection of scripts for testing and configuration of Cyphal/CAN and DroneCAN nodes.

This package is under development.

1. INSTALLATION

1. Install the package from pypi, test.pypi or from sources

pip install raccoonlab-tools
pip install -i https://test.pypi.org/simple/ raccoonlab-tools
git clone https://github.com/PonomarevDA/tools.git
cd tools
pip install .

2. Install dependencies

If you already have a Cyphal in your system, you probably don't need to install anything additional and have your own way of handling the environment variables and DSDL. Just check scripts/ubuntu.sh script in case if you miss something.

But if you use Cyphal for the first time or deploy a project in a new system, consider to run scripts/ubuntu.sh script. This script:

  1. Install all recommended dependencies,
  2. Clone recommended DSDL to ~/.cyphal directory,
  3. Create in ~/.cyphal directory a setup.sh script that configure cyphal related environment variables and append source $HOME/cyphal/setup.sh to the end of your .bashrc file, so your shell will automatically setup the environment variables.
# By default, it installs both Cyphal and DroneCAN dependencies:
./scripts/ubuntu.sh

# Try --help option to get usage details. It allows to perform more precise installation:
./scripts/ubuntu.sh --help
Click here for details about which environment variables are required for a Cyphal application

To start with Cyphal/CAN (pycyphal, yakut, yukon) the following environment variables should be configured:

Environment variable Meaning
CYPHAL_PATH Path to DSDL. Let's use the default:$HOME/.cyphal
UAVCAN__NODE__ID The application node identifier
UAVCAN__CAN__IFACE CAN iface name
UAVCAN__CAN__BITRATE Arbitration/data segment bits per second
UAVCAN__CAN__MTU Maximum transmission unit: 8 for classic CAN

Check pycyphal/yakut/yukon docs for additional details

2. LINUX PREPARATION (SOCKETCAN)

By default, DroneCAN and Cyphal/CAN uses cross-platform transport interface Python-CAN CAN over Serial / SLCAN.

On Linux, the socketcan interface is recommended. Unlike SLCAN, socketcan interface allows to share the same CAN interface with multiple processes, so you can run a few pycyphal scripts, yukon, yakut simultaniously.

You can run the following script:

./scripts/socketcan.sh

For a Cyphal application after creating socketcan interface, you need to update UAVCAN__CAN__IFACE environment variable. Just call source ~/.bashrc.

3. USAGE

1. Test cyphal specification

rl-test-cyphal-specification

2. Test dronecan specification

rl-test-dronecan-specification
rl-test-dronecan-gps-mag-baro

3. Get Node Info (Cyphal / DroneCAN)

rl-get-info

Return:

  • Online CAN-sniffers
  • Detect protocol if any CAN-node is avaliable: cyphal | dronecan | none
  • Show node info of Cyphal/CAN or DroneCAN node if it is avaliable

4. Upload firmware with st-link linux / STM32CubeProgrammer Windows

rl-upload-firmware --config PATH_TO_YAML_CONFIG
rl-upload-firmware --binary PATH_TO_BIN_FILE

There are a few ways how you can specify the path to the binary:

  1. (recommended) Using a GitHub Repository. It will always download the latest released firmware.
# config.yaml
metadata:
    link: RaccoonlabDev/mini_v2_node
  1. Direct Link to the Firmware File
# config.yaml
metadata:
    link: https://github.com/RaccoonlabDev/docs/releases/download/v1.6.5/gnss_v2_cyphal_v1.6.5_c78d47c3.bin
  1. Using a Local Path
# config.yaml
metadata:
    link: /user/home/firmwares/node.bin
  1. Direct .bin path with --binary option

5. Upload config

rl-config --config PATH

Example of yaml config file:

# config.yaml
params:
    uavcan.node_id: 31
    uavcan.node.name: co.rl.mini

6. Monitor

rl-monitor

This script is used for automated node analysis. Within a single command:

  • detect the protocol (Cyphal or DroneCAN),
  • detect the node type,
  • check the software version and highlight if it is not the latest,
  • configure it if it has not been configured yet,
  • subscribes on all possible topics,
  • provide basic tests and diagnostics, highlight issues,
  • publish some test commands if possible,
  • print all data in real time.

An example of rl-monitor with gnss node:

7. U-center with Cyphal GNSS

rl-ublox-center

For RL GNSS it is possible to run u-center over Cyphal via gps.ubx_tx and gps.ubx_rx topics.

  1. Download u-center (tested with u-center 23.08)
  2. Run the u-center. On ubuntu you can use wine (wine64 u-centersetup_v23.08/u-center_v23.08.exe)
  3. Configure the Cyphal environment
  4. Run the script rl-ublox-center
  5. Press Receiver - > Connection -> Network connection
  6. Add new connection tcp://127.0.0.1:2001

An illustration:

4. DEVELOPER NOTES

Deploy to TestPyPI:

./scripts/deploy.sh

Deploy to PyPI:

./scripts/deploy.sh --pypi

5. USAGE TERMS

The scripts are distributed under MIT license. In general, you can do with them whatever you want. If you find a bug, please suggest a PR or an issue.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raccoonlab-tools-0.0.18.tar.gz (38.5 kB view hashes)

Uploaded Source

Built Distribution

raccoonlab_tools-0.0.18-py3-none-any.whl (52.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page