Sniffy Bug: A fully autonomous swarm of gas-seeking nano quadcopters in cluttered environments
Nano quadcopters are ideal for gas source localization (GSL) as they are safe, agile and inexpensive. However, their extremely restricted sensors and computational resources make GSL a daunting challenge. In this work, we propose a novel bug algorithm named `Sniffy Bug', which allows a fully autonomous swarm of gas-seeking nano quadcopters to localize a gas source in an unknown, cluttered and GPS-denied environments. The computationally efficient, mapless algorithm foresees in the avoidance of obstacles and other swarm members, while pursuing desired waypoints. The waypoints are first set for exploration, and, when a single swarm member has sensed the gas, by a particle swarm optimization-based procedure. We evolve all the parameters of the bug (and PSO) algorithm, using our novel simulation pipeline, `AutoGDM'. It builds on and expands open source tools in order to enable fully automated end-to-end environment generation and gas dispersion modeling, allowing for learning in simulation. Flight tests show that Sniffy Bug with evolved parameters outperforms manually selected parameters in cluttered, real-world environments.READ FULL TEXT VIEW PDF
We apply two evolutionary search algorithms: Particle Swarm Optimization...
This paper presents a novel algorithm for a swarm of unmanned aerial veh...
This paper presents a decentralized and asynchronous systematic solution...
Numerous efforts have been invested in improving the effectiveness of bu...
Sensors are routinely mounted on robots to acquire various forms of
This paper presents a literature survey and a comparative study of Bug
We studied the long-term dynamics of evolutionary Swarm Chemistry by
Sniffy Bug: A fully autonomous swarm of gas-seeking nano quadcopters in cluttered environments
Gas source localization (GSL) by autonomous robots is important for search and rescue and inspection, as it is a very dangerous and time-consuming task for humans. A swarm of nano quadcopters is an ideal candidate for GSL in large, cluttered, indoor environments. The quadcopters’ tiny size allows them to fly in narrow spaces, while operating as a swarm enables them to spread out and find the gas source much quicker than a single robot would.
To enable a fully autonomous gas-seeking swarm, the nano quadcopters need to navigate in unknown, cluttered, GPS-denied environments by avoiding obstacles and each other. Currently, indoor swarm navigation is still challenging and an active research topic even for larger quadcopters ( 500 grams) [9, 36]
. State-of-the-art methods use heavy sensors like LiDAR and high-resolution cameras to construct a detailed metric map of the environment, while also estimating the robot’s position for navigation with Simultaneous Localization And Mapping (SLAM, e.g., ORB-SLAM2). These methods do not fit within the extreme resource restrictions of nano quadcopters. The payload of nano quadcopters is in the order of grams, ruling out heavy, power-hungry sensors like LiDAR. Furthermore, SLAM algorithms typically require GBs of memory  and need considerable processing power. One of the most efficient implementations of SLAM runs real-time (18.21 fps) on an ODROID-XU4 , which has a CPU with a 4-core @ 2GHz plus a 4-core @1.3GHz. These properties rule out the use of SLAM on nano quadcopters such as the BitCraze Crazyflie, which has an STM32F405 processor with 1MB of flash memory and a single core @168MHz. As a result of the severe resource constraints, previous work has explored alternative navigation strategies. A promising solution was introduced in , in which a bug algorithm enabled a swarm of nano quadcopters to explore unknown, cluttered environments and come back to the starting location.
Besides navigating, the swarm also needs a robust strategy to locate the gas source, which by itself is a highly challenging task. This is mostly due to the complex spreading of gas in cluttered environments. Moreover, current sensors have poor quality compared to animals’ smelling capabilities , which is further complicated by the propellers’ own down-wash .
usually internally maintain a map with the probabilities for the odor source location and often simulate the gas distribution. This is computationally challenging for nano quadcopters, a situation that deteriorates when they have to operate in environments with complex shapes, obstacles and a complex airflow field. In contrast, bio-inspired finite-state machines[20, 1] have very low computational requirements, though until now they have focused on deploying a single agent . Moreover, reinforcement and evolutionary learning approaches have been investigated, mostly in simulation [4, 15, 16, 10, 35], but a few works also transferred the learned policy to obstacle-free environments in the real world [21, 14]. A limiting factor for approaches that learn in simulation is that gas dispersion modeling has been a time-intensive process, requiring domain knowledge for accurate modeling. Only few environments have been made available to the public [26, 7], whereas learning algorithms require many different environments.
Due to the difficulty of the problem in the real world, most often the experiments involve a single robot seeking for an odor source in an obstacle-free environment of modest size, e.g., in the order of 4 4 [8, 3, 27, 34]. Few experiments have been performed in larger areas involving multiple robots. Very promising in this area is the use of particle swarm optimization (PSO) , as it is able to deal with the local maxima in gas concentration that arise in more complex environments. Closest to our work is an implementation of PSO on a group of large (), outdoor flying quadcopters  , using LiDAR and GPS for navigation.
In this article, we introduce a novel PSO-powered bug algorithm, Sniffy Bug, to tackle the problem of GSL in challenging, cluttered, and GPS-denied environments. The nano quadcopters execute PSO by estimating their relative positions and by communicating observed gas concentrations to each other using onboard Ultra-Wideband (UWB) . In order to optimize the parameters of Sniffy Bug with an artificial evolution, we also develop and present the first fully Automated end-to-end environment generation and Gas Dispersion Modeling pipeline, which we term AutoGDM. We validate our approach with robot experiments in cluttered environments, showing that evolved parameters outperform manually tuned parameters. This leads to the following three contributions:
The first robotic demonstration of a swarm of autonomous nano quadcopters locating a gas source in unknown, GPS-denied environments with obstacles.
A novel, computationally highly efficient bug algorithm, Sniffy Bug, of which the parameters are evolved for PSO-based gas source localization in unknown, cluttered and GPS-denied environments.
The first fully automated environment generation and gas dispersion modeling pipeline, AutoGDM.
Our Bitcraze CrazyFlie  nano quadcopter (Figure 2), is equipped with sensors for waypoint tracking, obstacle avoidance, relative localization, communication and gas sensing. We use the optical flow deck and IMU sensors for estimating the drone’s state and tracking waypoints. Additionally, we use the BitCraze multiranger deck with four laser range sensors in the drone’s positive and negative and axis (Figure 2), to sense and avoid obstacles. Finally, we have designed a custom, open-source PCB, capable of gas sensing and relative localization. It features a Figaro TGS8100 MEMS MOX gas sensor, which is lightweight, inexpensive, low-power, and was previously deployed onboard a nano quadcopter . We use it to seek isopropyl alcohol, but it is sensitive to many other substances, such as carbon monoxide. The TGS8100 changes resistance based on exposure to gas, which can be computed according to Equation 1.
Here is the sensor resistance, circuit voltage (), the voltage drop over the load resistor in a voltage divider, and is the load resistor’s resistance (). Since different sensors can have different offsets in the sensor reading, we have designed our algorithm not to need absolute measurements like a concentration in ppm. From now on, we report a corrected version of , where higher means more gas. is corrected by its initial low-passed reading, without any gas present, in order to correct sensor-specific bias.
For relative ranging, communication, and localization, we use a Decawave DWM1000 UWB module. Following 
, an extended Kalman filter (EKF) uses onboard sensing from all agents, measuring velocity, yaw rate, and height, which is fused with the UWB range measurements. It does not rely on external systems or magnetometers. Additionally, all agents are programmed to maintain constant yaw, as it further improves the stability and accuracy of the estimates.
We design a highly efficient algorithm, both from a computational and sensor perspective. We generate waypoints in the reference frame of each agent using PSO, based on the relative positions and gas readings of all agents. The reference frame of the agent is initialized just before takeoff, and is maintained using dead reckoning by fusing data from the IMU and optic flow sensors. While the reference frame does drift over time, only the drift since the last seen ‘best waypoint’ in PSO will be relevant, as it will be saved in the drifted frame.
The waypoints are tracked using a bug algorithm that follows walls and other objects, moving safely around them. Each agent computes a new waypoint if it reaches within of its previous goal, if the last update was more than seconds ago, or when one of the agents smells a concentration superior to what has been seen by any agent during the run, and higher than the pre-defined detection threshold. A detection threshold is in place to avoid reacting based on sensor drift and noise. A timeout time, , is necessary, as the predicted waypoint may be unreachable (e.g., inside a closed room). We term each new waypoint, generated if one of the above criteria is met, a ‘waypoint iteration’ (e.g., waypoint iteration five is the fifth waypoint generated during that run).
Each agent computes its next waypoint according to Equation 2.
Here is the goal waypoint of agent , in iteration , its position when generating the waypoint, and
its ‘velocity vector’. The velocity vector is determined depending on the drone’s mode, which can be either ‘exploring’, or ‘seeking’. ‘Exploring’ is activated when none of the agents has smelled gas, while ‘seeking’ is activated when an agent has detected gas. During exploration,is computed with Equation 3:
Here is the goal computed in the previous iteration and a random point within a square of size around the agent’s current position. A new random point is generated each iteration. Finally, and are scalars that impact the behavior of the agent. and are initialized randomly in a square of size around the agent. Intuitively, Equation 3 shows the new velocity vector is a weighted sum of: 1) a vector toward the previously computed goal (also referred to as inertia), and 2) a vector towards a random point.
After smelling gas, i.e., one of the agents detects a concentration above a pre-defined threshold, we update the waypoints according to Equation 4.
Here is the waypoint at which agent has seen its highest concentration so far, up to iteration . is the swarm’s best seen waypoint, up to iteration . and are random values between 0 and 1, generated for each waypoint iteration for each agent. Finally, and are scalars that impact the behavior of the agent. So again, more intuitively, the vector towards the next waypoint is a weighted sum of the vectors towards its previously computed waypoint, the best seen position by the agent, and the best seen position by the swarm. As we will see later, this allows the swarm to converge to high concentrations of gas, whilst still exploring.
Tracking waypoints in cluttered environments is hard due to the limited sensing and computational resources. Sniffy Bug is designed to operate at constant yaw, and consists of three states (Figure 3): 1) Line Following, 2) Wall Following, and 3) Attraction-Repulsion Swarming.
Line Following – When no obstacles are present, the agent follows a virtual line towards the goal waypoint, making sure to only move in directions where it can ‘see’ using a laser ranger, improving safety. The agent makes sure to stay within a distance from the line, moving as shown in Figure 3.
Wall Following – When the agent detects an obstacle, and no other agents are close, it will follow the object similar to other bug algorithms . Sniffy Bug’s wall-following stage is visible in Figure 3. It is terminated if one of the following criteria is met: 1) a new waypoint has been generated, 2) the agent has avoided the obstacle, or 3) another agent is close. In case 1 and 2 line following is selected, whereas in case 3 attraction-repulsion swarming is activated. Figure 3 illustrates wall following in Sniffy Bug. The agent starts by computing , which is the laser direction that points most directly to the goal waypoint, laser 3 in this case. It then determines the initial search direction in the direction of the waypoint, anti-clockwise in this case. The agent now starts looking for laser rangers detecting a safe value (above ), starting from lasers 3, in the anti-clockwise direction. As a result, we follow the wall in a chainsaw pattern, alternating between lasers 3 and 0. Next, the agent uses odometry to detect that it has avoided the obstacle, by exiting and re-entering the green zone, while getting closer to the goal waypoint.
Attraction-Repulsion Swarming – When the agent detects at least one other agent within a distance , it uses attraction-repulsion swarming to avoid other agents and objects, while tracking its goal waypoint. This state is terminated when no agent is within , selecting ‘line following’ instead. As can be seen in Figure 3 and Equations 5,6, the final commanded velocity vector is a sum of repulsive forces away from low laser readings and close agents, while exerting an attractive force to the goal waypoint.
In Equation 5, is the attraction vector of agent at time step (so not iteration) , specifying the motion direction. Each time step the agent receives new estimates and re-computes . The first term results in repulsion away from other agents that are closer than , while the second term adds repulsion from laser rangers seeing a value lower than , and the third term adds attraction to the goal waypoint.
In the first term, is the swarm repulsion gain, and is the threshold to start avoiding agents. is the vector between agent and agent , at time step
. The rectified linear unit () makes sure only close agents are repulsed. In the second term, is the laser repulsion gain, and is the threshold to start repulsing a laser. is the laser reading at step , numbered according to Figure 3. makes sure only lasers recording values lower than are repulsed. is the rotation matrix, used to rotate in the direction away from laser , such that the second term adds repulsion away from low lasers. The third term adds attraction from the agent’s current position to the goal. is the vector from agent to the goal waypoint, at time step . This term is scaled to be of size , which is the desired velocity, a user-defined scalar. As a last step, we normalize to have size too, using Equation 6.
Here is the velocity vector sent to the low-level control loops. Commanding a constant speed prevents both deadlocks in which the drones hover in place and peaks in velocity that induce collisions.
Fully automated gas dispersion modeling based on Computational Fluid Dynamics (CFD) requires three main steps: 1) Environment generation, 2) CFD, and 3) Filament simulation (Figure 4).
We use the procedural environment generator described in , which can generate environments of any desired size with a number of requested rooms. Additionally, AutoGDM allows users to insert their own 2D binary occupancy images, making it possible to model any desired 2.5D environment by extruding the 2D image.
CFD consists of two main stages, i.e., meshing and solving (flow field generation). We use the open-source package OpenFOAM  for both stages. To feed the generated environments into OpenFOAM, the binary occupancy maps are converted into 3D triangulated surface geometries of the flow volume. We detect the largest volume in the image and declare it as our flow volume and test area. We create a mesh using OpenFOAM blockMesh and snappyHexMesh, and assign inlet and outlet boundary conditions randomly to vertical surfaces. Finally, we use OpenFOAM pimpleFOAM to solve for kinematic pressure, , and the velocity vector, .
In the final stage of AutoGDM, we use the GADEN ROS package  to model a gas source based on filament dispersion theory. It releases filaments that expand over time, and disappear when they find their way to the outlet. The expansion of the filaments and the dispersion rate of the source (i.e., filaments dispersed per second), is random within a user-defined range.
We feed the generated gas data into Swarmulator111https://github.com/coppolam/swarmulator, an open source lightweight C++ simulator for simulating swarms. The agent is modelled as a point mass, which is velocity-controlled using a P controller. We describe both the environment and laser rays as a set of lines, making it extremely fast to model laser rangers. An agent ‘crashes’ when one of its laser rangers reads less than or when another agent is closer than . The agents are fed with gas data directly from AutoGDM, which is updated every in simulation time.
Using this simulation environment, we evolve the parameters of Sniffy Bug with the ‘simple genetic algorithm’ from the open-source PyGMO/PAGMO package. The population consists of 50 individuals and is evolved for 400 generations. The algorithm uses tournament selection, mating through exponential crossover and mutation using a polynomial mutation operator. The mutation probability is 0.1, while the crossover probability is 0.9. The genome consists of 13 different variables, as shown in Table I, including their ranges set during evolution. Parameters that have a physical meaning when negative are allowed to be negative, while variables such as time and distance need to be positive.
Each agent’s cost is defined as its average distance to source with an added penalty (+ 1.0) for a crash. Even without a penalty the agents will learn to avoid obstacles to some capacity, but a penalty stimulates prudence. Other metrics like ‘time to source’ were also considered, but we found average distance to work best and to be most objective. It leads to finding the most direct paths and staying close to the source.
In each generation, we select environments out of the total of environments generated using AutoGDM. As considerable heterogeneity exists between environments, we may end up with a controller that is only able to solve easy environments. This is known as the problem of hard instances. To tackle this problem, we study the effect of ‘doping’  on performance in simulation. When using doping, the probability of selecting environment number is:
is the ‘difficulty’ of environment , computed based on previous experience. If environment is selected to be evaluated, we save the median of all 50 costs in the population. We use median instead of mean to avoid a small number of poor-performing agents to have a large impact. is the mean of the last three recorded medians. If no history is present, is the average of all difficulties of all environments. Using Equation 7 implies that we start with an even distribution, but over time give environments with greater difficulty a higher chance to be selected in each draw. When not using doping, we set
, resulting in a uniform distribution.
|Variable||Manually Selected||Evolved||Evolution range|
For evolution, we used AutoGDM to randomly generate 100 environments of 10 10 in size, the size of our experimental arena. This size is sufficiently large for creating environments with separate rooms, in which local maxima of gas concentration may exist. At the same time, it is sufficiently small for exploration by a limited number of robots. We use 3 agents, with . Figure 5 shows that the generated environments differ in obstacle configuration and gas distribution. During each generation, every genome is evaluated on a random set of 10 out of the total 100 environments, with a maximum duration per run of . All headings and starting positions are randomized after each generation. Agents are spawned in some part of the area so that a path exists towards the gas source.
We assess training results for training with doping. Table I shows the evolved parameters in comparison with the manually designed parameters. is set to , creating random waypoints in a box of in size around the agent during ‘exploring’. This box is scaled by evolved parameter (Equation 3). When generating new waypoints, the agent has learned to move strongly towards the swarm’s best-seen position , away from its personal best-seen position , and towards its previously computed goal . We expect this to be best in the environments encountered in evolution, as in most cases only one optimal position (with the highest concentration) exists. Hence, it does not need its personal best position to avoid converging to local optima. adds ‘momentum’ to the waypoints generated, increasing stability.
shows that attraction-repulsion swarming is engaged only when another agent is within . This is substantially lower than the manually chosen , which can be explained by a lower cost when agents stay close to each other after finding the source. It also makes it easier to pass through narrow passages, but could increase the collision risk when agents are close to each other for a long time. Furthermore, is set to , which is much higher than our manual choice and the timer has been practically disabled ( = 51.979). Instead of using the timeout, the evolved version uses PSO to determine the desired direction to follow, until it has travelled far enough and generates a new waypoint. For obstacle avoidance we see that the manual parameters are more conservative than the evolved counterparts. Being less conservative allows the agents to get closer to the source quicker, at the cost of an increased collision risk. This is an interesting trade-off, balancing individual collision risks with more efficient gas source localization.
After training, the probability for each environment in each draw can be evaluated as a measure of difficulty. Figure 5 shows a histogram of all 100 probabilities along with some environments on the spectrum. Generally, more cluttered environments with more local minima are more difficult.
It is difficult to compare Sniffy Bug with a baseline algorithm, since it would need to seek a gas source in cluttered environments, avoiding obstacles with only four laser rangers and navigating without external positioning. To the best of our knowledge, such an algorithm does not yet exist. Hence, we replace the gas-seeking part of Sniffy Bug (PSO) by two other well-known strategies, leading to (i) Sniffy Bug with anemotaxis, and (ii) Sniffy Bug with chemotaxis. In the case of anemotaxis, inspired by , waypoints are placed randomly when no gas is present, and upwind when gas is detected. Then, when the agent loses track of the plume, it generates random waypoints around the last point it has seen inside the plume, until it finds the plume again. Similarly, the chemotaxis baseline uses Sniffy Bug for avoidance of obstacles and other agents, but places waypoints in the direction of the gas concentration gradient if a gradient is present. The chemotaxis baseline determines the gradient by moving a small distance in and before computing a new waypoint, while the anemotaxis baseline receives ground-truth airflow data straight from AutoGDM. We expect that the baseline algorithms’ sensor measurements - and hence performance - would transfer less well to real experiments. For chemotaxis we expect that estimating the gradient in presence of noise and drift of the sensor data will yield inaccurate measurements. Anemotaxis based on measuring the weak airflow in indoor environments will be even more challenging.
We evaluate the models in simulation on all 100 generated test environments, and randomize start position 10 times in each environment, for a total of 1,000 runs for each model. We record different performance metrics: 1) success rate, 2) average distance to source, and 3) average time to source. Success rate is defined as the fraction of runs during which at least one of the agents reaches within from the source, whereas average time to source is the average time it takes an agent to reach within from the source. For agents not reaching the source, is taken as time to source.
|Manual params PSO||90 %||3.06||51.58|
|Manual params Anemotaxis||91 %||4.12||60.56|
|Manual params Chemotaxis||80 %||4.31||68.61|
|Evolved PSO w/o Doping||89 %||2.95||44.33|
|Evolved PSO with Doping||92 %||2.75||41.94|
Table II shows that Sniffy Bug with PSO outperforms anemotaxis and chemotaxis in average time and distance to source, and has a success rate similar to the anemotaxis baseline. Chemotaxis suffers from the gas gradient not always pointing in the direction of the source. Due to local optima, and a lack of observable gradient further away from the source, chemotaxis is not as effective as PSO or anemotaxis. Since we expect the sim2real gap to be much more severe for anemotaxis than for PSO, which only needs gas readings, we decide to proceed with PSO.
We now compare Sniffy Bug using PSO with manual parameters, parameters evolved without doping, and parameters evolved with doping. Table II shows that the evolved parameters without doping find the source quicker, and with a smaller average distance to source, compared to the manual parameters. However, its success rate is slightly inferior to the manual parameters. This is caused by the hard instance problem : the parameters perform well on average but fail on the more difficult environments.
Figures 7 and 7 show runs in simulation of the manual and evolved version with doping respectively, with the same initial conditions. The parameters evolved with doping outperform the other controllers in all metrics. Doping helps to tackle harder environments, improving success rate and thereby average distance to source and time to source. This effect is further exemplified by Figure 8. The doping controller does not only result in a lower average distance to source, it also shows a smaller spread. Doping managed to reduce the size of the long tail that is present in the set of evolved parameters.
As we test on a finite set of environments, and the assumptions of normality may not hold, we use the empirical bootstrap 
to compare the means of the average distance to source. Using 1,000,000 bootstrap iterations, we find that only when comparing the manual parameters with evolved parameters with doping, the null hypothesis can be rejected, with, showing that parameters evolved with doping perform significantly better than manual parameters.
Finally, we transfer the evolved solution to the real world, validating our methodology. We deploy our swarm in four different environments of 10 10 in size, as shown in Figure 9. We place a small can of isopropyl alcohol with a 5V computer fan within the room as the gas source. We compare manual parameters with the parameters evolved using doping, by comparing their recorded gas readings. Each set of parameters is evaluated three times for each environment, resulting in a total of 24 runs. A run is terminated when: 1) the swarm is stationary and close to the source, or 2) at least two members of the swarm crash. Each run lasts at least . Figure 10 corresponds to the run depicted in Figure (a)a.
Figure 11 shows the maximum recorded gas readings by the swarm, for each time step for each run. Especially for environment 1, it clearly shows the more efficient source seeking behavior of our evolved controller. Table III shows the average and maximum observed concentrations by the swarm, averaged over all three runs per environment. It shows that for environments with obstacles, our evolved controller outperforms the manual controller in average observed gas readings and average maximum observed gas readings.
The evolved controller was able to reach the source within in 11 out of 12 runs, with one failed run due to converging towards a local optimum in environment 4 (possibly due to sensor drift). The manual parameters failed once in environment 2 and once in environment 3. The manual parameters were less safe around obstacles, recording a total of 3 crashes in environments 1 and 2. The evolved parameters recorded only one obstacle crash in all runs (environment 2). We hypothesize that the more efficient, evolved GSL strategy reduces the time around dangerous obstacles.
On the other hand, the evolved parameters recorded 2 drone crashes, both in environment 4, when the agents were really close to each other and the source for extended periods of time. The manual parameters result in more distance between agents, making it more robust against downwash and momentarily poor relative position estimates. This can be avoided in future work by a higher penalty for collisions during evolution, or classifying a run as a crash when agents are, for instance,away from each other instead of .
|Avg std||Max std||Avg std||Max std|
|Env 1||0.250 0.036||0.406 0.049||0.330 0.046||0.566 0.069|
|Env 2||0.162 0.055||0.214 0.070||0.165 0.046||0.237 0.063|
|Env 3||0.200 0.074||0.300 0.103||0.258 0.045||0.412 0.029|
|Env 4||0.240 0.123||0.398 0.143||0.176 0.062||0.349 0.151|
The results show that AutoGDM can be used to evolve a controller that not only works in the real world in challenging conditions, but even outperforms manually chosen parameters. While GADEN  and OpenFOAM  are by themselves already validated packages, the results corroborate the validity of our simulation pipeline, from the randomization of the source position and boundary conditions to the simulated drones’ particle motion model.
We have introduced a novel bug algorithm, Sniffy Bug, leading to the first fully autonomous swarm of gas-seeking nano quadcopters. The parameters of the algorithm are evolved, outperforming a human-designed controller in all metrics in simulation and robot experiments. We evolve the parameters of the bug algorithm in simulation and successfully transfer the solution to a challenging real-world environment. We also contribute the first fully automated environment generation and gas dispersion modeling pipeline, AutoGDM, that allows for learning GSL in simulation in complex environments.
In future work, our methodology may be extended to larger swarms of nano quadcopters, exploring buildings and seeking a gas source fully autonomously. PSO was designed to work in large optimization problems with many local optima, and is likely to extend to more complex configurations and to GSL in 3D. Finally, we hope that our approach can serve as inspiration for tackling also other complex tasks with swarms of resource-constrained nano quadcopters.
Evolving Dynamical Neural Networks for Adaptive Behavior. Vol. 1. External Links: Cited by: §I.
Analysis of a dynamical recurrent neural network evolved for two qualitatively different tasks: Walking and chemotaxis. Artificial Life XI: Proceedings of the 11th International Conference on the Simulation and Synthesis of Living Systems, ALIFE 2008, pp. 257–264. External Links: Cited by: §I.
Applied Artificial Intelligence22, pp. 169–197. External Links: Cited by: §II-D, Fig. 8, §III-C.
Multi-Robot gas-source localization based on reinforcement learning. 2012 IEEE International Conference on Robotics and Biomimetics, ROBIO 2012 - Conference Digest, pp. 1440–1445. External Links: Cited by: §I.