Yeah, I did. I didn't implement disturbances like wind, so a very simple PD position controller was enough for stabilization or simple trajectory tracking. I won't focus too much on (position) control as my controller will be RL-based (with a policy network outputting thrust and body rates) and coupled with a PD rate controller (very simple as it's 1st-order).
I've spent the last six months replicating the paper "Champion-level drone racing using deep reinforcement learning" and now I'm writing down the blog posts I wish I had along the way.
Any feedback is welcome, especially as I'm a bit unsure if I struck the right balance between being concise and not requiring too many prerequisites.
Also if you're working on RL and robotics (especially aerial), let's connect!
I assume you are going to start introducing all the 2nd and 3rd order effects? One big one is ground effect, and another is vortex ring state/settling with power and the related translational lift, and the props themselves have p-factor and the dirty air effect for the rear props.
Good question, haven't really thought about modeling complex effects besides prop aerodynamic drag. If I were to start, I'd probably look at the model described in the "Aerodynamic forces and torques" section of "Champion-level drone racing using deep reinforcement learning" (Kaufmann et al. 2023).
My understanding of it is that it's especially apparent when you are within 1 prop width of the ground. For a quadcopter, it's most apparent just off the ground, since the props are small compared to the entire craft. You don't usually operate the drone in ground effect for very long, but you need to really push the throttle to get in the air, and the drone floats if you are close to the ground.
The other effects are more apparent, especially settling with power, the tendency to pitch back as you go faster, and translational lift. Modeling all of these accurately turns into a fluid simulation, so probably you'd just want a heuristic.
You are technically correct - the best kind of correct. But yeah, think of it as a "slice" of a quadcopter along one of its principal axes. Writing the 3D blog post right now.
Interesting question, from my understanding Pathfinder is only concerned with rendering so it doesn't completely replace FreeType: you still need some software to extract the curves path data from the font file. This can be done in rust with skribo and font-kit
Thanks :)
I've used what was available on the latest ubuntu lts. FreeType functions return 0 (FT_Err_Ok) on success or a specific value for each function, but yes I agree that error handling could be better, maybe at the expense of terseness.
Looks like something I did some time ago[0], nice to see that this space is being explored.
Wikum[1] from MIT's CSAIL is also an interesting alternative.
Wow, this is the first time I've been recognized for my obscure Rust syntax highlighting library. Glad you like it. It is one of the projects I've put the most work into, but in the rare occasions I'm recognized it's normally for contributing to Spacemacs.