[Jderobot] Modificaciones en Geometry

Roberto Calvo rocapal en gsyc.urjc.es
Lun Ago 5 08:28:48 CEST 2013


El vie, 02-08-2013 a las 16:07 +0200, Eduardo Perdices escribió:
> Hola,
> 
> ya está corregido, había un par de bugs en Progeo. Si hacéis update 
> cuidado con el CMakeLists que ha cambiado bastante.

Genial! Lo he probado con lo que estoy haciendo y funciona todo
perfecto!

He cambiado el CMakeList porque la librería que generaba era
libgeometry-shared, lo he dejado para que se cree como antes
libgeometry.so

La librería de progeo la he cambiado de nombre y borrado las anteriores
versiones que teníamos en geometry, había ya muchos ficheros. Ahora
queda así:

progeo/
|-- Progeo.cpp
`-- Progeo.h

Así, mientras convive con la anterior versión de progeo, no tenemos
problemas de compatibilidades con lo snombres.

Otra cosa Edu, ¿Tiene sentido utilizar Point3D y Point2D en vez de los
vectores de Eigen a pelo?. Te lo digo, porque si finalmente queremos
encapsular los vectores de Eigen con Point3D y Point2D, cambiaré progeo
para que acepte justamente eso y así queda todo más compatible.

¿Cómo lo ves?


> 
> Saludos.
> 
> El 02/08/13 14:13, Roberto Calvo escribió:
> > Edu,
> >
> > He cambiado mi código para que tire con el nuevo progeo usando Eigen y
> > falla (justo al hacer el project, o el backproject)
> >
> > rgbdCalibrator: /usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:394: typename Eigen::internal::traits<T>::Scalar& Eigen::DenseCoeffsBase<Derived, 1>::operator()(typename Eigen::internal::traits<T>::Index) [with Derived = Eigen::Matrix<double, 3, 1, 0, 3, 1>]: La declaración `index >= 0 && index < size()' no se cumple.
> > Abortado
> >
> > Para que lo puedas probar te dejo en [1] el código que inicializa
> > matrices y demás.
> >
> > Echale un ojo y me cuentas
> >
> > [1] http://pastebin.com/gqd1w4s5
> >
> >
> > El vie, 02-08-2013 a las 12:50 +0200, Eduardo Perdices escribió:
> >> Hola,
> >>
> >> estoy quitando ya las clases redundantes, he cambiado progeo para que
> >> tire directamente de Eigen, pero todo lo de Collada sigue usando
> >> Matrix3x3, Matrix4x4, etc, hasta que eso no esté cambiado no se pueden
> >> eliminar esas clases.
> >>
> >> Como no tengo manera de probar el Collada de momento prefiero no
> >> tocarlo, así que Alex cuando puedas cámbialo.
> >>
> >> Saludos.
> >>
> >> El 02/08/13 11:00, Roberto Calvo escribió:
> >>> Me parece bien, porque la abstracción que tenemos con vector* o matriz*
> >>> no es total. Si mañana cambiamos eigen por otra librería nos toca
> >>> modificar código.
> >>>
> >>> Lo único es que habría que cambiar todo progeo.
> >>>
> >>> A ver que comenta Alex.
> >>>
> >>> El vie, 02-08-2013 a las 00:15 +0200, Eduardo Perdices escribió:
> >>>> Hola,
> >>>>
> >>>> ¿hay alguna razón para que exista tanta cantidad de clases?, tenemos
> >>>> vector2d, vector2h, vector3d, vector3h, matriz3x3, matrix3x4, etc.
> >>>> Todas esas clases en realidad no aportan nada, ya que simplemente le
> >>>> dan otro nombre a algo que ya existe en Eigen, y el propia Eigen te da
> >>>> para ellos todo lo que quieras:
> >>>>
> >>>> http://eigen.tuxfamily.org/1/classEigen_1_1Vector.html
> >>>> http://eigen.tuxfamily.org/1/classEigen_1_1Matrix.html
> >>>>
> >>>> operaciones, normalizado, y un montón de historias más.
> >>>>
> >>>> Luego, si lo que se quiere es una librería para geometría, con tener
> >>>> clases de este tipo valdría: Plane, Line2D, Line3D, Segment2D,
> >>>> Segment3D, Point2D, Point3D, y que todas ellas tiren directamente de
> >>>> Eigen o de las clases inferiores, es decir, los constructores del
> >>>> Line2D podrían ser:
> >>>>
> >>>> Line2D(double p1x, double p1y, double p2x, double p2y);
> >>>> Line2D(Eigen::Vector2d p1, Eigen::Vector2d p2);
> >>>> Line2D(Point2D p1, Point2D p2);
> >>>> Line2D(double vx, double vy, double vz);
> >>>> Line2D(Eigen::Vector3d v);
> >>>>
> >>>> Y el Point2D sería:
> >>>>
> >>>> Point2D(double x, double y, double h=1.0);
> >>>> Point2D(Eigen::Vector2d p, double h=1.0);
> >>>> Point2D(Eigen::Vector3d p);
> >>>>
> >>>> Con eso das la opción para que acepte cualquier cosa, con H o sin H.
> >>>> Por cierto, a la hora de utilizar Eigen utilizad siempre que podáis
> >>>> double, ya que hay problemas con los float entre la versión 32b y 64b
> >>>> (ahora mismo está todo el float).
> >>>>
> >>>> Saludos.
> >>>>
> >>>> El 01/08/13 14:08, Roberto Calvo escribió:
> >>>>
> >>>>
> 

-- 
Roberto Calvo Palomino        | Robotics Lab (GSyC) 
R&D Android Mobile Engineer   | Universidad Rey Juan Carlos

Twitter: @rocapal 
Linkedin: http://www.linkedin.com/in/rocapal



More information about the Jde-developers mailing list