# Visual servoing
## 1. METODOLOGÍAS DEL VISUAL SERVOING

El control Visual Servo (VS) se refiere al empleo de un sistema de visión para controlar el movimiento de un robot. Los datos deben adquirirse desde una cámara que se fija directamente en un robot manipulador o en un robot móvil, en cuyo caso el movimiento de un robot inducido por el movimiento de la cámara, o la cámara puede estar fija en el lugar de trabajo con una configuración estacionaria. Pueden considerarse otras configuraciones, por ejemplo tener cámaras montadas observando el movimiento del robot. El desarrollo matemático de todos estos casos es similar por lo que se va a centrar el estudio en el caso más común, Eye-in-Hand. El VSC depende de técnicas de procesamiento de imagen, visión por computador y teoría de control. En este apartado se van a explicar las distintas metodologías provenientes del apartado de sistemas de control.

## 1.1. Componentes básicos del VS

Una clasificación fundamental de los diferentes enfoques del VS es el diseño del bucle de control. Generalmente se emplean dos esquemas para el VS:
* El primer esquema se denomina “Direct Visual Servoing” ya que el controlador basado en visión directamente computa la entrada del sistema dinámico. Esto hace que el sistema de VS sea llevado de forma muy rápida (del orden de 100Hz con un ratio de 10ms).
Figura 1. Direct Visual Servoing System.
* El segundo esquema de control es el denominado “Indirect Visual Servoing” ya que el control basado en visión computa una referencia de la ley de control que se envía a un controlador de más bajo nivel y este al sistema dinámico. Muchos de los enfoques de la literatura se centran en este esquema y lo denominan “Dynamic look-and-move”. En este caso, el controlador “servoing” (el de más bajo nivel) debe ser más rápido (generalmente 10ms) que el visual servoing (generalmente 50ms).
Figura 2. Indirect Visual Servoing System.
El control basado en visión puede clasificarse dependiendo del error utilizado en la ley de control, en cuatro grupos: “position based”, “image-based”, “hibrid-based” y “motion-based”. En un sistema de control “positio-based”, el error se computa en el espacio Cartesiano 3D (por esta razón este enfoque se denomina “3D Visual Servoing”). En un sistema de control “Image-Based”, el error que se computa es el del espacio de la imagen 2D (por esta razón se llama “2D Visual Servoing”). Recientemente han salido nuevos enfoques denominados “Hibrid Visual Servoing”. Por ejmplo se ha propuesto uno llamado 2 ½ D Visual Servoing ya que el error se expresa en parte en coordenadas Cartesianas 3D y en parte en el espacio de la imagen 2D. Finalmente hay un enfoque llamado “motion-based” cuyo error computado es el “optical flow” medido en una imagen y un “optical flow” de referencia que debe obtener el sistema. El objetivo de todos los esquemas de control basados en visión es minimizar un error $e\left(t\right)$ que típicamente viene definido como:
$e(t)=s\left[m(t),a\right]-s*\,\,\,\,\,\,\,\,\,\,(1)$
Esta formulación es muy general y está acompañada de una gran variedad de enfoques como se verá a continuación. Los parámetros en la ecuación se definen como sigue: el vector $m\left(t\right)$ es un conjunto de medidas tomadas de la imagen. Estas medidas se utilizan para computar un vector de k características, $s\left(m\left(t\right),\ a\right)$ en que ${\text{a}}$ es un conjunto de parámetros que representa conocimientos adicionales sobre el sistema (ej. Parámetros intrínsecos de la cámara o modelos tridimensionales de los objetos). El vector $s*$ contiene los valores deseados de las características.
Una vez se selecciona $s$, el diseño del esquema de control puede ser muy simple. Quizás el enfoque más sencillo es el diseño de un control de velocidad. Para realizar esto, se necesita la relación entre el tiempo de variación de $s$ y la velocidad de la cámara. Si la velocidad de la cámara viene definida por $v_{c}=\left(v_{c},\ \omega _{c}\right)$ donde $v_{c}$ es la velocidad lineal instantánea respecto al origen de coordenadas de la cámara y $\omega _{C}$ es la velocidad angular instantánea del frame de la cámara. La relación entre ${\dot {s}}$ y $v_{c}$ viene dado por:
${\dot {s}}=L_{s}v_{c}\,\,\,\,\,\,\,\,\,\,(2)$
En que $L_{s}\in R^{kx6}$ se denomina matriz de interacción a $s$ [1]. Utilizando las ecuaciones (1) y (2) inmediatamente se obtiene la relación entre la velocidad de la cámara y el tiempo de variación del error:
$\left(a\right)\,\,{\dot {e}}=L_{e}v_{c}{\text{ }}\,\,\,\,\,\,\,\,\,\,\left(b\right){\text{ }}v_{c}=-\lambda L_{e}^{+}e\,\,\,\,\,\,\,\,\,\,(3)$
Dónde $L_{e}=L_{s}$. Considerando $v_{c}$ como la entrada al controlador del robot de la ecuación (3a) se obtiene la ecuación (3b), donde $L_{e}^{+}\in R^{6kx}$ es elegida como la pseudo-inversa “Moore-Penrose” de $L_{e}$, que es, $L_{e}^{+}=\left(L_{e}^{T}L_{s}\right)^{-1}L_{e}^{T}$ cuando $L_{e}$ es de rango 6.
En sistemas de VS reales es imposible conocer perfectamente $L_{e}$ o $L_{e}^{+}$. Así que se hace necesario una aproximación o una estimación de estas dos matrices. De aquí en adelante se denotarán a ambas matrices como ${\widehat {L_{e}^{+}}}$. Utilizando esta notación, la ley de control se queda de la siguiente forma, ecuación (4a):
$\left(a\right)\,\,v_{c}=-\lambda {\widehat {L_{e}^{+}}}e{\text{ }}\left(b\right){\text{ }}{\dot {e}}=-\lambda L_{e}{\widehat {L_{e}^{+}}}e\,\,\,\,\,\,\,\,\,\,(4)$
Cerrando el bucle y asumiendo que el controlador del robot es perfectamente realizable se obtiene la ecuación (4b), esta ecuación caracteriza el comportamiento del sistema en bucle cerrado. Este es el diseño básico implementado en sistemas de control VS. Pero hay que elegir bien $s$, o la forma de $L_{s}$ o la estimación de las matrices de interacción. Seguidamente se verán algunos de los enfoques que existen hoy en día.

## 1.2. Visual servo basado en imagen (IBVS)

El 2D Visual Servoing es un enfoque basado en un “model-free control” ya que este no necesita el conocimiento de un modelo en el espacio 2D (ver Figura 3). Así, el 2D visual servoing tambié se denomina “image-based” visual servoing. En general, el “image-based visual servoing” es conocido por ser más robusto no sólo con respecto a la cámara sino también a los errores de calibración del robot. Sin embargo, su convergencia está asegurada sólo en una región (muy difícil de determinar analíticamente) alrededor de la posición deseada. Excepto en casos muy simple, el análisis de la estabilidad con respecto a los erres de calibración parecen imposibles ya que el sistema es acoplado y no lineal.
Figura 3. Esquema de control IBVS.
Tradicionalmente los esquemas de control IBVS [2], [3], utilizan el plano de coordenadas de la imagen de un conjunto de puntos para definir $s$. Las medidas de la imagen $m$ son, normalmente, las coordenadas en píxeles de un conjunto de puntos (aunque no es la única elección posible) y el parámetro $a$ de la definición de $s=s\left(m,{\text{ }}a\right)$ no se utiliza, pero los parámetros intrínsecos van desde las medidas de la imagen expresadas en píxeles a las características.

