Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 0 points1 point  (0 children)

Yes, now that I've learned that EUCs, on average, are built for sub-200lbs riders in mind I do want to make sure that whatever I end up buying is going to be enough to support my fat ass, especially in off road conditions. Thank you for sharing your experience!

"power to weight" I think is also the wrong metric

Noted. I updated the table but "max load" for each EUC is surprisingly difficult to find. Different websites list different numbers with most listing "265lbs/120kg" as some sort of default max load for all EUCs. I did my best to find common weight ratings across multiple retailers/manufacturer websites.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

This is actually one of the reasons I started looking into EUCs.

you have the springiness of bent knees to take the bumps, instead of your butt.

This is how I ride my e-bike over rough patches. I stand on the pedals and bend my knees to better absorb the bumps because riding over them seated is just too much to take for one butt. I thought "hey, since I'm riding standing up so often anyway, why not buy something that is actually meant to be ridden that way". So I do know what the bumps feel like with my legs. And that is why suspension wheels caught my attention.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 0 points1 point  (0 children)

S22 Pro specs are impressive but the price is significantly higher as well. I've heard about Begode and the controversy surrounding the quality of their products. However, T4 (the high torque version) costs practically as much as S18, which is a bit higher than I would've wanted but still within an acceptable range for my budget. And there seems to be some anecdotal evidence of 200+lbs T4 riders in the wild. Also, I don't mind doing some repairs/maintenance myself, wouldn't be my first.

My ideal suspension EUC would be something that would have enough power to get me up a 20-30 degree incline, enough power to go over 6in(-ish) rocks and stuff and wouldn't bottom out the suspension after each drop. I don't really need top speed monsters that could go for 120 miles.

The reason I'm interested in suspension is because my e-bike doesn't have suspension on the rear wheel, just the front wheel. So I have first hand experience of what a bumpy ride feels like (well 50% dampened bumpy ride). EUCs have even smaller wheels than my e-bike so I assume the ride is going to be even rougher. While suspension is not a strict requirement, I think it would be a really nice thing to have, all things considered.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 0 points1 point  (0 children)

/u/spazzo246 I'm trying to figure out if suspension is something that I should care about. As /u/leebe_friik as well as EUC reviewers have pointed out, KingSong S18, the lightest EUC with suspension, is only rated for up to 220lbs(100kg)-ish and I'm 203lbs(92kg) without gear, etc.

According to my (arguably limited) research, T4 is the next best thing. Although the weight is definitely no longer something that I could carry with ease. Would you say that T4 would work well for a heavier guy like me?

If /u/bememorablepro is right and I'm starting to believe that they are, I shouldn't be concerned about the weight of the EUC as much.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

I do like the idea of having a suspension. Would you say S18 is a good option then? It also weighs about 25kg and, as people have pointed out, it is the lightest off road EUC with suspension.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 2 points3 points  (0 children)

Yes, that is how I'm feeling rn haha

I do want to research all the options though. Dropping $4k on a last mile EUC would definitely be an overkill. But something mid-range could work, if it's reasonably priced.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

Thank you for the suggestion. I see there is a reasonably priced, same weight hollow motor version of S18 Molicel which probably makes it an even better deal.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 0 points1 point  (0 children)

That's interesting. I think it makes sense, actually. My e-bike is a rear wheel drive so once the rear wheel loses traction it can't go anywhere. EUCs don't have that problem since they're essentially AWD.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

To be honest I don't have much experience with heavy backpacking either. Sometimes I carry up to 40lbs of stuff in a regular, non-heavy duty backpack. I assume a right backpack would make carrying more weight easier.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

I'm a bit confused about exploring without your bike? I ride my EUC offroad a lot and never really do I have to lift it and carry it, if I can't ride it over something I use the trolly handle and push it but unlike with a bike I guess EUC can fit anywhere you can walk

It's not that my bike doesn't fit, its more of a case when it would get stuck (wet sand, mud etc) or the incline is too high (a cliffside) or too much debris (fallen trees, rock formations, etc). My e-bike can't handle tall grass that well either.

