Hello to everyone, and some elementary question of crazyflie.

Discussions about all things Bitcraze
Post Reply
arnaud
Bitcraze
Posts: 2538
Joined: Tue Feb 06, 2007 12:36 pm

Re: Hello to everyone, and some elementary question of crazyflie.

Post by arnaud »

Hi and welcome!

I will try to answer your questions in order. I am trying to stay to the point, there is a lot to say but it would become quite noisy. Feel free to ask more questions and as a general comment it would be useful to know a bit more about what you want to achieve, there is a lot of way to control and program Crazyflie and the best way depends of what you want to do with it.

A.1
There is no overlap when is comes to motor control, the motors are controlled by the firmware.
The firmware contains a state estimator that is able to estimate the Crazyflie orientation and position (if you have a flow deck or other positioning system). It also have a state controller that is at least controlling the rotation rate of the platform orientation. Depending of what setpoint packets you are sending you can control angle rate, absolute angles (this is the normal manual flight mode), velocity, position and there is even a high-level sequence controller added recently by Whoenig that allows the Crazyflie to control trajectories autonomously.

The python lib can send any of these setpoint packets (except high-level trajectories), depending of your application you will chose at what level you want to control the Crazyflie and so where you will put the role separation. If you have a flow deck it is good to control the velocity in X-Y and absolute height in Z since this is the kind of measurement you get from the flow sensor. If you have a positioning system you might prefer controlling the absolute position.

Where to work depends greatly of what you want to do: If you want to fly, you can do that from python only. If you want to interface new sensors or implement new low level control algorithm, you will most likely need to do that in the firmware.

A.2
This sounds like an include problem, did you try to tweak the beeps where they are generated. ie. modifying an existing function call instead of making a new one?

The syntax errors in Eclipse comes from a bad configuration of eclipse CDT, not of problems in the code. It is a bit misleading and it is something I am planning of fixing for the upcoming virtual machine release. The firmware project is kept free of any warning or error, that can be verified by compiling it with make. Until eclipse is fixed you should only look at the error or warning reported by the compiler directly, not the one in the eclipse editor. If you ever happen to tweak and configure eclipse properly I am interested, it would help a lot for making the new VM :-).

A.3
Both lib should do the same. The python lib is developed by mainly Bitcraze and will support any deck we produce in one way or another. The C++ lib might not have high level support for all the deck and setpoints packet, but it is currently the only one to support the high-level commander and it should work better to fly a lot of Crazyflie at the same time (for swarms).

A lot of things in Crazyflie are accessed using the log and param subsystem, since both lib supports that you should be able to use either. What to use depends mostly of your project and then of your programming language preference.
arnaud
Bitcraze
Posts: 2538
Joined: Tue Feb 06, 2007 12:36 pm

Re: Hello to everyone, and some elementary question of crazyflie.

Post by arnaud »

For A.1: You need to use the tool that fits your purpose. If you want to implement some kind of autonomous behavior [python -> firmware] makes sense since you can use python for quick prototyping and then implement autonomous behavior in the Crazyflie directly. If having the computer in the loop is not a problem python or other Crazyflie control lib are good to stick with. If you want to work on very low level things like new hardware driver or low level control algorithm you need to work on the firmware right away.

So far the documentation is mostly the code. We have tried to make examples for every functionality of the python lib, and the code is kept modular and as much as possible simple so that it is easy to understand how to use it.
Post Reply