### 1.2.1. La matriz de interacción

Para un punto 3D con coordenadas $X=\left(X,{\text{ }}Y,{\text{ }}Z\right){\text{ }}$ en el frame de la cámara, se proyecta en la imagen como un punto 2D con coordenadas $x=\left(x,{\text{ }}y\right)$ , se tiene:
$\left\{{\begin{matrix}x={\frac {X}{Z}}={\frac {(u-c_{u})}{f^{\alpha }}}\\y={\frac {Y}{Z}}={\frac {(u-c_{v})}{f}}\\\end{matrix}}\right.\,\,\,\,\,\,\,\,\,\,(5)$
Donde $m=\left(u,{\text{ }}v\right)$ da las coordenadas del punto de la imagen expresadas en píxeles y $a=\left(c_{u},{\text{ }}c_{v},{\text{ }}f,{\text{ }}\alpha \right){\text{ }}$ es el conjunto de parámetros intrínsecos de la cámara: $c_{u}{\text{ y }}c_{v}$ son las coordenadas del punto principal, $f$ es la distancia focal y $\alpha$ es el ratio de las dimensiones del píxel. Los parámetros intrínsecos $\beta$ definidos en aparatados anteriores se asumirán como 0. En este caso se toma $s=x=\left(x,{\text{ }}y\right)$ , como el plano de coordenadas de la imagen del punto. [4], [5]. Tomando la derivada de las ecuaciones de proyección se obtiene:
$\left\{{\begin{matrix}{\dot {x}}={\frac {\dot {X}}{Z}}-{\frac {X{\dot {Z}}}{Z^{2}}}={\frac {{\dot {X}}-x{\dot {Z}}}{Z}}\\{\dot {y}}={\frac {\dot {Y}}{Z}}-{\frac {Y{\dot {Z}}}{Z^{2}}}={\frac {{\dot {Y}}-y{\dot {Z}}}{Z}}\\\end{matrix}}\right.\,\,\,\,\,\,\,\,\,\,(6)\,\,\,\,\,\,\,\,\,{\dot {X}}=-v_{c}-\omega _{c}\times X\Leftrightarrow \left\{{\begin{matrix}{\dot {X}}=-v_{x}-\omega _{y}Z+\omega _{z}Y\\{\dot {Y}}=-v_{y}-\omega _{z}X+\omega _{x}Z\\{\dot {Z}}=-v_{z}-\omega _{x}Y+\omega _{y}X\\\end{matrix}}\right.\,\,\,\,\,\,\,\,\,\,(7)$
Se puede relacionar la velocidad del punto 3D con la velocidad espacial de la cámara utilizando la siguiente ecuación (7). Insertando la ecuación (7) dentro de la ecuación (6) y agrupando términos se obtiene, ecuación (8):
$\left\{{\begin{matrix}{\dot {x}}={\frac {-v_{x}}{Z}}+{\frac {xv_{z}}{Z}}+xy\omega _{x}-(1+x^{2})\omega _{y}+y\omega _{z}\\{\dot {y}}={\frac {-v_{y}}{Z}}+{\frac {yv_{z}}{Z}}+(1+y^{2})\omega _{y}-xy\omega _{y}-x\omega _{z}\\\end{matrix}}\right.\ \ \ \ \ {\text{(8)}}\,\,\,\,\,\,\,\,\,\,\to \,\,\,\,\,\,\,\,{\dot {x}}=L_{x}v_{c}\,\,\,\,\,\,\,\,\,(9)$
Que puede ser escrita como la ecuación (9), donde la matriz de interacción viene dada por:
$L_{x}=\left({\begin{matrix}-{\frac {1}{Z}}&0&{\frac {x}{Z}}&xy&-(1+x^{2})&y\\0&-{\frac {1}{Z}}&{\frac {y}{Z}}&1+y^{2}&-xy&-x\\\end{matrix}}\right)\,\,\,\,\,\,\,\,\,(10)$
En la matriz $L_{x}$ , el valor $Z$ es la profundidad del punto relativa al frame de la cámara. Por tanto, cualquier esquema de control que utilice esta forma de la matriz de interacción debe estimar o aproximar el valor de $Z$ . De forma similar, los parámetros intrínsecos de la cámara están involucrados en la computación de $x$ e$y$. Así no puede utilizarse directamente $L_{x}^{+}$ y debe utilizarse una estimación o aproximación de ${\widehat {L_{x}^{+}}}$. Para controlar los 6 grados de libertad, como mínimo son necesarios 3 puntos. Si se utiliza el vector de características $x=\left(x_{1},{\text{ }}x_{2},{\text{ }}x_{3}\right)$ la matriz de interacción para tres puntos tendrá la forma:
$L_{x}=\left({\begin{matrix}L_{x_{1}}\\L_{x_{2}}\\L_{x_{3}}\\\end{matrix}}\right)\,\,\,\,\,\,\,\,\,(11)$
En este caso, existirán algunas configuraciones para las que $L_{x}$ sea singular [6]. Además, existen cuatro posiciones distintivas de la cámara para las que $e=0{\text{ }}$ [7]. Por estas razones son necesarios más de tres puntos.

### 1.2.2. Aproximación a la matriz de interacción

Hay varias elecciones factibles para obtener la estimación ${\widehat {L_{x}^{+}}}$ que se utiliza en la ley de control. Un esquema popular es elegir ${\widehat {L_{x}^{+}}}=L_{e}^{+}$ si $L_{e}=L_{x}$ es conocida, esto es que la profundidad actual de ${\text{Z}}$ para cada punto esté disponible [8]. En la práctica, estos parámetros deben ser estimados en cada iteración del bucle de control. Los métodos básicos de IBVS plantean métodos de estimación clásicos. Otro enfoque popular es elegir ${\widehat {L_{x}^{+}}}=L_{e*}^{+}$ donde $L_{e*}^{+}$ es el valor de $L_{e}$ para la posición deseada ${\text{e}}={\text{e}}*=0$ ,[9]. En este caso ${\widehat {L_{x}^{+}}}$ es constante, y solo se ha de configurar la posición deseada para cada punto, lo que significa que los parámetros 3D no variantes han de ser estimados durante el VS. Finalmente, la elección ${\widehat {L_{x}^{+}}}=\left({\frac {L_{e}}{2}}+{\frac {L_{e*}}{2}}\right)$ ha sido recientemente propuesta [10]. Ya que ${\text{L}}_{e}$ está involucrada en este método, la profundidad actual de cada punto también tiene que estar disponible.

### 1.2.3. IBVS con un sistema de estéreo-visión

El enfoque IBVS se puede fácilmente extrapolar a un sistema multi-cámara. Si se utiliza un sistema estéreo-visión y un punto 3D es visible en ambas cámaras (ver Figura 4), es posible utilizar como características visuales $s=x_{s}=\left(x_{l},{\text{ }}x_{r}\right)=\left(x_{l},y_{l},x_{r},{\text{ }}y_{r}\right){\text{ }}$ para representar el punto [11].
Figura 4. Sistema estéreo-visión.
Sin embargo, hay que tener cuidado cuando se reconstruye la matriz de interacción correspondiente ya que la forma dada por le ecuación está expresada respecto a uno de los dos frames de las cámaras. Se tiene que:
$\left\{{\begin{matrix}{\dot {x}}_{l}=L_{x_{l}}v_{l}\\{\dot {x}}_{r}=L_{x_{r}}v_{r}\\\end{matrix}}\right.\,\,\,\,\,\,\,\,\,(12)$
Donde $v_{l}{\text{ }}$ y $v_{r}$ son la velocidad espacial de las cámaras izquierdas y derecha, respectivamente, y donde la forma analítica de $L_{xi}$ y $L_{xr}$ viene dada por la ecuación (10). Eligiendo un sistema de coordenadas del sensor rígidamente sujeto al sistema de estéreo-visión se obtiene:
${\dot {x}}_{s}=\left({\begin{matrix}{\dot {x}}_{l}\\{\dot {x}}_{r}\\\end{matrix}}\right)=L_{x_{s}}v_{s}\,\,\,\,\,\,\,\,\,(13)$
Donde la matriz de interacción afín a $x_{s}$ puede determinarse utilizando una matriz de transformación espacial $V$ para transformar velocidades expresadas en ambos frames de las cámaras al frame fijo. Esta matriz tiene la forma:
$V=\left({\begin{matrix}R&\left[t\right]_{x}R\\0&R\\\end{matrix}}\right)\,\,\,\,\,\,\,\,\,(14)$
Donde $\left[t\right]_{x}$ es el sesgo de la matriz simétrica asociada al vector ${\text{t}}$ y donde $R\left(t\right){\text{ }}\in {\text{ }}SE\left(3\right)$ es la transformación del cuerpo rígido desde la cámara hasta el frame del sensor rígido. Los valores numéricos para estas matrices son directamente obtenidos en el paso de la calibración de sistemas estéreo-visión. Utilizando dicha ecuación se obtiene:
$L_{x_{s}}=\left({\begin{matrix}L_{x_{l}}&^{l}V_{s}\\L_{x_{r}}&^{r}V_{s}\\\end{matrix}}\right)\,\,\,\,\,\,\,\,\,(15)$
Notar que $L_{xs}\in R^{4x6}$ siempre tiene rango 3 a causa de la restricción epipolar que liga la proyección de un punto 3D en un sistema estéreo-visión (ver Figura 4). Otra interpretación simple es que un punto 3D está representado por tres parámetros independientes que hacen imposible encontrar más de tres parámetros independientes utilizando cualquier sensor que observe dicho punto. Para controlar los seis grados de libertad del sistema, es necesario que cualquier punto observado por ambas cámaras pueda ser fácilmente estimado por un simple proceso de triangulación por lo que es natural utilizar dicho punto en el conjunto $s$.

### 1.2.4. IBVS con coordenadas cilíndricas de los puntos de la imagen

En los enfoques anteriores siempre se ha considerado que los puntos de la imagen estaban en coordenadas cartesianas. Una propuesta realizada por Iwatsuki y Okiyama [12] fue el empleo de coordenadas cilíndricas $(\rho ,{\text{ }}\theta ){\text{ }}$ de los puntos de la imagen en lugar de las coordenadas cartesianas $\left(x,{\text{ }}y\right)$. La transformación viene dada por:
$\rho ={\sqrt {x^{2}+y^{2}}},{\text{ }}\theta =\arctan {\frac {y}{x}}{\text{ }}\to \,\,\,\,\,\,\,\,\,\,{\dot {\rho }}={\frac {\left(x{\dot {x}}+y{\dot {y}}\right)}{\rho '}}{\dot {\theta }}={\frac {\left(x{\dot {y}}-y{\dot {x}}\right)}{\rho ^{2}}}\,\,\,\,\,\,\,\,\,(16)$
Utilizando la ecuación (9) y sustituyendo $x$ por $\rho$ y $y$ por $\rho sin\left(\theta \right)$ , se obtiene inmediatamente:
$\left\{{\begin{matrix}L_{\rho }=\left({\begin{matrix}{\frac {-c}{Z}}{\frac {-s}{Z}}{\frac {\rho }{Z}}&\left(1+\rho ^{2}\right)s&-\left(1+\rho ^{2}\right)c&0\\\end{matrix}}\right)\\L_{\theta }=\left({\begin{matrix}{\frac {s}{\rho Z}}{\frac {-c}{\rho Z}}0&{\frac {c}{\rho }}&{\frac {s}{\rho }}&-1\\\end{matrix}}\right)\\\end{matrix}}\right.\ \ \ \ \ \ \ \ \ \ \,\,\,\,\,\,\,\,\,(17)$
Dónde $c=cos\left(\theta \right){\text{ y }}s=sin(\theta )$.

### 1.2.5. Estimación de los parámetros 3D

Si se utiliza un sistema de calibración por estéreo visión, todos los parámetros 3D pueden ser determinados fácilmente por triangularización. Similarmente, si el modelo 3D del objeto es conocido, todos los parámetros 3D pueden ser calculados a partir de un algoritmo de estimación. Sin embargo, la estimación puede ser muy inestable a causa del ruido de la imagen. También es posible estimar los parámetros de 3-D mediante el uso de la geometría epipolar que se relaciona con las imágenes de la misma escena observada desde diferentes puntos de vista. De hecho, en visual servoing generalmente están disponibles dos imágenes: la actual y la deseada. Por el contrario, podemos estimar la matriz de interacción directa ya que las mediciones se hacen de la imagen durante la tarea visual servoing.

#### 1.2.5.1. Geometría epipolar

Dado un conjunto de puntos entre las mediciones de la imagen en la imagen actual y la deseada, la matriz fundamental, o la matriz esencial si la cámara está calibrada [13], se puede recuperar y luego se puede utilizar en “visual servoing” [14]. En efecto, de la matriz esencial, la rotación y la translación hasta un factor escalar entre los dos puntos de vista pueden ser estimados. Sin embargo, cerca de la convergencia del “visual servo”, es decir cuando las imágenes actuales y deseadas son similares, la geometría epipolar se degenera y no es posible calcular con exactitud el punto parcial entre los dos puntos de vista. Por esta razón, se prefiere el uso general de la homografía. Si $x_{i}$ y $x_{i}*$ denotan las coordenadas de la imagen homogénea para un punto en la imagen actual y la deseada. Ahora $x_{i}$ se relaciona con $x_{i}*$ por:
$x_{i}=H_{i}x_{i}*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \left(18\right)$
Donde $H_{i}$ es la matriz de homografía. Si todos los puntos característicos se encuentran en un plano 3D, entonces existe una única matriz de homografía $H_{i}$ de tal manera que $x_{i}=Hx_{i}*\$ para todo $i$. Esta homografía puede ser estimada utilizando la posición de los cuatro puntos en la imagen actual y la deseada. Si todos los puntos característicos no pertenecen al mismo plano 3D, entonces tres puntos pueden ser utilizados para estimar que plano y cinco puntos suplementarios para son necesarios para estimar $H_{i}$ [15]. Una vez que $H_{i}$ está disponible, se puede descomponer como:
$H=R+{\frac {t}{d*}}n*^{T}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \left(19\right)$
en la que $R$ es la matriz de rotación relativa a la orientación sobre los frames actual y deseado de la cámara, $n*$ es la normal al plano 3D expresado en el frame deseado, $d*$ es la distancia al plano 3D desde el frame deseado, y $t$ es la translación entre el frame actual y deseado. A partir de $H$, es posible recuperar $R$, ${\frac {t}{d*}}$, and $n*$. De hecho existen dos posibles soluciones para estos valores [16], pero esto es bastante fácil de seleccionar el correcto utilizando el conocimiento sobre la postura deseada. También es posible estimar la profundidad de cualquier punto de destino hasta un factor de escala común [17]. La profundidad de cada punto desconocido que aparece en IBVS clásica puede expresarse como una función de un parámetro constante úncio. Similarmente, los parámetros que son requeridos por PBVS pueden ser recuperados hasta un factor escalar como para el término de translación.

#### 1.2.5.2. Estimación directa

Los apartados anteriores se centran en la obtención analítica de la matriz de interacción. También es posible estimarla utilizando técnicas numéricas en un primer paso offline, o en el esquema de control online. Todos los métodos propuestos para estimar dicha matriz numéricamente confían en la observación de una estimación de las características debidos a saber o medir el movimiento de la cámara. En otras palabras, si se asume una variación de la característica $\Delta s{\text{ }}$ debida al movimiento de la cámara $\Delta v_{c}$ , se tiene:
$L_{s}\Delta v_{c}=\Delta s\,\,\,\,\,\,\,\,\,(20)\,\,\,\,\,\,\,\,\,\ L_{s}A=B\,\,\,\,\,\,\,\,\,(21)$
La ecuación (20) proporciona $k$ ecuaciones mientras que se tienen $kx6$ valores desconocidos en $L_{s}$ . Utilizando un conjunto de ${\text{N}}$ movimientos independientes de la cámara donde ${\text{N}}>{\text{6}}$ , es posible estimar $L_{s}$ resolviendo la ecuación (21), donde las columnas $A\in R^{6xN}{\text{ y }}B\in R^{kxN}$ son, respectivamente, formadas desde el conjunto de movimientos de la cámara y el conjunto de variaciones de las características. La solución por mínimos cuadrados viene determinada por:
${\widehat {L_{s}}}=BA^{+}\,\,\,\,\,\,\,\,\,(22)$
Los métodos basados en redes neuronales se han desarrollado también para la estimación de $L_{s}{\text{ }}$ [18], [19]. También es posible estimar el valor numérico de $L_{s}^{+}$ directamente que en la práctica proporciona una mejor solución [20]. En este caso, la relación básica es:
$L_{s}^{+}\Delta s=\Delta v_{c}\,\,\,\,\,\,\,\,\,(23)\,\,\,\,\,\,\,\,\,{\widehat {L_{s}^{+}}}=AB^{+}\,\,\,\,\,\,\,\,\,(24)$
La ecuación (23) proporciona seis ecuaciones y empleando un conjunto de N medidas con N>k podemos obtener la ecuación (24).
El principal interés de la utilización de la estimación numérica en los esquemas de control es que evitan todo el tema de calibración y modelado. Esto es particularmente útil cuando las características empleadas del análisis de los componentes principales de una imagen han sido consideradas en los esquemas de control del VS. Lo malo de estos métodos es que no es posible comprobar la estabilidad y la robustez del sistema.

## 1.3. Visual Servo basado en posición (PBVS)

Dependiendo del número de características extraídas de la imagen uno puede extraer el error de posición utilizando o no el modelo de la imagen. La principal ventaja de este enfoque es que se puede realizar un control directo de la trayectoria de la cámara en el espacio Cartesiano. Sin embargo, ya que no se hace un control de la imagen, las características extraídas de la misma utilizadas en la estimación de la posición pueden estar mal (debido a una mala calibración tanto del robot como de la cámara), lo que haría que el sistema de control fallara.
* Model-based 3D Visual Servoing
El sistema 3D VS que originalmente se propuso fue el “Model-Based Control” ya que la posición de la cámara puede estimarse utilizando un modelo 3D del objeto. Cuando se tiene una estimación de la posición actual y deseada de la cámara, su desplazamiento para alcanzar la posición deseada es muy fácil de obtener, y el control del efector final del robot puede realizarse con un bucle de control abierto, o para que sea más robusto, con un bucle de control cerrado (ver Figura 5).
Figura 5. Model-Based 3D Visual Servoing.
* Model-free 3D VS.
Recientemente se ha propuesto un esquema 3D VS que puede emplearse sin necesidad de conocer el modelo 3D del objeto (ver Figura 6). Las rotaciones, translaciones y direcciones se obtienen a partir de la Matriz Intrínseca (esencial). Esta matriz se estima desde la posición actual y las imágenes de referencia del objetivo. Sin embargo, como pasaba en el anterior enfoque, el sistema de control no tiene forma de saber si el objeto va a estar o no dentro del campo de visión de la cámara, y esto lo puede producir errores de calibración, tanto del robot como de la cámara.
Figura 6. Model-free 3D Visual servoing.
Los esquemas de control basados en la posición (PBVS) [2], [21], [22] utilizan la posición de la cámara respecto a algún sistema de coordenadas para definir . Para procesar esta posición desde un conjunto de medidas en una imagen es necesario conocer los parámetros intrínsecos de la cámara y el modelo 3D del objeto observado. Este problema de visión clásico se llama el problema de la localización 3D. Muchas soluciones han sido presentadas en la literatura [23], [24], y algunas vistas en el apartado de visión 3D. Es típico definir $s$ en términos de la parametrización empleada para representar la pose de la cámara. Notar que el parámetro $a$ de $s$ son ahora los parámetros intrínsecos de la cámara y el modelo 3D del objeto.
Es conveniente considerar tres sistemas de coordenadas: el frame actual de la cámara$F_{c}$ , el frame deseado de la cámara $F_{c*}$ y un frame de referencia $F_{0}$ fijado en el objeto. La notación que se va a emplear es la estándar utilizando un superíndice para representar el sistema de coordenadas al cual se refiere cada variable. De esta forma tenemos los vectores de coordenadas $^{c}t_{0}{\text{ y }}^{c*}t_{0}$ que proporcionan las coordenadas del origen del objeto respecto al frame actual de la cámara y respecto al frame deseado de la cámara, respectivamente. Además, se define $R=^{c*}R_{c}{\text{ }}$ como la matriz de rotación que proporciona la orientación del frame actual de la cámara respecto al deseado.
Se puede definir $s$ como $\left(t,{\text{ }}\theta u\right){\text{ }}$ en que $t$ es un vector de translación y $\theta u$ proporciona el ángulo/ eje para la rotación. Ahora se verán dos elecciones que se pueden hacer para ${\text{t}}$ y sus respectivas leyes de control.
Si $t$ se define relativa al frame del objeto $F_{0}$, obtenemos $s=\left(^{c}t_{0},{\text{ }}\theta u\right),{\text{ }}$ $s*=(^{c*}t_{0},0){\text{ y }}e=(^{c}t_{0}-^{c*}t_{0},{\text{ }}\theta u)$ . En este caso, la matriz de interacción relacionada con ${\text{e}}$ viene dada por: [25].
$L_{e}=\left({\begin{matrix}-I_{3}&[^{c}t_{0}]_{x}\\0&L_{\theta u}\\\end{matrix}}\right)$
donde:
$L_{\theta u}=I_{3}-{\frac {\theta }{2}}[u]_{x}{\text{+}}\left(1-{\frac {\sin c(\theta )}{\sin c^{2}({\frac {\theta }{2}})}}\right)\left[u\right]_{x}^{2}{\text{ }}\,\,\,\,\,\,\,\,\left(25\right)$
En que $I_{3}$ es la matriz identidad 3x3. $sinc\left(x\right)$ es el seno cardinal definido como $xsinc\left(x\right)=sin\left(x\right){\text{ y }}\ sinc\left(0\right)=1$. Siguiendo el desarrollo visto en el apartado “Componentes básicos del VS” tenemos:
$v_{c}=-\lambda {\widehat {L_{e}^{+}}}e\,\,\,\,\,\,\,\,\,(26)$
Ya que la dimensión de ${\text{k}}$ de $s$ es 6, que es el número de grados de libertad de la cámara. Estableciendo que:
${\widehat {L_{e}^{-1}}}=\left({\begin{matrix}-I_{3}&\left[^{c}t_{0}\right]_{x}L_{\theta u}^{-1}\\0&L_{\theta u}^{-1}\\\end{matrix}}\right){\text{ desarrollando}}\to \,\,\,\,\left\{{\begin{matrix}v_{c}=-\lambda \left[^{c*}t_{0}-^{c}t_{0}\right]+\left[^{c}t_{0}\right]_{x}\theta u\\\omega _{c}=-\lambda \theta u\\\end{matrix}}\right.\,\,\,\,\,\,\,\,\,(27)$
Con $L_{\theta u}{\text{ }}$ es como $L_{\theta u}^{-1}=\theta u$. Idealmente, esto es, si los parámetros de posición están perfectamente estimados, el comportamiento de $e$ será el esperado $\left({\dot {e}}=-\lambda e\right)$ . La elección de $e$ a causa del movimiento rotacional al seguir una geodésica con un decrecimiento exponencial de la velocidad y provoca que los parámetros de translación involucrados en $s$ decrezcan a la misma velocidad. Además, la trayectoria de la imagen del origen del frame del objeto sigue una línea puramente recta (en el ejemplo de la Figura 7 el centro de los cuatro puntos ha sido elegido como origen). Por otro lado, la trayectoria de la cámara no sigue una línea recta.
Otro esquema PBVS puede ser implementado utilizando ${\text{s}}=\left({\text{c}}*{\text{tc}},\theta {\text{u}}\right)$. En este caso se tiene ${\text{s}}*=0$ , ${\text{e}}={\text{s}}$, y:
$L_{e}=\left({\begin{matrix}R&0\\0&L_{\theta u}\\\end{matrix}}\right)\,\,\,\,\,\,\,\,\,(28)$
En este caso si los parámetros involucrados en la ecuación están perfectamente estimados, la trayectoria de la cámara es puramente una línea recta, mientras que la trayectoria de la imagen es menos satisfactoria que la del enfoque anterior. Algunas configuraciones particulares pueden hacer que la cámara pierda el campo de visión del objeto.
Las propiedades de estabilidad del PBVS son bonitas. Ya que $L_{\theta u}{\text{ }}$ es no singular cuando $\theta \neq 2k\pi$, se obtiene una estabilidad asintótica del sistema ya que $L_{e}{\hat {L}}_{e}^{-1}=I_{6}$, bajo esta fuerte hipótesis todos los parámetros son perfectos. Esto es cierto para los dos métodos presentados ya que las matrices de interacción dadas tienen rango completo cuando $L_{\theta u}{\text{ }}$ es no singular.
En relación a la robustez, el “feedback” se realiza utilizando cantidades estimadas que son función de las medidas tomadas de la imagen y los parámetros de calibración del sistema. Para el primer método presentado la matriz de interacción se corresponde perfectamente a los parámetros estimados, mientras la real es desconocida ya que los parámetros de posición estimados deben atenerse a errores de calibración o ruido. La verdadera condición que se puede hacer es que:
$L_{\hat {e}}{\widehat {L_{\hat {e}}^{-1}}}>0\,\,\,\,\,\,\,\,\,(29)$
Donde ${\widehat {L_{e}}}$ es desconocida. De hecho, incluso con pequeños errores de procesamiento de los puntos en la imagen pueden provocar errores de posición significativos e inestabilizar el sistema.

## 1.4. Enfoques avanzados

Ahora describimos sistemas de control “visual servo” que se han propuesto para mejorar el comportamiento de IBVS básica y PBVS. Los primeros en combinar las ventajas respectivas de estos sistemas al mismo tiempo tratando de evitar sus defectos.

### 1.4.1. VS híbrido

La principal desventaja del 3D VS es que no hay control en la imagen lo que implica que el objeto puede abandonar el campo visual de la cámara. También es necesario tener un modelo del objeto para obtener la posición de la cámara. El 2D VS no necesita explícitamente un modelo. Sin embargo, se precisa una estimación o aproximación de la profundidad al objeto para realizar la ley de control. Además, el principal inconveniente de este enfoque es que la convergencia se produce solamente en la vecindad de la posición deseada. Se ha propuesto un sistema híbrido para solucionar estos inconvenientes. Contrariamente al PBVS, el esquema de control del 2 ½ D no necesita ninguna geometría 3D del objeto. Además y contrariamente al 2D, este enfoque asegura la convergencia de la ley de control en todo el espacio de trabajo. 2 ½ D está basado en la estimación del desplazamiento parcial de la cámara desde la posición actual a la deseada para cada iteración de la ley de control. Las características visuales y los datos extraídos desde el desplazamiento parcial permiten el diseño de un control desacoplado controlando los 6 grados de libertad de la cámara (ver Figura 10). La robustez del esquema del VS respecto a los errores de calibración de la cámara también ha sido analizada.
Figura 10. 2 ½ D VS (Sistema Híbrido).
Supongamos que se tiene acceso a una ley de control inteligente para $\omega _{c}$, como una de las utilizadas en el PBVS:
$\omega _{c}{\text{=}}-\lambda \theta u\,\,\,\,\,\,\,\,\,(30)$
Teniendo en cuenta el vector de características $s_{t}$ y un error $e_{t}$ para controlar los grados de libertad de translación, se puede dividir la matriz de interacción de la siguiente forma:
${\dot {s}}_{t}{\text{=}}L_{s_{t}}v_{c}=\left({\begin{matrix}L_{v}&L_{\omega }\\\end{matrix}}\right)\left({\begin{matrix}v_{c}\\\omega _{c}\\\end{matrix}}\right)=L_{v}v_{c}+L_{\omega }\omega _{c}\,\,\,\,\,\,\,\,\,(31)$
Ahora, tomando ${\dot {e}}_{t}=-\lambda e_{t}{\text{ }}$ se puede resolver el control para la translación deseado como:
${\begin{aligned}&-\lambda e_{t}={\dot {e}}_{t}={\dot {s}}_{t}=L_{v}v_{c}+L_{\omega }\omega _{c}{\text{,}}\\&{\text{ }}\Rightarrow v_{c}=-L_{v}^{+}\left(\lambda e_{t}+L_{\omega }\omega _{c}\right)\,\,\,\,\,\,\,\,\,(32)\\\end{aligned}}$
Se puede pensar en que $\left(\lambda e_{t}+L_{\omega }\omega _{c}\right)$ es como un término de modificación del error, uno que combina el error original con el error que debería ser inducido por el movimiento de rotación debido a ⍵c. La entrada del control de translación $v_{c}=-L_{v}+(\lambda e_{t}+L_{\omega }\omega _{c}){\text{ }}$ hará que el error sea cero. El método conocido como 2 ½ D VS [25] fue el primero en explotar cada una de las particiones combinando IBVS y PBVS. En otras palabras, en [25], ], $s_{t}$ se ha seleccionado como las coordenadas de un punto de la imagen, y el logaritmo de su profundidad, así se tiene que $L_{v}$ es siempre una matriz triangular invertible. Siendo más preciso, se tiene $s_{t}=\left(x,{\text{ }}log\left(Z\right)\right)$, $s_{t*}=(x*,{\text{ }}log(Z*))$ , $e_{t}=(x-x*,log(\rho z)){\text{ }}$, donde $\rho z=Z/Z*$ y:
$\left\{{\begin{matrix}L_{v}={\frac {1}{Z*\rho z}}\left({\begin{matrix}-1&0&x\\0&-1&y\\0&0&-1\\\end{matrix}}\right)\\L_{\omega }=\left({\begin{matrix}xy&-(1+x^{2})&y\\1+y^{2}&-xy&-x\\-y&x&0\\\end{matrix}}\right)\\\end{matrix}}\right.\,\,\,\,\,\,\,\,\,(33)$
Notar que el ratio $\rho {\text{z}}$ puede obtenerse directamente desde el algoritmo parcial de estimación. Si regresamos a los sistemas globales clásicos del VS, se tiene que $e=\left(e_{t},{\text{ }}\theta u\right){\text{ }}$ y ${\text{L}}_{e}$ viene dada como:
$L_{e}=\left({\begin{matrix}L_{v}&L_{\omega }\\0&L_{\theta u}\\\end{matrix}}\right)\,\,\,\,\,\,\,\,\,(34)$
Desde la cual se obtiene directamente las leyes de control vistas anteriormente. Otros esquemas híbridos pueden implementarse, [26], por ejemplo modificando la tercera componente de ${\text{st}}$ seleccionándola de forma que todos los puntos de objetivo estén en el campo visual de la cámara tanto como sea posible. Otro ejemplo que se ha propuesto [27] es en elegir ${\text{s}}$ como $s=\left(^{c*}t_{c},{\text{ }}x_{g},{\text{ }}\theta u_{z}\right){\text{ }}$ que proporciona una matriz de interacción triangular a bloques de la siguiente forma:
$L_{e}=\left({\begin{matrix}R&0\\L_{v}^{'}&L_{\omega }^{'}\\\end{matrix}}\right)\,\,\,\,\,\,\,\,\,(35)$
Donde $L'_{v}$ y $L'_{\omega }$ pueden ser computadas fácilmente. Este esquema es tal que, en perfectas condiciones, la trayectoria de la cámara sigue una línea recta (desde $^{c*}t_{c}{\text{ }}$ como parte de $s$, y la trayectoria del centro de gravedad de la imagen del objeto es también una línea recta (ya que $x_{g}$ también forma parte de $s$). Los grados de libertad translacionales de la cámara permiten realizar una línea recta en el espacio 3D, mientras que los grados de libertad rotacionales permiten realizar una línea recta 2D y compensar también del movimiento 2D de $x_{g}$ debido al movimiento de translación.
Finalmente es posible combinar las características 2D y 3D de diferentes formas. Por ejemplo, en [28] se ha propuesto emplear en s las coordenadas homogéneas 2D de un conjunto de puntos expresados en píxeles multiplicados por sus respectivas profundidades: $s=\left(u_{1}Z_{1},{\text{ }}v_{1}Z_{1},\ldots ,u_{n}Z_{n},v_{n}Z_{n},{\text{ }}Z_{n}\right).{\text{ }}$ Como ocurría en IBVS, se obtiene en este caso un conjunto de características redundantes ya que un mínimo de tres puntos han de ser utilizados para controlar los seis grados de libertad de la cámara (aquí k≥9). Además, se ha demostrado [29] que esta selección redundante de características está libre de los mínimos locales.

### 1.4.2. VS particionado

Los VS híbridos descritos anteriormente han sido diseñados para separar los movimientos de rotación con los de translación mediante la selección adecuada de características visuales definidas en parte en 2D y en parte en 3D (por eso se les ha llamado 2 ½-D).
El objetivo es encontrar seis características de manera que cada uno de ellos está relacionado con un grado de libertad (en cuyo caso la interacción de la matriz es una matriz diagonal). El primer trabajo en este campo a dividido la matriz de interacción con el fin de aislar el movimiento relacionado con el eje óptico [30]. De hecho, cualquiera que sea la elección de , nosotros tenemos que:
${\dot {s}}=L_{s}v_{c}=L_{x\gamma }v_{x\gamma }+L_{z}v_{z}={\dot {s}}_{x\gamma }+{\dot {s}}_{z}\ \ \ \ \ \ \ \ \ \ \ \left(36\right)$
En donde $L_{x\gamma }$ contiene la primera, segunda, tercera, cuarta y quinta columna de $L_{s}$ y $L_{z}$ incluye la tercera y sexta columna de $L_{s}$. Similarmente, $v_{x\gamma }=\left(v_{x},v_{\gamma },\omega _{x},\omega _{\gamma }\right)$ y $v_{z}=\left(v_{z},\omega _{z}\right)$. Aquí, ${\dot {s}}_{z}=L_{z}v_{z}$ da la componente de ${\dot {s}}$ debido al movimiento de la cámara a lo largo y rotación sobre el eje óptico, mientras ${\dot {s}}_{x\gamma }=L_{x\gamma }v_{x\gamma }$ da la componente de ${\dot {s}}$ debido a la velocidad a lo largo y rotación sobre el eje $x$ y $\gamma$ de la cámara.
Continuando con la misma forma de antes, mediante el establecimiento de ${\dot {e}}=-\lambda e$ obtenemos:
$-\lambda e={\dot {e}}={\dot {s}}=L_{x\gamma }v_{x\gamma }+L_{z}v_{z}\ \ \ \ \ \to \,\,\,\,\,\,v_{x\gamma }=-L_{x\gamma }^{+}\left(\lambda e\left(t\right)+L_{z}v_{z}\right)\ \ \ \ \ \ \ \ \ \ \ \left(37\right)$
Como antes, podemos considerar $\left(\lambda e\left(t\right)+L_{z}v_{z}\right)$ como un error modificado que incorpora el error original teniendo en cuenta el error que se induce por $v_{z}$ . Teniendo en cuenta este resultado, lo que queda ahora es elegir $s$ y $v_{z}$. En cuanto a IBVS clásico, las coordenadas de un conjunto de puntos de la imagen se pueden utilizar en $s$ , mientras que dos nuevas características de la imagen pueden ser definidas para determinar $v_{z}$.
* Definir $\alpha$, con $0\leq \alpha <2\pi$ como el ángulo entre el eje horizontal del plano de la imagen y el segmento orientado que une dos características de la imagen.
* Definir $\sigma ^{2}$ como el área del polígono que definido por estos puntos. Del mismo modo, $\sigma ^{2}$ está estrechamente relacionado con la translación a lo largo del eje óptico.
Utilizado estas características, $v_{z}$ ha sido definida como:
$\left\{{\begin{matrix}v_{z}=\lambda _{v_{z}}\ln {\frac {\sigma *}{\sigma }}\\\omega _{z}=\lambda _{\omega _{z}}\left(\alpha *-\alpha \right)\\\end{matrix}}\right.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \,\,\,\,\,\,\,\,\,\left(38\right)$

## 1.5. Sistemas Eye-in-Hand y Eye-to-Hand controlados en el espacio articular

En los apartados anteriores se han considerado las seis componentes de la velocidad de la cámara como entradas al controlador del robot. Tan pronto como el robot no pueda realizar este movimiento, por ejemplo a causa de tener menos de 6 grados de libertad, los esquemas de control deben expresarse en el espacio de articulaciones.
En este espacio, el sistema de ecuaciones tanto para la configuración eye-to-hand como para la eye-in-hand tiene la misma forma:
${\dot {s}}{\text{=J}}_{s}{\dot {q}}+{\frac {\partial s}{\partial t}}\,\,\,\,\,\,\,\,\,(39)$
En ella, $J_{s}\in R^{kxn}$ es la matriz Jacobiana que puede estar relacionada con la matriz de interacción, y n es el número de articulaciones del robot.
Figura 13. (a): Eye-in-Hand system. (b): Eye-to-Hand system.
Para un sistema Eye-in-Hand (ver Figura 13a), $\partial s/\partial t{\text{ }}$ es la variación de $s$ debido al movimiento potencial del objeto. Y $J_{s}{\text{ }}$ viene dada por:
${\text{J}}_{s}{\text{=L}}_{s}^{c}X_{N}J(q)\,\,\,\,\,\,\,\,\,(40)$
Donde
* $^{c}X_{N}$ es la matriz de transformación del movimiento espacial desde el frame del sensor de visión al frame del efector final. Generalmente se trata de una matriz constante (tan grande como el número de sensores de visón rígidamente ligados al efector final del robot). Gracias a la robustez de los esquemas de control en bucle cerrado, es posible una aproximación de esta matriz en el VS. Si es necesario, una peor estimación es posible a través de los métodos clásicos de calibración hand-eye [31].
* $J\left(q\right){\text{ }}$ es la Jacobiana del robot expresada en el frame del efector final.
Para un sistema Eye-to-Hand (ver Figura 13b), $\partial s/\partial t{\text{ }}$ es la variación respecto al tiempo de debida al movimiento potencial del sensor de visión y $J_{s}$ puede expresarse como:
$(a)\,\,\,\,\,\,J_{s}=-L_{s}^{c}X_{0}^{N}J(q){\text{ }}\,\,\,\,\,\,\,\,\,\,\,\,(b)\,\,\,\,\,\,J_{s}=-L_{s}^{c}X_{0}^{0}J(q)\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,(41)$
En la ecuación (41a), se utiliza la Jacobiana clásica del robot $^{N}J\left(q\right){\text{ }}$ expresada en el frame del efector final, pero la matriz de transformación del movimiento espacial $^{c}X_{0}$ desde el frame del sensor de visión al frame del efector final provoca cambios al servo, y tiene que ser estimada en cada iteración del bucle de control, generalmente utilizando métodos de pose-estimation. En la ecuación (41b), la Jacobiana del robot $^{0}J\left(q\right){\text{ }}$ está expresada en el frame de referencia del robot, y la matriz de transformación del movimiento espacial $^{c}X_{0}{\text{ }}$ desde el frame del sensor de visión al frame de referencia es constante tanto como la cámara no se mueva. En este caso, que es conveniente en la práctica, se realiza una peor estimación de $^{c}X_{0}{\text{ }}$ pero generalmente es suficiente.
Una vez el paso de modelado ha finalizado, es muy fácil seguir el procedimiento que ha sido utilizado sobre el diseño de un esquema de control en el espacio de articulaciones y determinar la condición suficiente para asegurar la estabilidad del esquema de control. Se obtiene, considerando de nuevo $e=s-s*{\text{ }}$ y un decrecimiento exponencial desacoplado de $e$ :
${\dot {q}}{\text{=}}-\lambda {\hat {J}}_{e}^{+}e-{\hat {J}}_{e}^{+}{\frac {\partial {\hat {e}}}{\partial t}}\,\,\,\,\,\,\,\,\,(42)$
Si $k=n$ , considerando la ley de Lyapunov $L={\frac {1}{2}}\left|\left|e\left(t\right)\right|\right|^{2}$ , una condición suficiente para asegurar la estabilidad asintótica global viene determinada por:
$J_{e}{\widehat {J_{e}^{+}}}>0{\text{ }}si{\text{ }}k>n{\text{ }}\to {\text{ }}{\widehat {J_{e}^{+}}}J_{e}>0\,\,\,\,\,\,\,\,\,(43)$
Asegurando la estabilidad local asintótica del sistema. Notar que los parámetros intrínsecos actuales de la cámara aparecen en $J_{e}$ mientras que los estimados aparecen en${\hat {J}}_{e}^{+}$ . Así es posible analizar la robustez del esquema de control con respecto a los parámetros extrínsecos de la cámara. También es posible estimar directamente el valor numérico de $J_{e}$ o $J_{e}^{+}$ utilizando los métodos descritos en la sección “IBVS”.
Finalmente, notar que a veces si el robot tiene seis grados de libertad, no es generalmente equivalente al primer cómputo de $v_{c}$ (ecuación (4a)), y luego se deduce $q'$ utilizando la ecuación (42). De hecho, suele ocurrir que la Jacobiana del robot $J\left(q\right){\text{ }}$ sea singular mientras la Jacobiana de las características $J_{s}{\text{ }}$ no lo sea. (ocurrirá cuando $k<n$ ). Además, las propiedades de las pseudo-inversas aseguran que utilizando la ecuación (4a) , $\left|\left|v_{c}\right|\right|{\text{ }}$ es mínimo mientras usamos (42), mientras que empleando la ecuación $\left|\left|q'\right|\right|{\text{ }}$ es mínima. Tan pronto como $J_{e}^{+}\neq J^{+}\left(q\right)^{N}X_{c}L_{e}^{+},{\text{ }}$ los esquemas de control serán diferentes e inducirán trayectorias diferentes al robot. La elección del espacio de trabajo es así de importante.

## 1.6. Referencias

[1] B. Espiau, F. Chaumette, and P. Rives, “A new approach to visual servoing in robotics,” IEEE Trans. Robotics and Automation, vol. 8, pp. 313–326, June 1992.
[2] L. Weiss, A. Sanderson, and C. Neuman, “Dynamic sensor-based control of robots with visual feedback,” IEEE J. Robot. Automat., vol. 3, pp. 404–417, Oct. 1987.
[3] J. Feddema and O. Mitchell, “Vision-guided servoing with featurebased trajectory generation,” IEEE Trans. Robot. Automat., vol. 5, pp. 691–700, Oct. 1989
[4] D. Forsyth and J. Ponce, Computer Vision: A Modern Approach. Upper Saddle River, NJ: Prentice Hall, 2003.
[5] Y. Ma, S. Soatto, J. Kosecka, and S. Sastry, An Invitation to 3-D Vision: From Images to Geometric Models. New York: Springer-Verlag, 2003
[6] H. Michel and P. Rives, “Singularities in the determination of the situation of a robot effector from the perspective view of three points,” INRIA Research Report, Tech. Rep. 1850, Feb. 1993
[7] M. Fischler and R. Bolles, “Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography,” Communicat. ACM, vol. 24, pp. 381–395, June 1981.
[8] S. Hutchinson, G. Hager, and P. Corke, “A tutorial on visual servo control,” IEEE Trans. Robot. Automat., vol. 12, pp. 651–670, Oct. 1996.
[9] B. Espiau, F. Chaumette, and P. Rives, “A new approach to visual servoing in robotics,” IEEE Trans. Robotics and Automation, vol. 8, pp. 313–326, June 1992.
[10] E. Malis, “Improving vision-based control using efficient second-order minimization techniques,” in Proc. IEEE Int. Conf. Robot. Automat., pp. 1843–1848, Apr. 2004.
[11] G. Hager, W. Chang, and A. Morse, “Robot feedback control based on stereo vision: Towards calibration-free hand-eye coordination,” IEEE Control Syst. Mag., vol. 15, pp. 30–39, Feb. 1995.
[12] M. Iwatsuki and N. Okiyama, “A new formulation of visual servoing based on cylindrical coordinate system,” IEEE Trans. Robot. Automat., vol. 21, no. 2, pp. 266–273, Apr. 2005.
[13] Y. Ma, S. Soatto, J. Kosecka, and S. Sastry, An Invitation to 3-D Vision: From Images to Geometric Models. New York: Springer-Verlag, 2003. [14] R. Basri, E. Rivlin, and I. Shimshoni, “Visual homing: Surfing on the epipoles,” Int. J. Comput. Vision, vol. 33, pp. 117–137, Sept. 1999.
[15] E. Malis, F. Chaumette, and S. Boudet, “2 1/2 D visual servoing with respect to unknown objects through a new estimation scheme of camera displacement,” Int. J. Comput. Vision, vol. 37, pp. 79–97, June 2000
[16] O. Faugeras, Three-dimensional computer vision: a geometric viewpoint. Cambridge, MA: MIT Press, 1993.
[17] Y. Mezouar and F. Chaumette, “Path planning for robust image-based control,” IEEE Trans. Robot. Automa., vol. 18, no. 4 pp. 534–549, Aug. 2002.
[18] I. Suh, “Visual servoing of robot manipulators by fuzzy membership function based neural networks,” in Visual Servoing, K. Hashimoto, Ed. (World Scientific Series in Robotics and Automated Systems). Singapore: World Scientific Press, 1993, vol. 7, pp. 285–315.
[19] G. Wells, C. Venaille, and C. Torras, “Vision-based robot positioning using neural networks,” Image Vision Comput., vol. 14, pp. 75–732, Dec. 1996.
[20] J.-T. Lapresté, F. Jurie, and F. Chaumette, “An efficient method to compute the inverse jacobian matrix in visual servoing,” in Proc. IEEE Int. Conf. Robotics Automation, New Orleans, LA, Apr. 2004, pp. 727–732
[21] W. Wilson, C. Hulls, and G. Bell, “Relative end-effector control using cartesian position based visual servoing,” IEEE Trans. Robot. Automat., vol. 12, pp. 684–696, Oct. 1996.
[22] B. Thuilot, P. Martinet, L. Cordesses, and J. Gallice, “Position based visual servoing: Keeping the object in the field of vision,” in Proc. IEEE Int. Conf. Robot. Automat., pp. 1624–1629, May 2002.
[23] D. Dementhon and L. Davis, “Model-based object pose in 25 lines of code,” Int. J. Comput. Vis., vol. 15, pp. 123–141, June 1995.
[24] D. Lowe, “Three-dimensional object recognition from single twodimensional images,” Artif. Intell., vol. 31, no. 3, pp. 355–395, 1987.
[25] E. Malis, F. Chaumette, and S. Boudet, “2-1/2D visual servoing,” IEEE Trans. Robot. Automat., vol. 15, pp. 238–250, Apr. 1999.
[26] G. Morel, T. Leibezeit, J. Szewczyk, S. Boudet, and J. Pot, “Explicit incorporation of 2D constraints in vision-based control of robot manipulators,” in Proc. Int. Symp. Experimental Robotics, 2000, vol. 250 LNCIS Series, pp. 99–108.
[27] F. Chaumette and E. Malis, “2 1/2 D visual servoing: a possible solution to improve image-based and position-based visual servoings,” in Proc. IEEE Int. Conf. Robotics Automation, San Fransisco, CA, Apr. 2000, pp. 630–635.
[28] E. Cervera, A.D. Pobil, F. Berry, and P. Martinet, “Improving imagebased visual servoing with three-dimensional features,” Int. J. Robot. Res., vol. 22, pp. 821–840, Oct. 2004.
[29] F. Schramm, G. Morel, A. Micaelli, and A. Lottin, “Extended-2D visual servoing,” in Proc. IEEE Int. Conf. Robotics Automation, New Orleans, LA, Apr. 2004, pp. 267–273.
[30] P. Corke and S. Hutchinson, “A new partitioned approach to imagebased visual servo control,” IEEE Trans. Robotics Automation, vol. 17, no. 4, pp. 507–515, Aug. 2001.
[31] R. Tsai and R. Lenz, “A new technique for fully autonomous and efficient 3D robotics hand-eye calibration,” IEEE Trans. Robot. Automat., vol. 5, no. 3, pp. 345–358, June 1989
[32] F. Chaumette, S. Hutchinson. Visual Servo Control, Part I: Basic Approaches. IEEE Robotics and Automation Magazine, 13(4):82-90, December 2006.
[33] F. Chaumette, S. Hutchinson. Visual Servo Control, Part II: Advanced Approaches. IEEE Robotics and Automation Magazine, 14(1):109-118, March 2007.

## 1.7. NOTA

La mayoría de esta información está sacada de los dos siguientes artículos:
* S. A. Hutchinson, G. D. Hager, and P. I. Corke. A tutorial on visual servo control. IEEE Trans. Robot. Automat., 12(5):651--670, Oct. 1996.