Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DS-015: the drone namespace #81

Merged
merged 49 commits into from
Oct 13, 2020
Merged

DS-015: the drone namespace #81

merged 49 commits into from
Oct 13, 2020

Conversation

pavel-kirienko
Copy link
Member

@pavel-kirienko pavel-kirienko commented Sep 22, 2020

This PR brings in the first iteration of domain-specific services for drones. The background is explained on the forum at https://forum.uavcan.org/t/ds-015-mvp-progress-tracking/936.

This design is optimized for CAN FD and more capable transports (such as UAVCAN/UDP or UAVCAN/serial), but it is, nevertheless, compatible with Classic CAN. See this spreadsheet for more info: https://docs.google.com/spreadsheets/d/1xSBcnnqbHBEZfFg4cqiS1weXHwX3X0MFWpW1WcEBIds/edit

Every definition here bears version number v0.1, meaning that nothing is release-ready yet. We will start stabilizing things as soon as production systems leveraging these services will start being released.

Related thoughts: https://forum.uavcan.org/t/on-multi-agent-services-and-design-guidelines/947

GitHub does not (yet) support syntax highlighting for DSDL files, so I recommend viewing the files locally using VSCode with the uavcan.dsdl extension. Just clone this repo and open its directory in VSCode, then accept all recommended extensions.

@pavel-kirienko pavel-kirienko added this to the 1.0 milestone Sep 22, 2020
@pavel-kirienko pavel-kirienko self-assigned this Sep 22, 2020
@pavel-kirienko pavel-kirienko marked this pull request as draft September 22, 2020 21:42
@pavel-kirienko pavel-kirienko changed the title [WIP] DS-015 ESC service rework [WIP] DS-015 part 1 Sep 26, 2020
reg/drone/service/actuator/esc/Status.0.1.uavcan Outdated Show resolved Hide resolved
reg/drone/service/actuator/esc/Status.0.1.uavcan Outdated Show resolved Hide resolved
reg/drone/service/actuator/esc/Status.0.1.uavcan Outdated Show resolved Hide resolved
reg/drone/service/actuator/util/Feedback.0.1.uavcan Outdated Show resolved Hide resolved
reg/drone/service/actuator/util/Feedback.0.1.uavcan Outdated Show resolved Hide resolved
@pavel-kirienko pavel-kirienko marked this pull request as ready for review September 29, 2020 15:53
@pavel-kirienko
Copy link
Member Author

The documentation is a bit lacking still, and some data types or namespaces may need to be moved here and there, but the general structure is unlikely to change drastically. We will know as we go along adding new data types.

If you need more context, please refer to the links provided in the OP post.

@TSC21 TSC21 requested a review from dagar September 30, 2020 16:54
@pavel-kirienko
Copy link
Member Author

I just pushed a number of changes to address the comments left here by Nuno & Peter and to close the pending TODO. This is still a draft but it may be good for merging.

@dagar
Copy link

dagar commented Oct 8, 2020

FYI @RomanBapst

@pavel-kirienko pavel-kirienko changed the title [WIP] DS-015 part 1 DS-015: the drone namespace Oct 8, 2020
reg/drone/README.md Show resolved Hide resolved
reg/drone/README.md Show resolved Hide resolved
reg/drone/service/common/Arming.0.1.uavcan Show resolved Hide resolved
@TSC21
Copy link
Contributor

TSC21 commented Oct 9, 2020

We are setting up an hard timeline for the review of this PR at the 13th of October (Tuesday), after the Dronecode SIG call. Thanks in advance for everyone reviewing this PR!

@pavel-kirienko
Copy link
Member Author

At the risk of being redundant, I want to state once again our policy concerning the units of measurement because it seems to occasionally cause some confusion.

Every unit of measurement used in this design is either a base or derived SI unit. Exceptions may appear in the future, but I don't think that this is a likely scenario. It follows that we don't have RPM (it's radian/second), ampere-hours (coulombs), watt-hours (joules), degrees Celsius/Fahrenheit (kelvin), degrees (radian), etc. The motivation for this choice is provided in the UAVCAN Guide.

The units of measurement are not mentioned for fields that are of type uavcan.si.* because that would be redundant: the unit is encoded in the definition of these types. For example, uavcan.si.unit.energy.Scalar is defined as:

float32 joule
@sealed

# When the battery is not armed, it may limit the output power below the nominal rated value and disconnect the load
# should the charge level fall below the critical level.
# When the battery is armed, it is not permitted to limit the output power or energy regardless of the risk of damage.
# If the adaptive protection is not supported, the battery should always report its status as ARMED.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love this!

Co-authored-by: Jacob Schloss
Base automatically changed from beta to master October 12, 2020 18:26
@pavel-kirienko
Copy link
Member Author

Just pushed a couple of inconsequential changes:

  • merged master into this branch because we just merged another PR
  • renamed kinetics into dynamics

Copy link
Contributor

@TSC21 TSC21 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Great job @pavel-kirienko! Thanks for everyone on the Dronecode SIG that provided their insights during the last months to help define the requirements for this first set of data types. This is the beginning of something great! @mrpollo please pass this message and thanks as well!

@pavel-kirienko pavel-kirienko merged commit 6bf3ce3 into master Oct 13, 2020
@pavel-kirienko pavel-kirienko deleted the ds-015-initial branch October 13, 2020 17:19
@echoGee
Copy link
Contributor

echoGee commented Jan 22, 2021

Had a suggestion to include all the individual cell voltages of the pack on the bms status (https://github.com/UAVCAN/public_regulated_data_types/blob/master/reg/drone/service/battery/Status.0.1.uavcan) . I believe it would help with

  1. Predicting failures and battery health issues for (battery-weather), (battery-flight profile) combinations that might be hard to test by battery/drone manufacture.
  2. Forensics on drone failures

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.