Here I consider searching for a single, stationary jammer using multiple vehicles with a bearing-only sensing modality. I use the ergodic control framework presented in [1] as well as that presented in [2],[3].
This work is still in progress; this repo and documentation is really just for myself; nothing is guaranteed to work.
To install, fire up Julia in the terminal and type
Pkg.clone("https://github.com/dressel/MAEBOL.jl.git")
To begin using, type the following while in Julia
using MAEBOL
The SearchDomain
type describes the search region in which the jammer lies.
Some of the important fields are as follows:
b
belieftheta
is a tuple of ints describing jammer location.(theta_x, theta_y)
.
To create a default SearchDomain
, do the following
m = SearchDomain(40)
A VehicleSet
is simply a vector of Vehicle
types.
The fields of Vehicle
are:
x
y
You can define your own policies. To do so, you must extend the abstract Policy
class and implement get_action
. For example, the following code defines a policy that always moves the vehicle north and east.
type NorthEastPolicy <: Policy
end
function get_action(m::SearchDomain, X::VehicleSet, p::NorthEastPolicy, t)
n = length(X)
A = Array(NTuple{2,Float64}, n)
for i = 1:n
A[i] = (0.5, 0.5)
end
return A
end
s = Simulation(m, X, p, 10)
Plotting is done using the PyPlot package, so this needs to be installed.
Below are the most common plotting functions
# m is a SearchDomain
# X is a VehicleSet
plot_b(m,X) # Plots belief
plot_eid(m,X) # Plots expected information density (Fisher-based)
plot_mi(m,X) # Plots mutual information
plot_sim(m,s) # Plots results of simulation s
This section describes important aspects of ergodic control and their implementation here.
The expected information density (EID) is a distribution over the search domain that characterizes the informational value of being at a specific point in the domain.
However, when we want to estimate a multivariable parameter, we have an expected information matrix (EIM). We denote this matrix as Phi(x).
D-optimality is often used to convert the EIM into EID: EID(x) = det(Phi(x))
EID(m::SearchDomain, b::Belief)
generates EID matrix over domain.EID(m::SearchDomain, theta_x, theta_y)
finds EID at a specific jammer location.
In order to perform ergodic control, the EID needs to be broken down into Fourier coefficients.
phik(m::SearchDomain, phi::Matrix{Float64}, k::Int)
finds the k
th coefficient of the EDI represented with phi
.
The ErgodicManager
type contains many of the important functions needed to perform ergodic control.
An ErgodicManager
can be instantiated with a SearchDomain
m
and a number of Fourier coefficients K
.
em = ErgodicManager(m, K)
Some fields
- K::Int
- L::Int
- Gamma::Matrix{Float64}
- h::Matrix{Float64}
- phi::Matrix{Float64}
- phik::Matrix{Float64}
- ck::Matrix{Float64}
- F
- George Mathew, Igor Mezić, Metrics for ergodicity and design of ergodic dynamics for multi-agent systems, Physica D: Nonlinear Phenomena, Volume 240, Issues 4–5, 15 February 2011, Pages 432-442, ISSN 0167-2789, http://dx.doi.org/10.1016/j.physd.2010.10.010.
- Y. Silverman, L. M. Miller, M. A. MacIver and T. D. Murphey, "Optimal planning for information acquisition," Intelligent Robots and Systems (IROS), 2013 IEEE/RSJ International Conference on, Tokyo, 2013, pp. 5974-5980.
- L. M. Miller and T. D. Murphey, "Optimal planning for target localization and coverage using range sensing," Automation Science and Engineering (CASE), 2015 IEEE International Conference on, Gothenburg, 2015, pp. 501-508.