@akolobov What @lucamax has helpfully suggested is entirely correct. Thanks, @lucamax!
Thanks to you Pavel for such a great product as the Zubax GPS , IMO the best GPS / compass device in the market.
Super, the GPS is alive again! Thanks people! And yeah, I totally share @lucamaxās sentiment regarding this unit.
Hey
if one gets stuck with a project, itās sometimes not a bad idea to let it rest for a while. So it is with this project. I also regained interest because I could free quite some substantial resources in the STorM32 gimbal controller, which gives it now the muscles to handle UAVCAN, and because I have seen that EShamaevās big PR is getting closer to be merged (and in fact had been merged now, congrats!).
Earlier I gave up, because of all sorts of āinstabilitiesā. I canāt say for sure what THE solutions was, but I believe (strongly) that my previous issues were because I was using the SN65HVD230 CAN transceivers. These are so-called 3.3V transceivers, and on the osci I just saw āuglyā CAN signals. So, I watched out for alternatives, and I finally settled for the TJA1051 (which I really like a lot). These give signals as seen in the textbook. Moreover, what I found was that it is sufficient to have only one TJA in the system, and the signals would look good (i.e. even if the other transceivers in the line are SN65HVD230). So, I equipped my AUAV-X2 with a TJA instead of a SN65, and since when I do not appear to have any of the previous issues. I further looked on the web, and I noticed that the pixracer is also equipped with a TJA (and I think also PH2), which might explain why others might not have seen issues like me, even then using SN65-equipped nodes (such as the Zubax gps). I also noted that the TJA is a ā ā ā ā ā ā ā ā ā recommendation (but not the SN65). I perfectly understand that Pavel does NOT support that conclusion, that the SN65HVD23x can cause issues, and I accept that. However, the above is a truthful report of what I did and saw, whatever the correct conclusion is.
Although not of much importance, I also niced up my hardware, i.e. designed pcbās for the uc4h-slcan-adapter and the uc4h-node bridge, pictures below. All bench tests ran very well. So, I think I can start again with out-door test.
Chears, Olli
Node:
SLCAN-adapter:
Bench test setup:
could spend evening for first out-door tests ā¦ all went very well ā¦ no issues
I guess, once I understand the dual gps thing, I can prepare for real flight
well, maybe one āissueā ā¦ the main gps (i.e. the one connected to uart, which is my ānormalā gps) repeatedly took much longer to fix and also scatters much more than what I had become used to (the green curve I would consider typical) not sure why that is, maybe I have both gps too close? Will have to see.
(Iām using ac3.5-rc9, btw)(and the main gps is a drotek m8)(and blending was off)
next step forward
STorM32 goes UAVCAN
Sadly, to the best of my knowledge, ArduPilot doesnāt yet support any gimbal related UAVCAN messages, so not much I can do further at the moment.
Noted, and forwarded
What would make sense to send and receive to a gimbal ?
well, thatās a good question
There are some uavcan gimbal messages in the standard DSDL, http://uavcan.org/Specification/7._List_of_standard_data_types/#uavcanequipmentcamera_gimbal, but they donāt look very useful to me. Not sure how they made it to a standard.
I have no suggestions, and am hesitant to make some. I just hope that the uavcan message set is going to be a bit more - donāt know how to say it properly - farsighted?
I think AP supports the actuator messages. I donāt yet understand them but I guess they carry the RC inputs as send by the transmitter, so, as a first crude ādo somethingā, I consider misusing them for controlling the gimbal orientation. But thatās certainly not for permanent.
@olliw42 you are right, the current gimbal control messages have some deficiencies. They were defined far before the current specification was released, and they donāt even make use of the more advanced DSDL features such as unions, which were added at a later stage of development. Luckily these messages are not in active use at the moment, so we could deprecate them easily if there was a better alternative to replace them with. I urge you to list the shortcomings that you have detected with these definitions so that we could start fixing them. Thanks!
THX a lot for skimming in.
as regards messages, itās IMHO not clear which messages should be specific and which should be general and a standard - we had a related discussion before.
I see the effort to support the Gremsy gimbal, there would be now the STorM32, and I guess one also should throw Alexmos/Basecam into the game. My feeling is that at the end of the day there wonāt be such a thing as a āuavcan gimbalā driver in ArduPilot, but drivers for each gimbal. Also, I think the answer depends much on the type of function, e.g., if itās about messages to control the gimbal, or messages reported by the gimbal. Iād also like to see messages related to discovery and startup.
I guess what I try to say is, that this is not something which I can see would be settled easily and quickly. To be honest, in the bottom of my mind Iām assuming that it eventually will go as before, that Iāll do a betacopter. I know, not a very optimistic projection, but itās not always possible to reconcile everyoneās opinions in one standard.
Anyway, I think that this discussion is somewhat off topic, i.e. would be better placed in a separate thread.
And in case I have not mentioned it recently, many thx again for all your efforts with UAVCAN! You may note, I have a lot of fun with it.
Y E S
after this period of āsilenceā, the uc4h project has reached a mile stone today
I did the first real flight using (only) the uc4h gps-mag node ā¦ and, it went well
To reach that point I had to build a new copter. My old one was just too small and cramped. From the pics you easily will recognize what it became LOL.
My initial plan, as mentioned before, was to have the gps and magnetometer of the uc4h node enabled in addition to the usual gps and two magnetometers, but to configure things such that the 2nd gps and 3rd compass are not used but their data recorded. However, this didnāt worked out for reasons (bugs?) described elsewhere. So, I decided to take the risk and substitute the normal gps+magnetometer with the u4ch gps-mag node. To do that with minimal intrusion I installed both gps+mag units on the copter, but in a first flight had connected only the normal gps+magnetometer unit, and in a subsequent flight only the u4ch gps-mag node.
Since Iām testing and running the code on the bench for such a long time now, and relevant things also successfully went into uavcan-izing the STorM32, I had quite some trust in it and was confident that it will work out well. Nevertheless, itās a great thing to actually see that in a real flight.
In the data log, I see two red EKF warnings/errors. Iām not sure what they are supposed to tell me. Signs of trouble?
There had been one āsurpriseā, namely with the configuration of the magnetometers. Usually there is some smartness at work, which puts the external mag on ID1 and the internal on ID2, and sets the primary, used, and external flags accordingly. Not so with the uavcan mag, it was placed as ID2, and the primary, used, and external flags were set quite incorrectly. So, a point to improve, but not a big issue.
Finally: Pavel, THANKS so much, sir!
Cheers, Olli
Pics and the log file:
www.olliw.eu/drop/apm/AUAVX2-canunit-36dev-flight-w-uc4h-2017-08-04-18-18-48.bin
and the next story to tell
my uc4h powerbrick node is a great success so far
I think this brick, if it will turn out to be reliable, has some top-notch features:
(A) Uavcan:
well, obviously, ā¦
(B) 5.3V by low-noise 42V, 3.5 A switch regulator:
I use the LT8610A, thatās a member of the SRs used by the ACSP- series of AUAV/mRo. So, youāll agree, top-notch.
Ā© 100A current Hall sensor:
no lousy resistor shunt, hall sensor should be state-of-the art. Iāve used the ACS770, which is the predessor of the widely used ACS758, with slightly better specs. I was considering also to use a ACS780/1 because of itās significantly smaller size. It has also the advantage of a 3.3V version. But itās small size has also its cost (e.g. I think the ACSP7 is not perfectly designed).
(D) LDO stabilized power for the current Hall sensor:
thatās actually a point which I think the ACS modules so far have all overlooked (I just know about Mauch and ACSP7), the ACS is ratiometric. That means that if its power supply varies also the current sensor signal varies proportionally. If the ACS is now directly powered from the 5.3V source that means that if one draws significant power on the 5.3V line (such as 2A), the voltage drops by e.g. 0.3V or 6% in my tests, also the current on the main line will be measured incorrectly by 6% - which is IMHO quite a lot. So Iāve added a LDO for the ACS.
(E) Precise Charge Estimation:
This is another unique feature. Since the UC4H power brick has itās own microcontroller, it can determined the consumed charge (mAh) much more precisely than would be possible otherwise. This is so because it can measure the current at a much higher rate and thus track current fluctuations much more precisely. Specifically, the nodeās firmware measures the current at 1 kHz, which is several 100 times faster than with the currently available power bricks.
the only disadvantage: it is not really tiny (but obviously itās the first test version)
I couldnāt do a test flight, since power.CircuitStatus is not yet supported by AP (if Iām not mistaken, there is āonlyā a PR). I actually struggled a bit with finding a procedure to test the brick, but luckily I found in my garbage bin an old heater element, with a resistance of ca. 2 Ohms, so perfect for some bench tests. So, I could do a good set of tests.
(i) heater element connected to the 5.3V power source => ca 2.3A Amp draw, no issues with that, the voltage ripple stays at 5-10 mV (the switching regulator chip gets hot, but thatās how it is). The voltage drops by about 0.3V to ca 5.0V, but thatās OK.
(ii) 3S lipo connected to the heater heater element, with the powerbrick in between => current draw of ca. 3-4 A. Voltage&Current recorded with UavcanGUITool => everything looks perfectly fine
(iii) 3S lipo connected to the copter with the powerbrick in between, one motor equipped with prop => current draw of up to ca. 9 A. Voltage&Current recorded with UavcanGUITool => everything looks perfectly fine
Iām really happy with that.
Hopefully the āAP_BattMonitor: UAVCAN supportā PR gets merged into master soon
This brings up however again the question of a concept for how the CAN bus should be powered ā¦
Olli
here the module and some āproofā by pictures
test (i) (1DIV = 5mV):
test (ii):
test (iii):
first release v0.19 uploaded, and some info created
Binaries for the uc4h slcan adapter and uc4h gps-mag node can be found here: https://github.com/olliw42/uavcan4hobbyists.
Some info on the project and build schemes: http://www.olliw.eu/2017/uavcan-for-hobbyists/.
The uc4h SLCAN adapter can be build for as little as $4.71, and the uc4h GPS-magnetometer node for as little $3.70 (exclusive PGS+compass module). Thatās DIY, isnāt it.
some pics of schemes and builds
Olli, this undertaking of yours might be helpful for people who are starting with UAVCAN, even if they are not hobbyists. Would you care to announce it on the UAVCAN mailing list?
Thanks
step by step ā¦ towards completion
I today did a test flight with my uc4h power brick, and - not unexpected - no issues with it.
For me thatās actually a big step, since I was shying away for quite some time from doing my own switching regulators, for all the problems one may encounter here. But it seems I did that carefully enough. I did some range test, not very professional admittedly, but as good as I could, and I could not detect any negative effect of the uc4h power brick.
The current AC3.6-dev master doesnāt support the CircuitStatus UAVCAN message, but there is a PR by EShamaev (https://github.com/ArduPilot/ardupilot/pull/6527). So, yesterday, I downloaded the master and added the changes of that PR myself. Surprisingly enough, the compile did work out. So, Iāve loaded that firmware, and it works nicely, I had no problems with getting the flight controller to recognize the UAVCAN messages emitted by the uc4h power brick. Nice job, EShamaev. Not sure why UAVCAN development seems to be on hold since so many weeks.
Here the setup:
Here the flight log:
www.OlliW.eu//drop/apm/AUAVX2-canunit-beta36r00103-flight-w-uc4h-gpsmag-powerbrick-2017-08-13-13-38-08.bin
I did even a bit more. Iām not happy with using CircuitStatus, IMHO thatās conceptionally a bit inconsistent - my reasoning is found in the mentioned PR. So, Iāve added a new message GenericBatteryInfo to both the ArduCopter code and the uc4h power brick code. Cool enough, also that worked very well!
(I found some general issue, https://github.com/ArduPilot/ardupilot/issues/6762)
Of course, needless to mention, the GPS and magnetometer were again a uc4h gpsmag node. I in fact had more than a half dozen flights with it now, and have not encountered a single issue. So, I guess, one slowly can start to think about labeling the uc4h nodes as ādoes workā.
The next step will of course be to add UAVCAN - STorM32 support, but I have feeling that this is not going to be as simple as adding the GenericBatteryInfo message LOL. Letās see.
Cheers, Olli
Iām not sure thatās of interest (Iām a bit entertaining myself here LOL), but just in case:
Iāve reworked the pcb layouts for the SLCAN adpater, gpsmag node, and power brick, removing few tiny bugs and making the latter two slightly smaller and ābetterā. Iām going to order them the next days, but I of course could order more of them. So:
In case anyone wants a pcb, pl leave a note.
This are the current v1.0 versions of the boards.
uc4h gpsmag node:
uc4h SLCAN adapter:
uc4h power brick:
Great job olliw !
I think that it can be very useful because I2C bus can have several problems .
Thx, sir.
I think it now went far beyond I2C. I actually like the power brick most, with all itās innovs it became the brick I wanted. Already now I canāt imagine how I could have lived without it
I have to show this, to demonstrate the point (E) Precise Charge Estimation of the uc4h power brick
(and I guess implicitly of the importance of (D) LDO stabilized power for the current Hall sensor):
I did a ālong timeā test, where I let the copter hover in poshold until the battery ran below ca. 20%, just for the sake of doing it. I used a freshly charged battery, and after landing charged it fully.
the u4ch power brick recorded a charge of 4336 mAh (see the log below)
my charger shows a charge of 4391 mAh
so, thatās accurate to better than 1.5% !!!
Note that this is without any calibration of any sort! The only thing I did is to take values from the ACS770ās datasheet and values from the electric scheme of the power brick to calculate conversion factors.
How cool is that. Itās definitely so much better than anything Iāve got with my 3DR-type power bricks, even with calibrating them. An accuracy of 1.5% in fact sounds to good to be true, but thatās a truthful report of what I just got.
Considering the error sources in the system (accuracy of the ACS770, accuracy of resistances, accuracy of LDO, accuracy of charger), the observed 1.5% is in fact somewhat fortunate, several % are however very realistic.
log file:
www.olliw.eu/drop/apm/AUAVX2-canunit-beta36r00103-flight-w-uc4h-gpsmag-powerbrick-2017-08-15-14-45-02.bin
charger result:
yesterday - unintendedly - I got another reliable measurement point
I did an autotune, and since one can expect this to take a bit longer I started with a freshly charged battery (thatās important to get a reasonable data point). I however ended up doing 4 flights with that battery (=power downs in between), (1) autotune flight, (2) brief control flight with the new PIDs, (3) I went home and briefly tested again, (4) my neighborās cousin wished to see it flying too, so, another brief flight. From the logs I read off these discharges:
1: 3138, 2: 461.25, 3: 385.25, 4: 576.5 = 4561 mAh total
My charger told me a recharge of: 4652 mAh
so, thatās an accuracy of 2.0%
as said before, itās unclear how coincidental this is, I certainly donāt know e.g. how accurate the charger is, etc. pp., but I find it funny that the numbers add up to something reasonable even though the battery has been disconnected repeatedly.