Norm preserving omnidirectional catadioptric mirror design

Rodrigo Ventura, Carlos Marques, Luis Custodio, Pedro Lima
October 2000
Institute for Systems and Robotics
http://www.isr.ist.utl.pt/
IST, Tech. Univ. of Lisbon
Av. Rovisco Pais, 1
1049-001 Lisboa
PORTUGAL
{yoda,cmarques,lmmc,pal}@isr.ist.utl.pt

Specifications:

L = Range at the floor plane;
(Subscript[δ, m])  =  Camera field of view;
R = Desired mirror radius;
h = Camera focal point height, from the floor;
n = Total number of mirror points

spec = {L -> 4500, (Subscript[δ, m]) -> 60 Degree, R -> 56, 
          h -> 520, n -> 70};

Differential equation, boundary condition, and parameters

eqs = {((k x)/(f[x] - h)) == 
            x + f[x] Tan[
                  ArcTan[(x/(f[x] - h))] + 
                    2 ArcTan[f'[x]]], 
f[R] == 
            (Subscript[z, m])};
params = ({(Subscript[z, m]) -> h + (R/Tan)[(Subscript[δ, m])/2], 
                k -> (L/Tan)[(Subscript[δ, m])/2]} /. spec) ⋃ 
          spec;

Numeric solution

NOTE: the ordinates are relative to the floor plane

sol = 
        NDSolve[eqs /. params, f, {x, 0, R} /. params, 
          MaxStepSize -> 0.01, MaxSteps -> Infinity];
Plot[f[Abs[x]] /. sol, Evaluate[{x, -R, R} /. params], 
        AspectRatio -> Automatic];

Camera angles as function of the floor distance

NOTE: this relationship is non-linear, since the linearity is rather between the image and floor planes

ParametricPlot[{((k x)/(f[x] - h)), ArcTan[(x/(f[x] - h))]} /. 
            params /. sol, Evaluate[{x, 0, R} /. params]];

Table of mirror points

Table[N[{x, f[x] - f[0]} /. sol /. params], 
      Evaluate[{x, 0, R, (R/n)} /. params]]

References

[1] Carlos Marques, Pedro Lima, "A Localization Method for a Soccer Robot Using a Vision-Based Omni-Directional Sensor", in Proceedings of EuRoboCup Workshop 2000, Amsterdam, The Netherlands.
	[2] R. A. Hicks, R. Bajcsy, "Reflective Surfaces as Computational Sensors", CVPR'99, Workshop on Perception for Mobile Agents, 1999.