Giter VIP home page Giter VIP logo

auvlib's People

Contributors

ignaciotb avatar iyuner avatar luxiya01 avatar maxlarsson2 avatar nilsbore avatar xyp8023 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

auvlib's Issues

auvlib v1.0

There are a few features to tick off before tagging a 1.0 version:

  • Add a std_data::sss_ping mirroring xtf_data::xtf_sss_ping that replaces the latter in all algorithms
  • Make parsing of xtf data work on windows
  • Make sure jsf data works on windows
  • Optional: automatic releases on windows
  • Disable wireframe rendering when starting up libigl viewers
  • Update submodules
  • Add optional draping_result callback to view_draper
  • Enable refraction tracing in draping objects, long-term: do it with boundary refractions instead
  • Build new docs
  • Fix #45

Breaking changes:

  • Add altitude to xtf sidescan pings
  • Switch default python version to 3
  • Switch to opencv 4
  • Switch all data formats to NED instead of ENU

Got all zeros for the times when testing ray tracing

Maybe something broke in the ray tracing code? I tested this:

print "Got final times: ", end_times.transpose()
and got all zeros for the times.

And when I tested the draping with ray tracing enabled, with debug_output set True, I found out that all those times printing from this line:

if (DEBUG_OUTPUT) cout << "Got final times: " << times.transpose() << endl;

, are all zeros as well. Is this something you are aware of?

Add instruction to add path to libs to your .bashrc?

Can we add an instruction on the readme saying if you want to use auvlib as shared libraries you should add it your path?

Something like:
Add this too to your .bashrc
export PATH=$PATH:/yourpathto/auvlib/install/share

auvlib not compatible with some eigen3 versions

C. Chien succeeded compiling with version 3.3.7 but not with 3.2.10, 3.2.92 and 3.3.90.

Note: on my computer I have eigen 3.2.92, and it works.

Discovered by C. Chien:

Just found out that the issue related to eigen3 is due to incompatibility between different versions of eigen3. I installed auvlib on another computer with eigen-3.2.10, and got error messages listed at the end of this email. Then I installed Eigen-3.2.92, and expected it would work, but got another type of error saying ceres require Eigen version 3.3.7 during cmake .. (i.e. Makefile was not even generated). Not sure why I didn't get that message earlier and had Makefile generated). So I installed Eigen 3.3.7, then auvlib was successfully made and built. Thanks. C. Chien

/usr/local/include/eigen3/Eigen/src/StlSupport/StdVector.h:69:9: error: partial specialization of ‘class std::vector<T, Eigen::aligned_allocator >’ after instantiation of ‘class std::vector<Eigen::Matrix<double, 2, 2>, Eigen::aligned_allocator<Eigen::Matrix<double, 2, 2> > >’ [-fpermissive]
class vector<T,EIGEN_ALIGNED_ALLOCATOR >
^
/usr/local/include/eigen3/Eigen/src/StlSupport/StdVector.h:69:9: error: partial specialization of ‘class std::vector<T, Eigen::aligned_allocator >’ after instantiation of ‘class std::vector<Eigen::Matrix<double, 3, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 3, 3> > >’ [-fpermissive]
/usr/local/include/eigen3/Eigen/src/StlSupport/StdVector.h:69:9: error: partial specialization of ‘class std::vector<T, Eigen::aligned_allocator >’ after instantiation of ‘class std::vector<Eigen::Matrix<double, -1, -1>, Eigen::aligned_allocator<Eigen::Matrix<double, -1, -1> > >’ [-fpermissive]
/usr/local/include/eigen3/Eigen/src/StlSupport/StdVector.h:69:9: error: partial specialization of ‘class std::vector<T, Eigen::aligned_allocator >’ after instantiation of ‘class std::vector<Eigen::Matrix<double, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 3, 1> > >’ [-fpermissive]
/home/chchien/catkin_ws/src/auvlib/src/bathy_maps/src/drape_mesh.cpp: In function ‘std::pair<Eigen::Matrix<double, -1, -1>, Eigen::Matrix<int, -1, 1> > correlate_hits(const MatrixXd&, const VectorXi&, const VectorXd&, const xtf_data::xtf_sss_ping_side&, const Vector3d&, double, const MatrixXi&, const EntriesT&, bool, Eigen::MatrixXd&, Eigen::VectorXd&, Eigen::VectorXi&, bool)’:
/home/chchien/catkin_ws/src/auvlib/src/bathy_maps/src/drape_mesh.cpp:237:66: error: call of overloaded ‘Matrix(int)’ is ambiguous
return make_pair(Eigen::MatrixXd(0, 4), Eigen::VectorXi(0));

Jetson AGX Xavier building error

When building the repo on the Xavier, I get the following error:

~/auvlib/build$ make -j4

