What is the best approach to control CrazyFlies in a Vicon or Optitrack environment.
Posted: Wed Mar 03, 2021 11:36 pm
Hello everyone,
I am a graduate student, and I am currently running experiments for networked control on CrazyFlie quadcopters. I have seen many comments online and on the forum about controlling multiple CrazyFlie. However, as new tools and software versions update by Bitcraze and third parties were coming out over the years, I am getting confuses about which tools I should use. So far, I successfully ran an experiment in an Optitrack motion capture environment. I read Optitrack data using the Python NaTNetClient and then I send send_setpoint(roll, pitch, yaw, thrust) to the Crazyflie. However, I faced challenges with extending this to multiple quadcopters, and my Python code is a bit slow; I sped up the code using Numba.
My goal is to build a reliable CrazyFlie testbed to run networked control experiments in a Vicon or Optitrack motion capture environment. I have three radios and ten CrazyFlies. I need some help, as I got stuck, and I do not want to reinvent the wheel.
Below are my questionsl:
1) What is the best way to control multiple CrazyFlie?
a) is it via the Bitcraze Python library, i.e., individually controlling, Crazyflie() objects or using Swarm() object.
b) is it via the Crazyswarm? I see two github repos. What is the difference between them?
https://github.com/USC-ACTLab/crazyswarm
https://github.com/whoenig/crazyflie_ros?
2) Crazyflie specific questions
a) how many Crazyflies can I control with a single radio? I read somewhere it is 3-4 and how come Crazyswarm could control 15? is it simply that Crazyswarm has a better radio driver?
b) how can I quantify or know the delay between sending my setpoint command, via radio, to executing the command by the Crazyflie? this will effectively allow me to determine the control update rate for my control system.
3) Python code is typically slow. For example, in my experiment code, I used Numba to speed up my code. How do you guys deal with the slow execution time of Python? Do you use the Crazyswarm ROS C++ for example? I was also confused about that as well. The main page of Crazyswarm says they provide a python-based tool but Whoenig github repo provides c++ tools.
Many thanks, and I hope to hear back from you guys soon.
Ahmad
I am a graduate student, and I am currently running experiments for networked control on CrazyFlie quadcopters. I have seen many comments online and on the forum about controlling multiple CrazyFlie. However, as new tools and software versions update by Bitcraze and third parties were coming out over the years, I am getting confuses about which tools I should use. So far, I successfully ran an experiment in an Optitrack motion capture environment. I read Optitrack data using the Python NaTNetClient and then I send send_setpoint(roll, pitch, yaw, thrust) to the Crazyflie. However, I faced challenges with extending this to multiple quadcopters, and my Python code is a bit slow; I sped up the code using Numba.
My goal is to build a reliable CrazyFlie testbed to run networked control experiments in a Vicon or Optitrack motion capture environment. I have three radios and ten CrazyFlies. I need some help, as I got stuck, and I do not want to reinvent the wheel.
Below are my questionsl:
1) What is the best way to control multiple CrazyFlie?
a) is it via the Bitcraze Python library, i.e., individually controlling, Crazyflie() objects or using Swarm() object.
b) is it via the Crazyswarm? I see two github repos. What is the difference between them?
https://github.com/USC-ACTLab/crazyswarm
https://github.com/whoenig/crazyflie_ros?
2) Crazyflie specific questions
a) how many Crazyflies can I control with a single radio? I read somewhere it is 3-4 and how come Crazyswarm could control 15? is it simply that Crazyswarm has a better radio driver?
b) how can I quantify or know the delay between sending my setpoint command, via radio, to executing the command by the Crazyflie? this will effectively allow me to determine the control update rate for my control system.
3) Python code is typically slow. For example, in my experiment code, I used Numba to speed up my code. How do you guys deal with the slow execution time of Python? Do you use the Crazyswarm ROS C++ for example? I was also confused about that as well. The main page of Crazyswarm says they provide a python-based tool but Whoenig github repo provides c++ tools.
Many thanks, and I hope to hear back from you guys soon.
Ahmad