A system for landing of a fleet of nano quadrotors on the human arms using light-sensitive landing pads with vibrotactile feedback. The package contatins a software for drones control and tools to analyse the flight data. Please, have a look at the video for more information. You can also access the project description at SIGGRAPH Asia 2019 webpage.
The flight software from this repository requires external positioning system for drones to work. It could be a motion capture system, for example Vicon, or HTC-Vive/SteamVR lighthouse tracking system.
In case if you use a motion capture system, install a ROS driver for crazyflie, crazyflie_ros, follow the instructions bellow.
cd ~/catkin_ws/src
git clone https://github.com/whoenig/crazyflie_ros.git
cd crazyflie_ros
git submodule init
git submodule update
Use catkin_make
on your workspace to compile.
cd ~/catkin_ws/
catkin_make
Clone the repository.
cd ~/Desktop/
git clone https://github.com/RuslanAgishev/swarmskin
Adjust drones URIs you use in the launch file here. Specify drones landing positions in the swarmskin.py. And use our repository alongside with crazyflie_ros driver.
cp ~/Desktop/swarmskin/vicon_scripts/python/* ~/catkin_ws/src/crazyflie_ros/crazyflie_demo/scripts/
cp ~/Desktop/swarmskin/vicon_scripts/launch/connect1234.launch ~/catkin_ws/src/crazyflie_ros/crazyflie_demo/launch
Note, that in order for this setup to work, you also need to track landing pads positions with a motion capture system. We created a separate object for each landing pad in Vicon Tracker software and named them "lp1", "lp2", "lp3" and "lp4". You can specify your laning pads objects here.
Connect to crazyflies:
roslaunch crazyflie_demo connect1234.launch
And run the flight node:
rosrun crazyflie_demo swarmskin.py
Otherwise, if you are going to fly with the lighthouse tracking system, please refer to the documentation from Bitcraze on how to setup the positioning system.
It is also possible to track distance from a drone to a landing pad with the help of Z-ranger sensor. However, it is important, when using a lighthouse and optical flow with Z-ranger decks simultaneously, to specify in the crazyflie_firmware that the flow deck with Z-ranger is not used for a drone localization. Perform the following two steps to do this.
- Disable optical flow:
this line
in firmware should be set as
true
:static bool useFlowDisabled = true;
- Disable Z-ranger (version 2):
comment this line:
// rangeEnqueueDownRangeInEstimator(distance, stdDev, xTaskGetTickCount());
In case these links are out-dated, you can download the custom modified firmware.
Ones everything is prepared, attach optical flow and lighthouse decks to your drones and perorm the flight:
python lighthouse_demo/swarmskin_lighthouse.py
If you find this package useful, feel free to cite the work, arxiv.
@article{tsykunov2019swarmcloak,
title={SwarmCloak: Landing of a Swarm of Nano-Quadrotors on Human Arms},
author={Tsykunov, Evgeny and Agishev, Ruslan and Ibrahimov, Roman and Labazanova, Luiza and Moriyama, Taha and Kajimoto, Hiroyuki and Tsetserukou, Dzmitry},
journal={arXiv preprint arXiv:1911.09874},
year={2019}
}