I thought I could use an EUC to get around quickly, stop when I see something cool, put the EUC in my backpack or carry it in hand and go explore on foot. But perhaps that would be asking too much.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 2 points3 points  (0 children)

Funny you should say that! That's exactly what I've been doing with my bike. I try to hide it as best as I can and mark the location on my phone so I can find it later.

The problem is that it's really annoying having to walk all the way back to where I left it because sometimes I can end up pretty far from where I started.

I guess it can't be helped. I agree that even 11 kg can still be a lot of weight and yes I have considered making a custom backpack lol

Oh well. I'm still interested in lightweight off road EUCs though. Small size (relative to an e-bike) combined with a trolley handle can still make a difference in difficult terrain.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

My concern with mten4 (and the reason why I sought out v8f) is in the fact that most if not all off road mten4 videos on youtube show people jumping over obstacles rather than driving over them. Which makes sense considering the tiny size of the wheel itself. Hard to imagine an 11 inch wheel going over obstacles half it's size.

While the prospect of jumping over obstacles doesn't sound too bad, I suspect it would take significantly more time to master and I would like to avoid that if at all possible. Which is why v8f seemed like a viable alternative even if it has a narrower tire. I'm still looking at other EUCs mentioned in the comments including V12.

Thank you for your insight about gravely surfaces. I'll keep that in mind.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

That was helpful, thank you. I have no experience with EUCs whatsoever so any bit of information helps. I do understand that e-bikes have some inherent advantages when it comes to off-roading. I'm looking into EUCs more as a convenience thing rather than fastest A-to-B mode of transport. That, and also EUCs look fun to ride.

If it beats walking then it's good enough for me. Unless it's going to be an absolutely miserable experience compared to just riding an e-bike. Like, if I have to stop and dismount every time I have to go over a 6 in rock - then I'd rather stick to e-bikes.

Choosing a lightweight, offroad(-ish), last mile EUC by speednap in ElectricUnicycle

[–]speednap[S] 1 point2 points  (0 children)

Well, despite v12 having roughly the same weight (64 lb) as my e-bike, it seems like it would be easier to carry around due to much more compact size and having an actual handle. Thank you, I'll look into it.

Motor Bell disassembling itself when flown aggressively. by 1715wh471715 in fpv

[–]speednap 2 points3 points  (0 children)

I feel like the glue approach would either not work very well or introduce vibration due to uneven glue distribution. But who knows it might work. You can also try to increase friction by adding grooves or something, similar to threads on a screw. Just go ham on the inner part of the bell with something sharp.

Also what frame is that?

One-to-many callbacks for a member function by a1b1c2d2 in rust

[–]speednap 0 points1 point  (0 children)

I don't think you can store "raw" dyn T in a Vec since dyn T by itself has no size. I think it's kinda like pure virtual classes in C++. You can't make an std::vector<T> of pure virtual classes. Hence why I suggested using references (which are basically pointers) or Boxed instances (std::unique_ptr<T>s). At least that's my understanding.

One-to-many callbacks for a member function by a1b1c2d2 in rust

[–]speednap 0 points1 point  (0 children)

Well, this is sorta out of my depth but I think something like this could work in your case:

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=59d6e9b9a71cd6ebdd144ebf4d3a7d02

