Replies: 4 comments 7 replies
-
Chris, I was thinking about this problem. The main question here I think is: how to support multiple ways of detection? Some boards will be detected on I2C eeproms, others by identifying specific sensors, that can be on different I2C buses, in the SPI, etc. How can we make something generic enough? The easiest approach that could already add s lot of value (it would support both the Navigator, the Argonoth and also your board) would be to allow specifying a list of I2C buses and addresses to be fetched from. This list could live somewhere where the user could edit it easily, maybe the bag of holding, or a config file (that could be edited with the built-in file-manager). Another approach could be to make the ArdupilotManager board detector to try to parse and read python files stored in a fixed folder, that defines a standard-named function for board detection. There could be a file for each board, for example. The user could support his own board by only adding a new file with it's board detection script to that folder. What do you think about those? |
Beta Was this translation helpful? Give feedback.
-
Hi Chris. At the moment you can contribute directly with ArduPilot Manager and add your hardware definition in the code to include support to you custom hardware. Is there a reason why a fork is necessary ? Custom board support is really tricky. So.. the user could provide a custom definition file for us to check it and load a firmware, but they could also contribute to BlueOS as well. |
Beta Was this translation helpful? Give feedback.
-
I have a PR ready and tested. However, we are going to hold off on submission for a while, since our hardware are going thru some revisions. However, there is a new issues that has arisen. Turns out we need the serial configuration feature. When I define a custom board, then I lose access to this: Example submission code: If you have some pointers one how I could bring back this feature to my custom board? @patrickelectric @rafaellehmkuhl |
Beta Was this translation helpful? Give feedback.
-
Hi, are you implying that the serial port configuration menu is not working
at all ?
…On Tue, Aug 6, 2024, 04:47 goasChris ***@***.***> wrote:
I have a PR ready and tested. However, we are going to hold off on
submission for a while, since our hardware are going thru some revisions.
However, there is a new issues that has arisen. Turns out we need the
serial configuration feature. When I define a custom board, then I lose
access to this:
image.png (view on web)
<https://github.com/user-attachments/assets/efb74cb8-0d3c-46ae-aad1-f7d1b218f3eb>
Example submission code:
***@***.***
<goasChris@361cccc>
If you have some pointers one how I could bring back this feature to my
custom board? @patrickelectric <https://github.com/patrickelectric>
@rafaellehmkuhl <https://github.com/rafaellehmkuhl>
I don't need the fancy graphics for now, as long as I would be able to map
the hardware devices to internal blueOS "serial numbers".
—
Reply to this email directly, view it on GitHub
<#2630 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAJIYCJ46GIEUIM7XZVCANLZQCZTZAVCNFSM6AAAAABILHICO6VHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTAMRVGI4TGMQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Hello and welcome!
Why
I wanted to have a discussion around opening the door for a more generalized / custom board implemented in blueOS.
For instance, we currently have a use case where we need to be more efficient with the physical space in our robots, and we've essentially re-arranged the physical location of some of the Navigator parts, which also resulted in SMBus and addresses getting shuffled around a bit.
This means that this check will of course fail:
BlueOS/core/services/ardupilot_manager/flight_controller_detector/Detector.py
Lines 22 to 37 in 9a0a1b6
Now, the board has the same components (ADS115, AK09915, BME280 and PCA9685), and should be able to be treated as a regular r5 navigator (at least in theory).
In order for us to continue with this custom board, we would need to fork and maintain blueOS and swap out the values, which is a bit of unfortunate busy work, and is likely to run us into some conflicts in the long run. I also saw on the forums that we were not the first to try using a board that is a bit different, and figured it would warrant some discussion.
Suggestions / Solutions
If possible, it would be very neat if it is possible to either pass in custom values (while keeping the defaults, of course), somehow. Either thru simply reading a text file, reading
env
or similar. Could maybe even be supplied at docker build time.Bigger picture and much larger change, could perhaps be to supply one or several new functions in the Detector class, where one could essentially construct a custom board with supported components, or something to that effect. I admit I have not thought too much about the bigger scenarios one could support if one wishes, just airing some ideas.
It is not lost on me that there is a cost to supporting more variants and custom boards, not only in tech debt, but also in support. I appreciate anyone taking the time to comment on a possible solution, and I am more than happy to assist or even implement the suggested design, should this be a feasible idea.
cc @rafaellehmkuhl (as requested)
Beta Was this translation helpful? Give feedback.
All reactions