Boost logo

Ublas :

From: Dinesh Gurram (dgurram_at_[hidden])
Date: 2005-04-30 22:06:02


Hi,

I am quite new to uBlas and even SLAM (Simultaneous Localisation and
Mapping) - an important task performed by mobile robots in new
environments.

I have started with a robotics framework known as Orca
(orca-robotics.sourceforge.net) which has a SLAM component that
utilises uBlas. However, this component has not been maintained too
well and I am currently having some incompatibility issues causing the
component to fail at compilation. Perhaps it was written with an older
version of Boost/uBlas, I'm not sure. I get lost in the maths that the
code is trying to perform and the templated calls etc (I'm also kinda
new to c++) so I was hoping someone with more (a lot more) knowledge
than myself would be able to provide some clues as to what's going on.

I will start with providing the compiler output:

/home/dgurram/unpacked/orca/orca-components/src/components/slamlocalizer:
building default_target
Building dependencies cmake.check_depends...
Planning to Build Component: slamlocalizer
Building object file clsfslam.o...
/home/dgurram/unpacked/orca/orca-components/src/components/slamlocalizer/clsfslam.cpp:
In member function `bool
CLSFSlam::CLSFApplyConstraints(std::vector<int, std::allocator<int>
>&, int, int, int, int)':
/home/dgurram/unpacked/orca/orca-components/src/components/slamlocalizer/clsfslam.cpp:217:
warning: comparison between signed and unsigned integer expressions
/home/dgurram/unpacked/orca/orca-components/src/components/slamlocalizer/clsfslam.cpp:339:
warning: comparison between signed and unsigned integer expressions
/usr/include/boost/numeric/ublas/matrix_expression.hpp: In function
`typename boost::numeric::ublas::matrix_matrix_binary_traits<typename
E1::value_type, E1, typename E2::value_type, E2>::result_type
boost::numeric::ublas::prod(const
boost::numeric::ublas::matrix_expression<E>&, const
boost::numeric::ublas::matrix_expression<E2>&) [with E1 =
boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::symmetric_matrix<double,
boost::numeric::ublas::lower, boost::numeric::ublas::row_major,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, boost::numeric::ublas::matrix_unary2<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::row_major,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, boost::numeric::ublas::scalar_identity<double> >,
boost::numeric::ublas::matrix_matrix_prod<double, double, double> >,
E2 = boost::numeric::ublas::symmetric_matrix<double,
boost::numeric::ublas::lower, boost::numeric::ublas::row_major,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >]':
/home/dgurram/unpacked/orca/orca-components/src/components/slamlocalizer/clsfslam.cpp:265:
  instantiated from here
/usr/include/boost/numeric/ublas/matrix_expression.hpp:5103: error:
incomplete type `boost::STATIC_ASSERTION_FAILURE< false>' used in
nested name specifier
/usr/include/boost/numeric/ublas/matrix_expression.hpp:5103: error:
size of array has non-integral type `<type error>'
/usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/bits/stl_algo.h:
In function `_RandomAccessIterator std::find(_RandomAccessIterator,
_RandomAccessIterator, const _Tp&, std::random_access_iterator_tag)
[with _RandomAccessIterator= __gnu_cxx::__normal_iterator<int*,
std::vector<int, std::allocator<int> > >, _Tp = unsigned int]':
/usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/bits/stl_algo.h:314:
  instantiated from `_InputIteratorstd::find(_InputIterator,
_InputIterator, const _Tp&) [with _InputIterator =
__gnu_cxx::__normal_iterator<int*, std::vector<int,
std::allocator<int> > >, _Tp = size_t]'

I have also attached the cpp file where the error is originating, just
to allow you to see the line(s) of code causing trouble. Of course
there are other files in the component and Orca and this won't give
the whole picture. But maybe these kind of errors ring a bell? Have
they been encountered by anyone? (I've searched lists.boost.org an
came up empty-handed). Has the interface to uBlas changed
significantly in recent years? Is it a compiler thing? I am using
3.4.3 20050227 on a Fedora Core 3 system running on an Athlon 900.

It's a long shot but maybe someone on this list has used Orca. The
orca mailing list has not responded for a while now so this seems to
be my last hope.

Thanks in advance,

Dinesh