def obsModel(s): if numObservations < 10: return dist.mixture(dist.deltaDist(ideal[s]), dist.uniformDist(range(numObservations)), float(numObservations) / 15.) return dist.mixture( dist.triangleDist(ideal[s], int(numObservations / 6.0) + 2), dist.uniformDist(range(numObservations)), 0.8)
def transModel(s): distance = FORWARD_VELOCITY * 0.1 result1 = (float(s) / numStates) * (xMax - xMin) + distance result2 = (float(s+1) / numStates) * (xMax - xMin) + distance state1 = clip(int(float(result1) * numStates / (xMax - xMin)), 0, numStates-1) state2 = clip(int(float(result2) * numStates / (xMax - xMin)), 0, numStates-1) prob = float(distance) / (xMax - xMin) * numStates return dist.mixture(dist.deltaDist(state1), dist.deltaDist(state2), 1.0 - (prob % 1.0))
def transModel(s): distance = FORWARD_VELOCITY * 0.1 result1 = (float(s) / numStates) * (xMax - xMin) + distance result2 = (float(s + 1) / numStates) * (xMax - xMin) + distance state1 = clip(int(float(result1) * numStates / (xMax - xMin)), 0, numStates - 1) state2 = clip(int(float(result2) * numStates / (xMax - xMin)), 0, numStates - 1) prob = float(distance) / (xMax - xMin) * numStates return dist.mixture(dist.deltaDist(state1), dist.deltaDist(state2), 1.0 - (prob % 1.0))
def teleportModel2(state): nominal = dist.deltaDist(state) return dist.mixture(dist.uniformDist(range(numStates)), nominal, 0.3)
def teleportModel2(state): nominal = dist.deltaDist(state) return dist.mixture(dist.uniformDist(range(numStates)), nominal,0.3)
def teleportModel2(state): current_d = dist.deltaDist(state) random_d = dist.uniformDist(range(numStates)) return dist.mixture(current_d, random_d, 0.7)
def teleportModel(state): nominal = moveRightModel(state) return dist.mixture(dist.uniformDist(range(numStates)), nominal, 0.3)
def obsModelB(state): random_dist = dist.squareDist(0, 10) return dist.mixture(dist.deltaDist(ideal[state]), random_dist, 0.7)
def teleportModel(state): right_d = dist.deltaDist(min(state+1, numStates-1)) random_d = dist.uniformDist(range(numStates)) return dist.mixture(right_d, random_d, 0.7)
def resetModel(state): right_d = dist.deltaDist(min(state + 1, numStates - 1)) zero_d = dist.deltaDist(0) return dist.mixture(right_d, zero_d, 0.7)
def transModel(s): r = (FORWARD_VELOCITY / 10.0) * numStates / (xMax - xMin) return dist.mixture(dist.deltaDist(clip(s + int(r), 0, numStates - 1)), dist.deltaDist(clip(s + int(r) + 1, 0, numStates - 1)), int(r) + 1 - r)
def obsModelD(state): ideal_d = dist.deltaDist(ideal[state]) other_d = dist.deltaDist(9 - ideal[state]) return dist.mixture(ideal_d, other_d, 0.5)
def teleportModel(state): right_d = dist.deltaDist(min(state + 1, numStates - 1)) random_d = dist.uniformDist(range(numStates)) return dist.mixture(right_d, random_d, 0.7)
def obsModelA(state): zero_dist = dist.uniformDist([0]) return dist.mixture(dist.deltaDist(ideal[state]), zero_dist, 0.7)
def resetModel2(state): nominal = dist.deltaDist(state) return dist.mixture(dist.deltaDist(0), nominal, 0.3)
def obsModel(s): width = 0.2 #half width of triangle r = numObservations * width / sonarMax return dist.mixture( dist.squareDist(0, numObservations), dist.triangleDist(ideal[s], int(r), 0, numObservations - 1), 1e-3)
def resetModel2(state): current_d = dist.deltaDist(state) zero_d = dist.deltaDist(0) return dist.mixture(current_d, zero_d, 0.7)
def obsModelA(state): return dist.mixture(dist.deltaDist(ideal[state]),dist.deltaDist(0),0.7)
def obsModelB(state): return dist.mixture(dist.deltaDist(ideal[state]),dist.uniformDist(range(10)),0.7)
def resetModel(state): right_d = dist.deltaDist(min(state+1, numStates-1)) zero_d = dist.deltaDist(0) return dist.mixture(right_d, zero_d, 0.7)
def obsModel(s): if numObservations < 10: return dist.mixture(dist.deltaDist(ideal[s]), dist.uniformDist(range(numObservations)), float(numObservations) / 15.) return dist.mixture(dist.triangleDist(ideal[s], int(numObservations / 6.0) + 2), dist.uniformDist(range(numObservations)), 0.8)
def obsModelB(state): return dist.mixture(dist.deltaDist(ideal[state]), dist.uniformDist(range(10)), 0.7)
def teleportModel(state): nominal = moveRightModel(state) return dist.mixture(dist.uniformDist(range(numStates)), nominal,0.3)
def resetModel(state): nominal = moveRightModel(state) return dist.mixture(dist.deltaDist(0), nominal, 0.3)
def obsModelA(state): return dist.mixture(dist.deltaDist(ideal[state]), dist.deltaDist(0), 0.7)