# 5. Cyphal interface
This page is about Cyphal related details such as interface, supported features, registers, configuration and usage examples and software versions. For general information please refer 1. General, for hardware-related details, including the connection example scheme, please refer to the Hardware page: L1 GPS NEO-M8, L1/L2 RTK GPS ZED-F9P or Magnetometer RM3100.
# 5.1. Cyphal interface
This node interacts with the following data types:
Common for any node
№ | Type | Message |
---|---|---|
1 | pub | uavcan.node.Heartbeat (opens new window) |
2 | RPC-service | uavcan.node.GetInfo (opens new window) |
3 | RPC-service | uavcan.node.ExecuteCommand (opens new window) |
4 | RPC-service | uavcan.register.List (opens new window) |
5 | RPC-service | uavcan.register.Access (opens new window) |
6 | pub (since hardware v3) | uavcan.node.port.List (opens new window) |
Here ExecuteCommand
supports COMMAND_RESTART
, COMMAND_FACTORY_RESET
and COMMAND_STORE_PERSISTENT_STATES
.
Circuit status service
Like any other RaccoonLab node, this node also supports the Circuit status service
. It uses the following subjects:
№ | Type | Message | Topic name |
---|---|---|---|
1 | pub | uavcan.si.sample.voltage.Scalar.1.0 | 5v |
2 | pub | uavcan.si.sample.voltage.Scalar.1.0 | vin |
3 | pub | uavcan.si.sample.temperature.Scalar.1.0 | dev_temp |
GNSS service
№ | Type | Message | Topic name |
---|---|---|---|
1 | publisher | reg.udral.physics.kinematics.geodetic.PointStateVarTs.0.1 (opens new window) | point (geodetic position and velocity) |
2 | publisher | uavcan.si.sample.angle.Scalar (opens new window) | yaw (not supported yet) |
3 | publisher | uavcan.primitive.scalar.Integer16 | sats |
4 | publisher | uavcan.primitive.scalar.Integer16 | status |
5 | publisher | uavcan.primitive.scalar.Integer16 | pdop |
Barometer service
№ | Type | Message | Topic name |
---|---|---|---|
1 | publisher | uavcan.si.sample.pressure.Scalar.1.0 | press |
2 | publisher | uavcan.si.sample.temperature.Scalar.1.0 | temp |
Magnetometer service
№ | Type | Message | Topic name |
---|---|---|---|
1 | publisher | uavcan.si.sample.magnetic_field_strength.Vector3.1.0 | mag |
# 5.2. Cyphal Registers
№ | Parameter name | Note | Description |
---|---|---|---|
0 | id | reboot required | Node ID |
1 | uavcan.pub.baro.press.id | Port identifier | |
2 | uavcan.pub.baro.press.type | persistent | uavcan.si.sample.pressure.Scalar.1.0 |
3 | uavcan.pub.baro.temp.id | Port identifier | |
4 | uavcan.pub.baro.temp.type | persistent | uavcan.si.sample.temperature.Scalar.1.0 |
5 | uavcan.pub.gps.point.id | Port identifier | |
6 | uavcan.pub.gps.point.type | persistent | reg.udral.physics.kinematics.geodetic.PointStateVarTs.0.1 |
7 | uavcan.pub.gps.yaw.id | Port identifier | |
8 | uavcan.pub.gps.yaw.type | persistent | uavcan.si.sample.angle.Scalar.1.0 |
9 | uavcan.pub.gps.sats.id | Port identifier | |
10 | uavcan.pub.gps.sats.type | persistent | uavcan.primitive.scalar.Integer16.1.0 |
11 | uavcan.pub.gps.status.id | Port identifier | |
12 | uavcan.pub.gps.status.type | persistent | uavcan.primitive.scalar.Integer16.1.0 |
13 | uavcan.pub.gps.pdop.id | Port identifier | |
14 | uavcan.pub.gps.pdop.type | persistent | uavcan.primitive.scalar.Integer16.1.0 |
15 | uavcan.pub.mag.id | Port identifier | |
16 | uavcan.pub.mag.type | persistent | uavcan.si.sample.magnetic_field_strength.Vector3.1.0 |
17 | uavcan.pub.crct.5v.id | Port identifier | |
18 | uavcan.pub.crct.5v.type | persistent | uavcan.si.sample.voltage.Scalar.1.0 |
19 | uavcan.pub.crct.vin.id | Port identifier | |
20 | uavcan.pub.crct.vin.type | persistent | uavcan.si.sample.voltage.Scalar.1.0 |
21 | uavcan.pub.crct.temp.id | Port identifier | |
22 | uavcan.pub.crct.temp.type | persistent | uavcan.si.sample.temperature.Scalar.1.0 |
23 | gps_self_test | bool | Enable or disable self test (in this mode the device sends fake referenced coordinates) |
24 | name | reboot required | Node custom name |
You can get the list of registers, read and write them using Yakut (opens new window) cli or Yukon (opens new window) gui.
# 5.3. Getting started (bench test)
Before mounting on a real vehicle, especially when using the node for the first time, it is recommended to test the node and perform configuration on a bench using Yakut (opens new window) cli or Yukon (opens new window) gui.
The following checklist allows you to test most of the features and configure the most important parameters.
Step 1. Connect the device. The node should blink with blue color
The simplest connection scheme just for bench testing and configuration is shown below.
Here, the gnss_mag_baro node is connected with a CAN sniffer via JST-GH 4 connector. The sniffer is connected to PC via USB and power the node.
Alternatively, in a vehicle you may want to connect the node via Molex CAN connector.
Step 2. Configure the environment
Typically you need to:
- Configure all required environment variables
- Compile DSDL based on public regulated data types
- Create SLCAN based on CAN sniffer
Please refer to the Yakut
and Yukon
documentations to understand how to do it.
Step 3. Monitor the node
Let's say, you have a correctly connected Cyphal node to a CAN sniffer.
The node state might be visualized using Yakut
. Run y mon
to see the node. The possible command output is:
Alternatively, you can use Yukon
. An example of the Monitor window is shown below:
Step 4. Configure GNSS
For gnss you need to configure the following ports: gps.point
, gps.sats
, gps.status
and gps.pdop
.
You can subscribe to the sensor:
Step 5. Configure Magnetometer
For magnetometer you need to configure the following ports: mag
.
You can subscribe to the sensor:
Step 6. Configure Barometer
For magnetometer you need to configure the following ports: baro.press
, baro.temp
.
You can subscribe to the sensor:
(optional) Step 7. Configure Circuit Status
For Circuit Status you need to configure the following ports: crct.5v
, crct.temp
and crct.vin
.
You can subscribe to the sensor:
# 5.4. Ardupilot integration
Ardupilot doesn't officially support Cyphal. It is expected to use the custom cyphal branch of ardupilot (opens new window).
1. GPS configuration
At least the following Ardupilot parameters should be configured:
Parameter | Value | Description |
---|---|---|
GPS_TYPE | 26 | means Cyphal |
The following Ardupilot Cyphal registers should have the same port identifiers as GPS:
Register | Type |
---|---|
uavcan.sub.gps.point.id | reg.udral.physics.kinematics.geodetic.PointStateVarTs.0.1 |
uavcan.sub.gps.sats.id | uavcan.primitive.scalar.Integer16.1.0 |
uavcan.sub.gps.status.id | uavcan.primitive.scalar.Integer16.1.0 |
uavcan.sub.gps.pdop.id | uavcan.primitive.scalar.Integer16.1.0 |
It is recommended to verify the correctness of the configuration with Yukon as shown below:
2. Magnetometer configuration
The following Ardupilot Cyphal registers should have the same port identifiers as Magnetometer:
Register | Type |
---|---|
uavcan.sub.mag.id | uavcan.si.sample.magnetic_field_strength.Vector3.1.0 |
3. Barometer configuration
The following Ardupilot Cyphal registers should have the same port identifiers as Barometer:
Register | Type |
---|---|
uavcan.sub.baro.pres.id | uavcan.si.sample.pressure.Scalar.1.0 |
uavcan.sub.baro.temp.id | uavcan.si.sample.temperature.Scalar.1.0 |
4. Verification
# 5.5. PX4 integration
PX4 support is a "work in progress". It doesn't officilly support GNSS, magnetomer or barometer. It is expected to use the branch with few additional features (opens new window).
1. GNSS configuration
To enable GNSS you should configure the following PX4 Cyphal ports: udral.gps.0
, udral.gps.pdop.0
, udral.gps.sats.0
and udral.gps.status.0
.
2. Magnetometer
To enable magnetometer, you should configure the following PX4 Cyphal ports: udral.mag.0
.
On the picture below the first instance is related to Cyphal magnetometer.
3. Barometer
To enable magnetometer and barometer, you should configure the following PX4 Cyphal registers: udral.baro.0
.
# 5.6. Software versions
GNSS L1/L2 ZED-F9P:
Version | Date | Description |
---|---|---|
v1.3 coming soon (opens new window) | Apr, 2023 | First release for ZED-F9P. Fix port.List issue, add diagnostic.Record. |
GNSS L1 NEO-M8:
Version | Date | Description |
---|---|---|
v1.2.14_b4e042b (opens new window) | Feb 23, 2023 | Add Barometer and external RGB LED, add port.List , add hardware version, extend git hash length to 64 bit, few fixes. Knows issues: port.List sometimes is not correct. |
v1.1.3_5fe78e3 (opens new window) | Dec 01, 2022 | Fix mag scaling (use teslas instead of gausses) |
v1.0.5_1d52004 (opens new window) | Oct 31, 2022 | Improve gps accuracy |
v1.0.1_47a71fd (opens new window) | Oct 23, 2022 | Initial version |