Diferencia entre revisiones de «Curva serpentinoide»
(→Altura y anchura de la curva serpentinoide) |
(→Noticias) |
||
(No se muestran 3 ediciones intermedias del mismo usuario) | |||
Línea 2: | Línea 2: | ||
== Introducción == | == Introducción == | ||
− | La '''curva serpentinoide''' la descubrió | + | La '''curva serpentinoide''' (o curva serpenoide, serpenoid curve en inglés) la descubrió el '''profesor Hirose''' en 1976 cuando realizaba su tesis doctoral en el Instituto de tecnología de Tokyo. Investigaba la biomecánica de las serpientes para su aplicación a la construcción de robots. |
La curva serpentinoide es indispensable para el estudio y construcción de '''robots ápodos''' (gusanos y serpientes). El autor de este artículo la ha estudiado en su [[Juan Gonzalez:Tesis|tesis doctoral]] para aplicarla a la locomoción de estos robots. | La curva serpentinoide es indispensable para el estudio y construcción de '''robots ápodos''' (gusanos y serpientes). El autor de este artículo la ha estudiado en su [[Juan Gonzalez:Tesis|tesis doctoral]] para aplicarla a la locomoción de estos robots. | ||
Línea 183: | Línea 183: | ||
== Bibliografía == | == Bibliografía == | ||
* S. Hirose. '''Biologically Inspired Robots (Snake-like Locomotor and Manipulator)'''. Oxford Science Press, 1993. | * S. Hirose. '''Biologically Inspired Robots (Snake-like Locomotor and Manipulator)'''. Oxford Science Press, 1993. | ||
+ | * Juan Gonzalez-Gomez, "'''Robótica Modular y Locomoción: Aplicación a Robots Ápodos'''". Tesis doctoral. Universidad Autónoma de Madrid. Noviembre-2008 ([[Juan Gonzalez:Tesis|Más información]]) | ||
== Noticias == | == Noticias == | ||
+ | * '''18/Enero/2015''': Página migrada a [https://github.com/Obijuan/My-Ipython-notebooks/tree/master/serpenoid-curve este python notebook] en github. Se puede visualizar [http://nbviewer.ipython.org/github/Obijuan/My-Ipython-notebooks/blob/master/serpenoid-curve/Serpenoid-Curve-es.ipynb desde este enlace] | ||
* '''28/Jun/2010''': Animación de la forma de la curva continua con el parámetro k | * '''28/Jun/2010''': Animación de la forma de la curva continua con el parámetro k | ||
* '''22/Jun/2010''': Animación de la forma de la curva continua con el parámetro alfa | * '''22/Jun/2010''': Animación de la forma de la curva continua con el parámetro alfa |
Revisión actual del 14:02 18 ene 2015
Contenido
- 1 Introducción
- 2 Curva Serpentinoide Continua
- 3 Curva Serpentinoide Discreta
- 4 Autor
- 5 Licencia
- 6 Repositorio
- 7 Bibliografía
- 8 Noticias
Introducción
La curva serpentinoide (o curva serpenoide, serpenoid curve en inglés) la descubrió el profesor Hirose en 1976 cuando realizaba su tesis doctoral en el Instituto de tecnología de Tokyo. Investigaba la biomecánica de las serpientes para su aplicación a la construcción de robots.
La curva serpentinoide es indispensable para el estudio y construcción de robots ápodos (gusanos y serpientes). El autor de este artículo la ha estudiado en su tesis doctoral para aplicarla a la locomoción de estos robots.
En este documento se describe la curva/onda serpentinoide, sus parámetros, sus propiedas y se presentan los scripts de Octave/Matlab que las implementan.
Curva Serpentinoide Continua
Definición
La curva serpentinoide es aquella cuya curvatura varía sinusoidalmente con la distancia a lo largo de la curva. Su curvatura está dada por la ecuación:
<math>K(s) = -\frac{2\pi k}{l}\alpha\sin\left(\frac{2\pi k}{l}s\right)</math> | (ec. 1) |
donde:
l | Longitud de la curva. l>0 |
s | Distancia a lo largo de la curva. <math>s\in\left[0,l\right]</math> |
k | Número de ondulaciones. k>0 |
<math>\alpha</math> | Ángulo de serpenteo. <math>\alpha\in\left[0,121\right]</math> |
Ángulo de serpenteo <math>\alpha</math>
El ángulo de serpenteo <math>\alpha</math> es la pendiente de la curva en el punto s=0 y determina la forma que tendrá la curva.
En la figura 1 se muestra la forma para ángulos de serpenteo de 0, 30, 60 y 90. Para <math>\alpha=0</math> es una recta situada sobre el eje x de longitud l. Al aumentar <math>\alpha</math> la curva se eleva, ganando en altura pero reduciéndose en anchura.
En la figura 2 se muestra la curva serpentinoide para <math>\alpha=121</math> grados, que es su valor máximo. A partir de ahí se producen colisiones entre los puntos de la curva.
Variación de la forma con <math>\alpha</math>
![]() |
Número de ondulaciones (k)
El parámetro k determina el número de ondulaciones de la curva serpentinoide.
En la figura 3 se han representado tres curvas con el mismo valor del ángulo de serpenteo (<math>\alpha=70</math>) y misma longitud pero con diferentes valores de k. Al aumentar k, aumenta el número de ondulaciones, disminuye la altura pero la anchura permanece constante
Variación de la forma con k
En la siguiente animación se muestra cómo varía la forma de una curva serpentinoide continua de longitud fija l=1 y ángulo de serpenteo <math>\alpha</math>=70 con el parámetro k. Se puede apreciar una propiedad muy importante: La anchura en el eje x NO varía con k
![]() |
Longitud (l)
La longitud l de la curva determina su escala. En la figura 4 se muestra una curva serpentinoide con valores fijos del ángulo de serpenteo (<math>\alpha</math>) y de las ondulaciones (k) pero con distintas longitudes. La forma es la misma, pero escalada.
Puntos de Interés
Puntos de curvatura 0
Los puntos de la curva serpentinoide en los cuales la curvatura es 0 se calculan igualando la ecuación 1 a cero:
<math>K\left(s\right)=0\,\Longrightarrow\, s=0,\,\frac{1}{2}\frac{l}{k},\,\frac{l}{k},\,\frac{3}{2}\frac{l}{k},\,2\frac{l}{k},\,\ldots\frac{1}{2}\frac{l}{k}n</math> con n = 0, 1, 2 ...
Puntos de Máxima curvatura
Los puntos donde la curvatura es máxima se calculan igualando la derivada del valor absoluto de la curvatura a cero:
<math>\frac{d\left|K\left(s\right)\right|}{ds}=0\,\Longrightarrow\, s=\frac{1}{4}\frac{l}{k},\,\frac{3}{4}\frac{l}{k},\,\frac{5}{4}\frac{l}{k},\ldots\frac{1}{4}\frac{l}{k}\left(2n+1\right)</math>
En la figura 5 se muestra la situación de estos puntos en una curva serpentinoide de dos ondulaciones y ángulo de serpenteo de 70 grados. Los puntos de mínima curvatura coinciden con los cortes con el eje x. Lo puntos de máxima curvatura coinciden con los puntos con valor absoluto de sus ordenadas mayores
Pendiente de la curva <math>\alpha_s</math>
Denotamos la pendiente del vector tangente a la curva por el punto s como <math>\alpha_s</math>
Por definición, la curvatura se define como el ritmo de cambio del vector unidad tangente a la curva, es decir:
<math>K(s)=\frac{d\alpha_{s}}{ds}</math>
A partir de esa ecuación calculamos la pendiente de la curva mediante integración:
<math>\alpha_{s}=\alpha+\int_{0}^{s}K(s)ds</math>
llegando a la expresión:
<math>\alpha_{s}=\alpha\cos\left(\frac{2\pi k}{l}s\right)</math> | (ec. 2) |
En la figura 6 se muestra el valor de <math>\alpha_s</math> sobre una curva serpentinoide. En los puntos de máxima curvatura <math>\alpha_s=0</math> y en los de curvatura nula |<math>\alpha_s</math>|=<math>\alpha</math>
Formulación en coordenadas cartesianas
Las coordenadas cartesianas (x,y) de un punto s situado en la curva serpentinoide están dadas por las ecuaciones 3 y 4
<math>x\left(s\right)=\int_{0}^{s}\cos\left(\alpha\cos\left(\frac{2\pi k}{l}s\right)\right)ds</math> | ec. 3 |
<math>y\left(s\right)=\int_{0}^{s}\sin\left(\alpha\cos\left(\frac{2\pi k}{l}s\right)\right)ds</math> | ec. 4 |
Estas integrales no tienen solución analítica, pero pueden ser resueltas numéricamente.
Para su deducción hay que fijarse en el dibujo de la figura 7. En ella aparece una curva serpeninoide y un punto genérico situado a una distancia s. Sus coordenadas son x(s), y(s). La pendiente a la curva por el punto s es <math>\alpha_s</math>. "Ampliando" el punto s, vemos que está aproximado por un segmento de longitud ds, que forma un ángulo <math>\alpha_s</math> con el eje x. Las proyecciones de este segmento son:
- <math>dx=ds\ \cos\alpha_{s}</math>
- <math>dy=ds\ \sin\alpha_{s}</math>
La abscisa del punto s se obtiene por tanto mediante la integración de los dx. Luego se aplica la ecuación anterior para sustituir dx por ds y finalmente se aplica la ecuación 2:
<math>x\left(s\right)=\int_{0}^{s}dx=\int_{0}^{s}\cos\alpha_{s}ds=\int_{0}^{s}\cos\left(\alpha\cos\left(\frac{2\pi k}{l}s\right)\right)ds</math>
El razonamiento para obtener y(s) es similar.
Altura y anchura de la curva serpentinoide
TODO: formulas para h(alfa,k), w(alfa,k) y lambda(alfa,k)
![]() |
Scripts en octave/Matlab
![]() |
Curva Serpentinoide Discreta
El ángulo de doblaje varía de forma sinusoidal a lo largo del eje corporal:
Ángulo de doblaje
![]() |
Autor
Licencia
![]() |
Repositorio
- SVN del proyecto http://svn.iearobotics.com/serpenoid/
Para obtener la versión actual del SVN:
svn co http://svn.iearobotics.com/serpenoid/trunk
Bibliografía
- S. Hirose. Biologically Inspired Robots (Snake-like Locomotor and Manipulator). Oxford Science Press, 1993.
- Juan Gonzalez-Gomez, "Robótica Modular y Locomoción: Aplicación a Robots Ápodos". Tesis doctoral. Universidad Autónoma de Madrid. Noviembre-2008 (Más información)
Noticias
- 18/Enero/2015: Página migrada a este python notebook en github. Se puede visualizar desde este enlace
- 28/Jun/2010: Animación de la forma de la curva continua con el parámetro k
- 22/Jun/2010: Animación de la forma de la curva continua con el parámetro alfa
- 15/Jun/2010:
- Script Octave de la curva serpentinoide migrado a Matlab
- Documentación sobre los parámetros l, k y <math>\alpha</math>
- 16/Enero/2009: Creado repositorio y comenzada esta página