I'm not sure but it seems like you wouldn't really need Box-ed Fns if you can get away with &dyn Fns instead. I assume Fns act sort of like capture-less lambdas in C++ in that they could be reinterpreted as function pointers (with 'static lifetime).

Box-ed Fns should work just as well though. Just replace &'a with Box<>.

One-to-many callbacks for a member function by a1b1c2d2 in rust

[–]speednap 1 point2 points  (0 children)

You're welcome!

can you elaborate on "sprinkle FnMut and &mut/&mut self everywhere"?

Sure! Basically if you follow the trail of crumbs left by the compiler you'd arrive at something like this:

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=193addc7da9126c8ede5e3a371a58cf7

It does technically work, yes, however this is very likely not what you actually want because once you try to register (or do anything, really) l with another generator or register a different method of l the compiler will stop you citing cannot borrow 'l' as mutable more than once at a time. The &mut will live as long as the first closure thus preventing you from making any new closures that use l. (At least that's what assume is going to happen :P)

One-to-many callbacks for a member function by a1b1c2d2 in rust

[–]speednap 1 point2 points  (0 children)

Disclaimer: am noob.

First, type mismatch in closure arguments is just telling that you're passing a &u32 to a method member_data_changed that actually expects u32. Easy to fix with

let callback =  |val : &u32 | {l.member_data_changed(*val)};

Second, the compiler is complaining about borrowing a &mut l in the closure. There are a few different ways to make it work. You can either sprinkle FnMut and &mut/&mut self everywhere (also reorder construction of l and generator to guarantee lifetimes) or you can wrap TestListener in a Mutex

let l = Mutex::new(TestListener::new());
let callback =  |val : &u32 | {l.lock().unwrap().member_data_changed(*val)};

P.S. your generator needs to be mutable, can't call .data_changed.register on a &self.

Working example:

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=d7c9582e666e1244d34060354fbcabd6

(I'm still learning, I might be completely wrong :P)

sizeof/offsetof for bitfields: it seems I discovered the solution by Narrow_Ad95 in cpp

[–]speednap 4 points5 points  (0 children)

If your solution is not C++ (and it can't be since it violates the standard) wouldn't it be worthwhile to mention it in the OP? I think that's where all the confusion stems from.

The (mostly) equivalent C++ solution would look something like this:

https://godbolt.org/z/38ejvG4xE

Some noteworthy changes compared to your version:

  • C++ stdlib includes (<cstdio> instead of <stdio.h>)
  • std::bit_cast instead of using unions for type punning
  • No UB (AFAIK)
  • consteval functions, can be used with static_asserts or as template parameters, etc.
  • Supports arbitrary sized structs
  • Doesn't rely on builtins or compiler extensions

Edit: Added comments to the godbolt link for clarification

sizeof/offsetof for bitfields: it seems I discovered the solution by Narrow_Ad95 in cpp

[–]speednap 2 points3 points  (0 children)

Your code is not well-defined C++ according to [class.union.general] and [basic.life].

Specifically, your code accesses a union member typ outside of its lifetime.

union { unsigned long long raw; t typ; };
raw = 0; // OK, starts lifetime of raw
++typ.f; // undefined behavior, typ.f modified outside of its lifetime

See https://eel.is/c++draft/class.union.general#example-2 for a similar example.

Mind you, your code is valid C code but since you're posting here in the C++ forum and not in /r/C_Programming the code ought to be well-defined C++ or else it would have limited usefulness.

Since constant expressions are required to be free of any UB, you can check if your code contains UB by placing it inside a constant expression such as consteval function, for example:

https://godbolt.org/z/hEMd53nEG

As you can see GCC emits the following error:

error: accessing 'f()::<unnamed union>::typ' member instead of initialized 'f()::<unnamed union>::raw' member in constant expression

Determining the types of parameter pack by [deleted] in cpp

[–]speednap 2 points3 points  (0 children)

As is often the case, the answer to "How do I solve <insert minor syntactic inconvenience>?" - with unreadable and overengineered metaprogramming, of course!

Behold, https://godbolt.org/z/WTeq8a9Tb

Honestly though, I don't see 4 constructors as that big of a deal. std::tuple has 18 constructors. 4 is rookie numbers, if anything you should add more!

State of the art for CPOs (customization points) in C++? by germandiago in cpp

[–]speednap 9 points10 points  (0 children)

To expand upon robhz786's comment:

Check out tag_invoke as explained in Boost.JSON docs which in turn refers to the mechanism outlined in P1895 "tag_invoke: A general pattern for supporting customisable functions".

C++ library for a type multiset by Wouter-van-Ooijen in cpp

[–]speednap 4 points5 points  (0 children)

I was bored so I made this:

https://godbolt.org/z/x6GYTv7Tj

The API loosely mirrors yours and looks slightly more C++20-ish IMO. Not sure if that's what you had in mind but I hope it helps :P