Scanning dependencies of target tinyxml2
Scanning dependencies of target auvlib_glad
Scanning dependencies of target math
Scanning dependencies of target sys
[  0%] Building CXX object src/embree/common/math/CMakeFiles/math.dir/constants.cpp.o
[  1%] Building CXX object src/CMakeFiles/tinyxml2.dir/libigl/external/tinyxml2/tinyxml2.cpp.o
c++: error: unrecognized command line option ‘-msse2’
src/embree/common/math/CMakeFiles/math.dir/build.make:62: recipe for target 'src/embree/common/math/CMakeFiles/math.dir/constants.cpp.o' failed
make[2]: *** [src/embree/common/math/CMakeFiles/math.dir/constants.cpp.o] Error 1
CMakeFiles/Makefile2:1286: recipe for target 'src/embree/common/math/CMakeFiles/math.dir/all' failed
make[1]: *** [src/embree/common/math/CMakeFiles/math.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  1%] Building C object src/CMakeFiles/auvlib_glad.dir/libigl/external/glad/src/glad.c.o
[  1%] Building CXX object src/embree/common/sys/CMakeFiles/sys.dir/sysinfo.cpp.o
[  2%] Building CXX object src/embree/common/sys/CMakeFiles/sys.dir/alloc.cpp.o
c++: error: unrecognized command line option ‘-msse2’
src/embree/common/sys/CMakeFiles/sys.dir/build.make:62: recipe for target 'src/embree/common/sys/CMakeFiles/sys.dir/sysinfo.cpp.o' failed
make[2]: *** [src/embree/common/sys/CMakeFiles/sys.dir/sysinfo.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
c++: error: unrecognized command line option ‘-msse2’
src/embree/common/sys/CMakeFiles/sys.dir/build.make:86: recipe for target 'src/embree/common/sys/CMakeFiles/sys.dir/alloc.cpp.o' failed
make[2]: *** [src/embree/common/sys/CMakeFiles/sys.dir/alloc.cpp.o] Error 1
CMakeFiles/Makefile2:1231: recipe for target 'src/embree/common/sys/CMakeFiles/sys.dir/all' failed
make[1]: *** [src/embree/common/sys/CMakeFiles/sys.dir/all] Error 2
[  3%] Linking C static library libauvlib_glad.a
[  3%] Built target auvlib_glad
[  3%] Linking CXX static library libtinyxml2.a
[  3%] Built target tinyxml2
Makefile:151: recipe for target 'all' failed
make: *** [all] Error 2

It looks like the problem comes from the embree submodule of libigl. By taking a closer look I saw that the imported version is v3.5.2, which does not support ARM architectures. This feature has been implemented starting from v3.13.0.

Having said that, I tried a variety of options, including:

However, the same error kept occurring.

Anyway, this is just my assumption on what the issue could be, maybe I'm extremely off-track and the fix turns out to be easier than expected.

CMake Error when install auvlib to build docker image

Hi, I am building a docker image based on ros. When I tried to install auvlib, there is a CMake Error at satge "RUN cmake -DCMAKE_INSTALL_PREFIX=../install .. && make -j4".
The error massage is:
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "mesh_map" which requires target "igl_core" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "mesh_map" which requires target "igl_opengl_glfw" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "align_map" which requires target "igl_core" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "align_map" which requires target "igl_opengl_glfw" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "drape_mesh" which requires target "igl_embree" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "drape_mesh" which requires target "igl_core" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "drape_mesh" which requires target "igl_opengl_glfw" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "patch_draper" which requires target "igl_core" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "patch_draper" which requires target "igl_opengl_glfw" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "base_draper" which requires target "igl_core" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "base_draper" which requires target "igl_opengl_glfw" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "map_draper" which requires target "igl_core" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "map_draper" which requires target "igl_opengl_glfw" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "sss_gen_sim" which requires target "igl_core" that is not in the export set.
CMake Error: install(EXPORT "BathyMapsConfig" ...) includes target "sss_gen_sim" which requires target "igl_opengl_glfw" that is not in the export set.

When I used to install auvlib on my own ubuntu 16.04, I did not remember getting this error, but I don't know why it happened now when I tried to build a docker based on ubuntu and ros.
My DockerFile is like this:

FROM ros:kinetic-ros-core-xenial
RUN git clone https://github.com/nilsbore/auvlib.git
WORKDIR auvlib
RUN mkdir -p build && apt-get update && apt-get install -y libcereal-dev libglfw3-dev libceres-dev libtinyxml2-dev \
&& git submodule update --init
WORKDIR libigl
RUN git submodule update --init external/embree
&& git submodule update --init external/glfw
WORKDIR ../build
RUN apt-get update && apt-get install -y libopencv-dev
RUN cmake -DCMAKE_INSTALL_PREFIX=../install ..
&& make -j4
RUN make install

kinetic-ros-core-xenial is provided by ros: https://github.com/osrf/docker_images/blob/1a1c56d93f309d10c412c6323db5791fc1b23d1b/ros/kinetic/ubuntu/xenial/ros-core/Dockerfile
Anyone knows what might be the solution? Thanks!

Pitch correct in RAN data?

We should see if the conversion between NED and ENU coordinate system invalidates some of the pitch readings.

Basically, the heading/yaw should already be correct. The roll is the same AFAIK. However, the pitch needs to be negated. I don't know right know how this is handled for the .all and .xtf files from RAN. Maybe @xyp8023 can look into it if he's looking at the RAN data now.

sss_meas_data with lengths longer than 2000 pings

For some reason, sss_meas_data with more than 2000 pings are corrected. The initial size is 2000 so it's either something with the resizing not working, or the pings not being written past the initial size.

Dae reading not compiling on Ubuntu 18.04 due to TinyXML breakage

I get this error when compiling on 18.04:

auvlib/libigl/include/igl/xml/writeDAE.cpp:131:15: error: ‘XML_NO_ERROR’ was not declared in this scope
   if(error != XML_NO_ERROR)

This can be fixed by changing to XML_SUCCESS inside libigl-legacy. Not sure how to fix this in a way that's consistent across platforms, best fix probably to upgrade to proper libigl.

cannot read csv_asvp_sound_speed data

I updated the Dockerfile to the following

FROM ros:noetic-ros-core-focal

RUN apt-get update && apt-get upgrade -y 
RUN apt-get install -y libcereal-dev libglfw3-dev libceres-dev libtinyxml2-dev libopencv-dev python3-pip python3-opencv 
RUN apt-get install -y xorg-dev
RUN pip install ipython==5.0.0

RUN apt-get install git -y
RUN git clone https://github.com/nilsbore/auvlib.git
WORKDIR auvlib
RUN git submodule update --init && mkdir -p build
WORKDIR build
RUN cmake -DCMAKE_INSTALL_PREFIX=../install .. ; exit 0
RUN make -j4
RUN make install

RUN echo "export PYTHONPATH=$PYTHONPATH:/auvlib/install/lib" >> ~/.bashrc && /bin/bash -c "source ~/.bashrc"  && rm -rf /var/lib/apt/lists/*

The container builds successfully. I can start the python3 interpreter and import the csv_data utility

from auvlib.data_tools import csv_data

However, when I try to run
sound_speeds = csv_data.csv_asvp_sound_speed.parse_file(svp_path)

I get the following error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: vector::_M_default_append

I've also tried adding auvlib/install/share to PATH and running ldconfig, but that doesn't work either.

A bug in sss_meas_data.cpp?

Hi Nils,
In this line:

col = waterfall_width/2 + ind;

I assume if ind==waterfall_width/2-1, it means the furthest point from the origin, and if we are going to fill in the hits_X (with width waterfall_width) for the left side, the corresponding column is 0, right? Not col = waterfall_width/2 + ind = waterfall_width-1 as written in the code.

So maybe it should be changed to:
if (ind == -1) { continue; } else if (!is_left) { col = waterfall_width/2 + ind; } else { col = waterfall_width/2 - 1 - ind; }

Cannot import name 'std_data' from 'auvlib.data_tools'

HI,
I am getting an error while trying to run a sample code.
ImportError: cannot import name 'std_data' from 'auvlib.data_tools' (/home/user126/Projects/auvlib/install/lib/auvlib/data_tools/init.py)

I am running Ubuntu 20.04 and I think I followed the building process correctly.

  1. sudo apt-get install libcereal-dev libglfw3-dev libtinyxml2-dev libboost-all-dev libopencv-dev xorg-dev
  2. git clone https://github.com/nilsbore/auvlib.git
  3. git submodule update --init
  4. mkdir build && cd build
  5. cmake -DCMAKE_INSTALL_PREFIX=../install ..
  6. make -j4 && make install

There are no errors during building apart from tinyxml2 and glfw.

When trying to run the sample code I am first adding path and then executing the sample code.
export PYTHONPATH=$PYTHONPATH:/home/user126/Projects/auvlib/install/lib

Are there any other dependencies needed or did I just missed a step while building?

Thanks!

When parsing .jsf data, there is no slant range could be directly read.

In the jsf Sonar Data Message, there is a Sampling Interval dt could be used to calculate the max slant range. Say the number of samples in jsf_sss_ping.port.pings is n, the sound velocity is v:
max_slant_range = dtnv/2
However, it seems that the valid sound velocity is stored in the jsf_dvl_ping.
TODO: 1. add python interface to parse jsf_dvl_ping 2. add c++ and python interface for the function to match the sound velocity from jsf_dvl_ping to jsf_sss_ping.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.