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 (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

If you don't have a real CAN device, you can create a virtual CAN interface:

./scripts/socketcan.sh --virtual-can

Try --help option for more details.

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
drawing

2. Test dronecan specification

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

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
drawing

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:

drawing drawing

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.2.0.tar.gz (47.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

raccoonlab_tools-0.2.0-py3-none-any.whl (69.1 kB view details)

Uploaded Python 3

File details

Details for the file raccoonlab_tools-0.2.0.tar.gz.

File metadata

  • Download URL: raccoonlab_tools-0.2.0.tar.gz
  • Upload date:
  • Size: 47.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for raccoonlab_tools-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d1c6a5641ba117ee35fc6af4326580b0dac4ffa8571ca27d02783c576963e41a
MD5 20d76a61c927bc72b666c189c692ab9b
BLAKE2b-256 0b3bd4874702f62738a14e04abec4795ab2da3dcf0d2dc8ad21e74bbeb0ef66f

See more details on using hashes here.

File details

Details for the file raccoonlab_tools-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for raccoonlab_tools-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 116eef80c81116cfeeaf3fd9dc9ec3cdcdf4271d16864bc68de6c489aac23433
MD5 c4acc724e9ec1194ec90f1d0a58b4a46
BLAKE2b-256 e09608cf3d84095c2d137e274ed09bf5586d8194c8233daf294d7f1405b338e6

See more details on using hashes here.

Supported by

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