Hey hittstick -- yes, a transmitter with proper gimbals/sticks will make a huge improvement. I was shocked how much better I could fly when I first moved to a real Tx (the crazyflie was my intro to the hobby -- had zero RC experience prior). I started out on the Devo7e, which does a good job for the price. I'm now on the Devo10 (the white one) and I strongly recommend it. I think the Devo 7e is fine for flying the crazyflie nano around in level mode, but you'll quickly outgrow it if you want to fly a larger quad due to range of the stock transmitter (if you're using spektrum or other external receivers) and precision of the sticks. I personally wish I didn't waste my money on the 7e and just saved longer for the 10 (It's like $120 instead of $60).
Either way, to fly untethered, you do need a transmitter mod. Tobias has a post on the mod
-- it's not a very hard modification. You're basically soldering the radio used on the crazyradioPA to the SPI pins inside the devo. Make sure you get a NRF42L01PA+ (pa stands for power amp) radio with an external antenna -- the PCB antennas are junk. The ceramic antenna will be a bit better, but not as good as the external dipole (and I even managed to fit the dipole wifi-style antenna inside my devo7e by taking the plastic cover off and getting creative. On my devo10, I mounted it externally).
You also have the option of flying tethered to a computer via USB -- most transmitters (devo, FrSky Taranis, Spektrum) also support a mode where they'll enumerate as a USB controller, and you can configure the crazyflie python client to use those. You still need to lug the computer around, but you'll get the better stick precision.
Yes, for the non-persistant acro mode, I'm changing the values from within the client. It's good for playing around with, but it's ultimately a bit of a pain. I did recently implement a "cppm passthrough" commander type that emulates a standard multi-channel transmitter, and I decided channel 5 to switching between rate/level mode. I only implemented the transmitter side in the devo firmware, though. You could totally implement that in the python client and map a button on your controller to toggle modes if you're feeling adventurous
Would love to see that video. I've experienced something similar when flying in crosswinds. I haven't nailed it down yet but I suspect it's due to one of a few things:
1) accel code not filtering out external forces and overcompensating for things like wind
2) IMU loop isn't tightly synchronized to the motor output -- this can easily lead to oscillations, but I'm not positive it would be bad enough to cause an all-out flip.
3) PID values aren't good -- I suspect this is the problem, specifically, I think the 'd' term on the rate PID is to blame. I added it to eliminate some oscillations from the 'i' term, but I was always worried it was too high. Theoretically, it could slow the PID down significantly on rapid changes like a change-in-direction, which would cause destabilization of the system like you, I, and others have seen.
I took a brief detour into the betaflight/cleanflight world because I was curious how the hardware performs on the 'state of the art' flight controller software -- I wanted to rule hardware out (is the copter too heavy? are the motors/props strong enough?) before spending a ton of time tuning/optimizing the software. Turns out the hardware flies great on betaflight, so I'm going to start looking in to improving the things I've mentioned in this post hopefully in the next couple of weeks!