A minimal application always includes the following features:
| № | Type | Message | Comment | Rate |
|---|---|---|---|---|
| 1 | pub | uavcan.node.Heartbeat | Abstract node status info | 1 Hz |
| 2 | pub | uavcan.node.port.List | Node network capabilities | 0.2 Hz |
| 3 | RPC-service | uavcan.node.GetInfo | Full node info | |
| 4 | RPC-service | uavcan.node.ExecuteCommand | Restart, save or reset registers | |
| 5 | RPC-service | uavcan.register.List uavcan.register.Access |
Register interface |
There are also examples of the following auxilliary features:
| Interface | Port | Message |
|---|---|---|
| udral/actuator | sub.setpoint sub.readiness pub.feedback |
udral.service.actuator.common.sp.Vector31 reg.udral.service.common.Readiness zubax.telega.CompactFeedback |
| Barometer | pub.pressure pub.temperature |
uavcan.si.sample.pressure.Scalar uavcan.si.sample.temperature.Scalar |
| Magnetometer | pub.mag | uavcan.si.sample.magnetic_field_strength.Vector3 |
| udral/gnss | pub.point pub.status pub.sats pub.pdop |
reg.udral.physics.kinematics.geodetic.PointStateVarTs uavcan.primitive.scalar.Integer16 uavcan.primitive.scalar.Integer16 uavcan.primitive.scalar.Integer16 |
| imu | pub.accelerometer pub.gyro |
uavcan.si.sample.acceleration.Vector3 uavcan.si.sample.angular_velocity.Vector3 |
Supported platforms:
| CAN_PLATFORM | Implementation details | Note |
|---|---|---|
| bxcan | platform_specific_components | Tested on stm32f103 only |
| fdcan | STM32 HAL | Tested on stm32g0 only |
| socketcan | platform_specific_components | Tested on ubuntu 22.04 |
The library depends on a few other repositories.
Already inlcuded in the repository:
External dependency:
Step 1. Clone repo with dependency
git clone https://github.com/RaccoonlabDev/cyphal_application.git
cd cyphal_application
git clone --branch v0.7.0 https://github.com/PonomarevDA/libparams.git Libs/libparamsStep 2. Include CMakeList.txt
In your application's cmake file specify the target, include this CMakeLists.txt and add source code to the executable:
# 1. select either bxcan or fdcan or socketcan
set(CAN_PLATFORM bxcan)
# 2. include CMakeLists.txt
include(<path_to_this_repo>/Cyphal/CMakeLists.txt)
# 3. add ${CYPHAL_SRC} to our source files
add_executable(<executable_name> ${CYPHAL_SRC})Step 3. (Optionally) Provide an additional info
It is nice to fill GetInfo with an information specific to your application:
| Software version | Defined on the compile time with APP_VERSION_MAJOR and APP_VERSION_MINOR defines. |
| Hardware version | Should be defined on the initialization time. |
| Certificate of authenticity | Not supported by this example yet. |
| Unique ID | It is expected to provide HAL_GetUIDw0, HAL_GetUIDw1 and HAL_GetUIDw2. By default, it is provided by STM32 HAL. |
| Software VCS Revision ID | Defined on the compile time with GIT_HASH define. |
| Platform | Example |
|---|---|
| stm32f103 | Mini v2 example |
| Ubuntu | Minimal application example |
| Ubuntu | Publisher example |
| Ubuntu | PX4/ArduPilot HITL communicator (Cyphal <-> ROS converter) |