Agenda/Notes 29.10.2018
Kjetil (the great note taker) missed the meeting due to daylight saving time, please edit in notes if you have some.
Kjetil (the great note taker) missed the meeting due to daylight saving time, please edit in notes if you have some.
Note: American Holiday, Scott will not be able to attend
libuavcan_dsdlc
to use PyDSDL, which is available for an early review (where though). The next step is to rewrite it to better accommodate the new PyDSDL API (which differs drastically from pyuavcan’s).Present: @scottdixon, @Zarkopafilis, @pavel.kirienko. @Linjieqiang was experiencing connection issues and could not join.
Today we talked about Yukon – the new GUI tool. @Zarkopafilis has posted the summary over at Yukon UI & Rest API.
Sorry I couldn’t make it today. Updates on my end: working to get an initial version of pydsdlgen into the UAVCAN github org as a repo. Most of the big kinks have been worked out. Just writing tests now.
Pavel - PR for UDP transport completed. To demonstrate
Ensure no design decisions which prevent the implementation
Abraham -
Studying ROS - more aware of what UAVCAN framework brings to the table
Seeing the similarities. Big picture is stack over UDB. Robot with Linux
Conceptual similarities between UAVCAN and ROS.
E.g software engineering concepts - publish subscribe in both.
CAN in physical layer - ROS by software services.
Details are in UAVCAN tutorials.
Higher level abstraction by UAVCAN.
Progress/Questions problems with S32K driver?
(Abraham)
Only part left is ‘write’ function Lib UAVCAN -
MIT license (original) - or BSD 3 clause
Abraham -
Next validate code in each function.
Make it portable to all S32K family
S32K 146 and 148 chips have two interfaces. Most have one.
Will make driver work on all .
Note issue:
-=-=-=-=-=-
static std::deque<CAN::Frame> frame_ISRbuffer;
Should use memory allocator as provided by the library. Now using shared heap - fragmentation and non-deterministic.
Must provide an allocator for the container. This is presently Incompatible
https://en.cppreference.com/w/cpp/memory/allocator
Scott has a start on the memory allocator:
Pavel - use this allocator please. No examples but look at this.libuavcan/memory.hpp at 1e0d947132b565601612f7cae528ce31f492f9f9 · OpenCyphal/libuavcan · GitHub
Provide this type as a second template to ???
Best to keep discussion public on forum. Talk with Scott on Forum if/when you have problem.
That part of STL usage was not clear to Abraham - thanks
Think this is the only part that is making use of Dynamic allocations.
Pavel
Sorry I missed the dev call. Thanks for the notes. I’ll consume them today. I’ll spend some time looking at the s32k repo today.
MIT license is what we’ve used everywhere to date. We should stick with this if we can.
I’ve already ported the pool allocator from v0 to v1. It’s available as libuavcan::platform::memory::PoolAllocator (https://github.com/UAVCAN/libuavcan/blob/uavcan-v1.0/libuavcan/include/libuavcan/platform/memory.hpp#L203). The trick will be allowing the application to provide the static memory pool since we want the driver to accept the memory configured by the application instead of directly consuming memory itself.
As for my status: My focus now is to, again, try to get back to libuavcan_v1 serialization code generated from dsdl.
The UDP stuff is interesting to us, BTW. I had another engineer asking about it. Will we be providing support either in libcanard or in a libcanard-like (i.e. minimal) project?
You are certainly not alone in that boat
The framing logic of high-overhead transports like UDP is a little different from CAN; they use simpler and more robust transfer reassembly policies which are hard to generalize in a manner compatible with CAN, so I doubt that the idea of building a robust multi-transport implementation for embedded systems is feasible. My PyUAVCAN rewrite is multi-transport capable, but then again it’s ~20k LoC large and it’s not yet quite finished.
I think I should put together a brief post sometime soon to shed some light onto PyUAVCAN and implementations of alternative transports.
The UAVCAN team is currently working on a Survey with the goal to understand what type of adopting vendors are already in the ecosystem, we are hopefully going to capture feedback on v0, v1, and the migration path.
Question areas that the call attendees think we should implement:
NXP is working on a Development Board reference design, that will be sold very low costs, this is a perfect entry point for devs into our project.
Ramón; I think we should Identify and list UAVCAN hardware that is already out there.
The UAVCAN team has identified a developer that can assist in the integration of v1 with PX4 and project Yukon, the team will create a value proposition document and present to vendors.
The goal is to get funding to bring those projects to the finish line.
What’s the ask, how much money, what’s the benefit, what they are going to do
Action: ramón work on value proposition
Pavel: Had a prominent discussion with the APM team on v1 adoption. They are ready for us to let them know when we are ready for them to implement.
Scott: Just writing unit-tests for C++ structure generation in Nunavut. Will have PR this week and then move on to generating (de)serialization logic in Nunavut. These types and (de)serializers are provided to libuavcan where I will consume in that project’s media layer.
Ramon: UAVCAN v1 Sponsorship Value Prop doc ETA Friday. Survey will be scheduled on the next Dronecode newsletter.
Core team covered the main topics, needs one last pass from @mrpollo. This is scheduled to appear on the latest Dronecode newsletter first week of December.
Core team met over the weekend and defined the value-prop for supporting vendors, we are waiting for @mrpollo to give form to document.
-fno-exceptions
with no loss of functionality or correctness).