diff --git a/CMakeLists.txt b/CMakeLists.txt index 30d8f1e..7ba273d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,11 +4,15 @@ cmake_minimum_required(VERSION 2.8.3) project(inekf) option(USE_CPP11 "Use flag -std=c++11" ON) -option(USE_MUTEX "Use mutex in code" ON) +option(USE_MUTEX "Use mutex in code" OFF) -if (USE_CPP11 EQUAL OFF AND USE_MUTEX EQUAL ON) +message("USE_CPP11: " ${USE_CPP11}) +message("USE_MUTEX: " ${USE_MUTEX}) + +if (USE_MUTEX AND NOT USE_CPP11) +message("test") message(FATAL_ERROR "You cannot have USE_CPP11 = OFF AND USE_MUTEX = ON") -endif (USE_CPP11 EQUAL OFF AND USE_MUTEX EQUAL ON) +endif (USE_MUTEX AND NOT USE_CPP11) # Set compiler flags if (USE_CPP11) @@ -23,6 +27,8 @@ endif(USE_MUTEX) SET(CMAKE_CXX_COMPILER /usr/bin/g++) message("CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS}) +unset(USE_CPP11) +unset(USE_MUTEX) # Set the output folder where your program will be created set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) diff --git a/src/examples/kinematics.cpp b/src/examples/kinematics.cpp index 04a1fc2..c97124f 100644 --- a/src/examples/kinematics.cpp +++ b/src/examples/kinematics.cpp @@ -26,11 +26,11 @@ using namespace std; using namespace inekf; -double stod(const std::string &s) { +double stod98(const std::string &s) { return atof(s.c_str()); } -int stoi(const std::string &s) { +int stoi98(const std::string &s) { return atoi(s.c_str()); } @@ -87,12 +87,12 @@ int main() { assert((measurement.size()-2) == 6); t = atof(measurement[1].c_str()); // Read in IMU data - imu_measurement << stod(measurement[2]), - stod(measurement[3]), - stod(measurement[4]), - stod(measurement[5]), - stod(measurement[6]), - stod(measurement[7]); + imu_measurement << stod98(measurement[2]), + stod98(measurement[3]), + stod98(measurement[4]), + stod98(measurement[5]), + stod98(measurement[6]), + stod98(measurement[7]); // Propagate using IMU data double dt = t - t_prev; @@ -107,11 +107,11 @@ int main() { vector > contacts; int id; bool indicator; - t = stod(measurement[1]); + t = stod98(measurement[1]); // Read in contact data for (int i=2; i (id, indicator)); } // Set filter's contact state @@ -126,18 +126,18 @@ int main() { Eigen::Matrix4d pose = Eigen::Matrix4d::Identity(); Eigen::Matrix covariance; vectorKinematics measured_kinematics; - t = stod(measurement[1]); + t = stod98(measurement[1]); // Read in kinematic data for (int i=2; i (stod(measurement[i+1]),stod(measurement[i+2]),stod(measurement[i+3]),stod(measurement[i+4])); + id = stoi98(measurement[i]); + q = Eigen::Quaternion (stod98(measurement[i+1]),stod98(measurement[i+2]),stod98(measurement[i+3]),stod98(measurement[i+4])); q.normalize(); - p << stod(measurement[i+5]),stod(measurement[i+6]),stod(measurement[i+7]); + p << stod98(measurement[i+5]),stod98(measurement[i+6]),stod98(measurement[i+7]); pose.block<3,3>(0,0) = q.toRotationMatrix(); pose.block<3,1>(0,3) = p; for (int j=0; j<6; ++j) { for (int k=0; k<6; ++k) { - covariance(j,k) = stod(measurement[i+8 + j*6+k]); + covariance(j,k) = stod98(measurement[i+8 + j*6+k]); } } Kinematics frame(id, pose, covariance); diff --git a/src/examples/landmarks.cpp b/src/examples/landmarks.cpp index dfd3a31..9b883d8 100644 --- a/src/examples/landmarks.cpp +++ b/src/examples/landmarks.cpp @@ -22,11 +22,11 @@ #define DT_MIN 1e-6 #define DT_MAX 1 -double stod(const std::string &s) { +double stod98(const std::string &s) { return atof(s.c_str()); } -int stoi(const std::string &s) { +int stoi98(const std::string &s) { return atoi(s.c_str()); } @@ -108,13 +108,13 @@ int main() { if (measurement[0].compare("IMU")==0){ cout << "Received IMU Data, propagating state\n"; assert((measurement.size()-2) == 6); - t = stod(measurement[1]); - imu_measurement << stod(measurement[2]), - stod(measurement[3]), - stod(measurement[4]), - stod(measurement[5]), - stod(measurement[6]), - stod(measurement[7]); + t = stoi98(measurement[1]); + imu_measurement << stoi98(measurement[2]), + stoi98(measurement[3]), + stoi98(measurement[4]), + stoi98(measurement[5]), + stoi98(measurement[6]), + stoi98(measurement[7]); // Propagate using IMU data double dt = t - t_prev; @@ -125,14 +125,14 @@ int main() { else if (measurement[0].compare("LANDMARK")==0){ cout << "Received LANDMARK observation, correcting state\n"; assert((measurement.size()-2)%4 == 0); - t = stod(measurement[1]); + t = stoi98(measurement[1]); vectorLandmarks measured_landmarks; for (int i=2; i > > vectorPairIntVector6d; typedef vector > >::const_iterator vectorPairIntVector6dIterator; -double stod(const std::string &s) { +double stod98(const std::string &s) { return atof(s.c_str()); } -int stoi(const std::string &s) { +int stoi98(const std::string &s) { return atoi(s.c_str()); } @@ -60,24 +60,24 @@ int main() { boost::split(measurement,line,boost::is_any_of(" ")); // Handle measurements if (measurement[0].compare("IMU")==0){ - t = stod(measurement[1]); - m << stod(measurement[2]), - stod(measurement[3]), - stod(measurement[4]), - stod(measurement[5]), - stod(measurement[6]), - stod(measurement[7]); + t = stod98(measurement[1]); + m << stod98(measurement[2]), + stod98(measurement[3]), + stod98(measurement[4]), + stod98(measurement[5]), + stod98(measurement[6]), + stod98(measurement[7]); measurements_vec.push_back(pair > (t, m)); } else if (measurement[0].compare("LANDMARK")==0){ - t = stod(measurement[1]); + t = stod98(measurement[1]); for (int i=2; i > > vectorPairIntVector6d; typedef vector > >::const_iterator vectorPairIntVector6dIterator; -double stod(const std::string &s) { +double stod98(const std::string &s) { return atof(s.c_str()); } -int stoi(const std::string &s) { +int stoi98(const std::string &s) { return atoi(s.c_str()); } @@ -64,13 +64,13 @@ int main() boost::split(measurement,line,boost::is_any_of(" ")); // Handle measurements if (measurement[0].compare("IMU")==0){ - t = stod(measurement[1]); - m << stod(measurement[2]), - stod(measurement[3]), - stod(measurement[4]), - stod(measurement[5]), - stod(measurement[6]), - stod(measurement[7]); + t = stod98(measurement[1]); + m << stod98(measurement[2]), + stod98(measurement[3]), + stod98(measurement[4]), + stod98(measurement[5]), + stod98(measurement[6]), + stod98(measurement[7]); measurements_vec.push_back(pair > (t, m)); } }