iNavFlight / inav

INAV: Navigation-enabled flight control software
https://inavflight.github.io
GNU General Public License v3.0
3.16k stars 1.48k forks source link

Bidirectional DShot #5549

Closed heikobischoff closed 9 months ago

heikobischoff commented 4 years ago

Current Behavior

To use RPM filter, the ESC telemetry must be connected to the flight controller.

Desired Behavior

Most ESCs with BLHeli_32 and BLHeli_S are supporting bidirectional DShot. The ESC telemetry will be delivered to the flight controller by the motor wire.

Suggested Solution

Betaflight is supporting bidirectional DShot since version 4.0/4.1. It would be great to implement/adapt this feature in iNav.

Who does this impact? Who is this for?

Mostly all multirotor builds which want to take advantage of RPM filter without wiring an additonal line from the ESC to the flight controller.

Additional context

Link to the Betaflight RPM Filter page: https://github.com/betaflight/betaflight/wiki/Bidirectional-DSHOT-and-RPM-Filter

denisiussion commented 3 years ago

Any chance to have it on nearest release?

harryjph commented 3 years ago

I'm not able to work on this right now, but unless anyone else is working on this, I'm planning to tackle this next.

DzikuVx commented 3 years ago

Be our guest mate!

pt., 23 kwi 2021, 18:48 użytkownik Harry Phillips @.***> napisał:

I'm not able to work on this right now, but unless anyone else is working on this, I'm planning to tackle this next.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/iNavFlight/inav/issues/5549#issuecomment-825784419, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHMBG6PHPTNYYV3EAHQZCLTKGQHVANCNFSM4LV6V4IQ .

padcom commented 3 years ago

Any plans (near or far) to implement it?

harryjph commented 3 years ago

@padcom I plan to do it, but it's quite complex and I don't understand the STM32's DMA architecture well enough at the moment. I've written an implementation for ESP32 so that I understand what goes on on the wire, I'm just fighting with DMA. Consider it a far plan, not a near one.

AADDZZ commented 2 years ago

@harry1453 Hi bro ! Any News about this feature ? Are you still working on it ?

Lot of people like me are waiting this to switch from Betaflight to Inav.

RipperGOT commented 2 years ago

Please, implement this option, it would be very useful. Even for esc like the Hobbywing rotor 60a blheli_32 which has no telemetry output.

Thanks guys!

krizw commented 2 years ago

Any news on this feature being added?

r1000ru commented 1 year ago

Since now the blheli s esc with bluejay firmware and the blheli32 esc have begun to give not only RPM, but also temperature via bidirection dshot, performing this issue would be very useful.

Alex-TV commented 1 year ago

There is a clone of the repository where this has already been done. Any chance to include it here?

lida2003 commented 1 year ago

2023, still don't have bdshot supported yet?

There is a clone of the repository where this has already been done. Any chance to include it here?

fritzrichter commented 1 year ago

Hey guys, it's my first comment here. I just switched from Betaflight to iNav as especially as a beginner I love to have the position fix feature to pause or even land easily, quite nice and Betaflight guys seem not to want to invest into this as they "mainly focus on performance" - oh man. Anyway, the bdshot is something which seems you want to have and I was quite sad that this is not supported yet, quite old request though. Any update or plans? Quick question, as Betaflight has integrated it and it's open source as well, isn't it easy to get the underlaying idea from their source code? Why is it so hard to get the best out of these two worlds and let each other inspire a bit?

danarrib commented 1 year ago

Hey guys, (...) I just switched from Betaflight to iNav (...) Quick question, as Betaflight has integrated it and it's open source as well, isn't it easy to get the underlaying idea from their source code?

Check this out: https://github.com/iNavFlight/inav/wiki/INAV-for-BetaFlight-users

marianomd commented 9 months ago

This is good news @DzikuVx ! What is the PR implementing this? Thanks

r1000ru commented 8 months ago

It is issue is really completed? May be remove support blheli32 telemetry and add bdshot, that use and blheli32, and bluedjay, have rpm, voltage, currency and temperature?

MrD-RC commented 8 months ago

Why remove the telemetry option? That works fine. It would make no sense to remove it.

@DzikuVx has said a few times in his live streams that there is no intent to implement bidirectional DSHOT. I’m sure he mentioned that is can cause issues with the communications. Especially if longer cable runs are used.

course-up commented 8 months ago

I am little confused, the feature request is closed without comment. Is that good or bad, does that mean that it will be implemented or that the feature request will be just ignored?

lida2003 commented 8 months ago

I am little confused, the feature request is closed without comment. Is that good or bad, does that mean that it will be implemented or that the feature request will be just ignored?

DShot telemetry is supported, but not Bi-directional single-wire telemetry. from https://github.com/iNavFlight/inav/wiki/INAV-for-BetaFlight-users

@DzikuVx @MrD-RC @course-up @r1000ru I think it's closed as inav'll NOT support this feature, PLEASE correct me, if I'm wrong.

a) As I didn't see any PR about bdshort supported right now. b) @MrD-RC has stated "might cause issues with the communications, especially if longer cable runs are used."

Note: Just use 32bit ESC, which has UART telemetry.

marianomd commented 8 months ago

So when closing, @DzikuVx should add the correct label, in this case wontfix or similar.

Patronics commented 1 month ago

There is a clone of the repository where this has already been done. Any chance to include it here?

@Alex-TV Can you send a link to this fork? Has it been updated to maintain compatibility with the latest INAV release?

Also can someone (maybe @MrD-RC or @DzikuVx) clarify why apparently bidirectional dshot is so problematic that it can't even be added as an option?

My ESC doesn't support the older telemetry style, so if I switch from Betaflight to INAV (which I really want to do, the design goals are much closer to fitting my octocopter's use case), I'll have no telemetry available at all. Won't that cause bigger issues than just a vague "might cause issues with communications on long cable runs". Betaflight doesn't seem to have had issues with bdshot, so why would the issues only be caused in INAV?

course-up commented 3 weeks ago

@DzikuVx has a peculiar opinion on some features. One of these features is Bidirectional Dshot and he thinks that it is not needed and blocks intentions to improve iNav. A great video (by Mark Spatz) covers the benefits of Bidirectional DShot: https://youtu.be/eoxceps6Dhk?t=194

sensei-hacker commented 3 weeks ago

@course-up maybe you didn't see what DzikuvX said right here, in this issue?

I'll quote it for you. HarryJPH said he planned to work on and DzikuvX said: "Be our guest mate!"

https://github.com/iNavFlight/inav/issues/5549#issuecomment-825857366

That's right here in this page!

There are some challenges, particularly when people run DSHOT600, which updates each motor 36,000 times per second. (Much faster than the loop time, and therefore mostly redundant, but the same people who want bidirectional DShot tend to do that.) Additional noise on the wire doesn't help when you're already running the communication at a very high speed.

But what he has said is you're more than welcome to work on it. He's not blocking anything. He isn't going to spend his time doing it. I'm not going to spend my time doing it. He has invited you to do it if you want to. Just in case you're confused, I don't have any obligation to spend my weekends working on this for you. You can do it if you want to. If you don't want to, please stop making stuff up. Thanks.

Patronics commented 3 weeks ago

Well, it would be a bit more likely that someone would do it if this issue wasn't "closed as completed", making it harder for anyone wanting to contribute to find it and realize that it would be a useful feature that hasn't already been implemented!

Not everyone that wants to get telemetry from their motors (with the only protocol their ESC supports, despite being seemingly the most widely recommended 4-in-1 ESC that I've seen) is the sort of person who also wants the fastest and potentially noisy communication protocol, despite your overgeneralization. I think that even DSHOT150 with telemetry would potentially be more important than DSHOT600 without it, would it not?

In the interest of providing a reference to make it easier for anyone who's able to contribute, here's some relevant commits from the betaflight git repo (start at the 3rd result, the initial commit adding bidirectional Dshot to Betaflight). Some additional results can be found by searching "bidirectional dshot", but it seems that the most substantial commits I found simply referred to the feature as dshot telemetry.

There's also this repo and associated blog post that extensively documents a reference implementation of BDShot, and could be a valuable resource.

Hopefully this is helpful for someone.

course-up commented 3 weeks ago

Bidirectional DShot has been around for quite a long time and many ESCs do not support ESC telemetry via UART. Therefore, the feature request of iNav users is understandable.

Pawel's opinion on bidirectional DShot and RPM filters is well known from live streams and comments. Closing the ticket without any comment also speaks for itself. I don't expect the feature to come to iNav, at least not in the near future. But Betaflight is catching up fast: Alt Hold is in the works and Mark Spatz was mentioning that Pos Hold is also on the roadmyp. For me, that would be perfectly fine.

rts18 commented 3 weeks ago

Guys! If you follow this project you should know INAV has a much smaller development team than Betaflight, with most flying fixedwings. Unfortunately the performance benefits of BDshot are not realized by much of the team. And even if they were, That would still be no guarantee it could be added due to each developer having a specific coding skills set. There is no shame in saying each to his own ability. INAV has only one developer continually adding to the navigation code. With his efforts sustaining the whole project in my opinion. He is little known due to his lack of presence on social media. So don't disrespect his efforts by forcing a guilt trip and complaining in ignorance.

If you know any developers who have a coding knowledge of DMA architecture; ask them if they'd be willing to contribute to the INAV project.

Alt Hold is in the works and Mark Spatz was mentioning that Pos Hold is also on the roadmyp. For me, that would be perfectly fine.

@course-up Since you follow Mark, Take note of his words of wisdom in this video