RethinkRobotics-opensource / sns_ik

Saturation in the Null Space (SNS) Inverse Kinematic Library
82 stars 41 forks source link

Fix sns_ik_lib melodic-devel build errors #89

Closed IanTheEngineer closed 5 years ago

IanTheEngineer commented 6 years ago

Melodic CI job is currently failing with a few hundred lines of errors on unmodified kinetic-devel code:

In file included from /root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/fsns_velocity_ik.hpp:28:0,
                 from /root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:23:
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:57:80: error: ‘vector’ in namespace ‘std’ does not name a template type
     virtual double getJointVelocity(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot,
                                                                                ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:57:86: error: expected ‘,’ or ‘...’ before ‘<’ token
     virtual double getJointVelocity(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot,
                                                                                      ^
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:61:76: error: ‘vector’ in namespace ‘std’ does not name a template type
     double getJointVelocity_STD(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot);
                                                                            ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:61:82: error: expected ‘,’ or ‘...’ before ‘<’ token
     double getJointVelocity_STD(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot);
                                                                                  ^
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:64:76: error: ‘vector’ in namespace ‘std’ does not name a template type
     double getJointVelocity_STD(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot,
                                                                            ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:64:82: error: expected ‘,’ or ‘...’ before ‘<’ token
     double getJointVelocity_STD(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot,
                                                                                  ^
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:64:12: error: ‘double sns_ik::SNSVelocityIK::getJointVelocity_STD(Eigen::VectorXd*, int)’ cannot be overloaded
     double getJointVelocity_STD(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot,
            ^~~~~~~~~~~~~~~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:61:12: error: with ‘double sns_ik::SNSVelocityIK::getJointVelocity_STD(Eigen::VectorXd*, int)’
     double getJointVelocity_STD(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot);
            ^~~~~~~~~~~~~~~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:68:10: error: ‘vector’ in namespace ‘std’ does not name a template type
     std::vector<double> getTasksScaleFactor()
          ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:107:10: error: ‘vector’ in namespace ‘std’ does not name a template type
     std::vector<Eigen::MatrixXd> W;  //selection matrices  [here to permit a warm start]
          ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:108:10: error: ‘vector’ in namespace ‘std’ does not name a template type
     std::vector<Eigen::VectorXd> dotQopt;  // next solution (bar{\dotqv} in the paper)
          ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:110:10: error: ‘vector’ in namespace ‘std’ does not name a template type
     std::vector<double> scaleFactors;
          ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:112:10: error: ‘vector’ in namespace ‘std’ does not name a template type
     std::vector<int> nSat;  //number of saturated joint
          ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp: In member function ‘double sns_ik::SNSVelocityIK::getJointVelocity_STD(Eigen::VectorXd*, int)’:
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:66:54: error: ‘sot’ was not declared in this scope
         { return getJointVelocity_STD(jointVelocity, sot); }
                                                      ^~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/sns_velocity_ik.hpp:66:54: note: suggested alternative: ‘dotQ’
         { return getJointVelocity_STD(jointVelocity, sot); }
                                                      ^~~
                                                      dotQ
In file included from /root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:23:0:
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/fsns_velocity_ik.hpp: At global scope:
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/fsns_velocity_ik.hpp:38:80: error: ‘vector’ in namespace ‘std’ does not name a template type
     virtual double getJointVelocity(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot,
                                                                                ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/fsns_velocity_ik.hpp:38:86: error: expected ‘,’ or ‘...’ before ‘<’ token
     virtual double getJointVelocity(Eigen::VectorXd *jointVelocity, const std::vector<Task> &sot,
                                                                                      ^
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/include/sns_ik/fsns_velocity_ik.hpp:53:10: error: ‘vector’ in namespace ‘std’ does not name a template type
     std::vector<Eigen::VectorXi> S;  //the i-th element is zero if the i-th joint is not saturate, otherwise contains the position in B
          ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:36:16: error: ‘vector’ in namespace ‘std’ does not name a template type
     const std::vector<Task> &sot,
                ^~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:36:22: error: expected ‘,’ or ‘...’ before ‘<’ token
     const std::vector<Task> &sot,
                      ^
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp: In member function ‘virtual double sns_ik::FSNSVelocityIK::getJointVelocity(Eigen::VectorXd*, int)’:
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:40:20: error: ‘sot’ was not declared in this scope
   setNumberOfTasks(sot.size(), sot[0].jacobian.cols());
                    ^~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:40:20: note: suggested alternative: ‘dotQ’
   setNumberOfTasks(sot.size(), sot[0].jacobian.cols());
                    ^~~
                    dotQ
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:41:3: error: ‘S’ was not declared in this scope
   S.resize(n_tasks, Eigen::VectorXi::Zero(n_dof));
   ^
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:52:27: error: ‘jointConfiguration’ was not declared in this scope
   shapeJointVelocityBound(jointConfiguration);
                           ^~~~~~~~~~~~~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:57:5: error: ‘scaleFactors’ was not declared in this scope
     scaleFactors[i_task] = SNSsingle(i_task, higherPriorityJointVelocity, higherPriorityNull,
     ^~~~~~~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp: In member function ‘virtual double sns_ik::FSNSVelocityIK::SNSsingle(int, const VectorXd&, const MatrixXd&, const MatrixXd&, const VectorXd&, Eigen::VectorXd*, Eigen::MatrixXd*)’:
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:100:3: error: ‘nSat’ was not declared in this scope
   nSat[priority] = 0;
   ^~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:100:3: note: suggested alternative: ���nan’
   nSat[priority] = 0;
   ^~~~
   nan
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:101:3: error: ‘S’ was not declared in this scope
   S[priority] = Eigen::VectorXi::Zero(n_dof);
   ^
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:120:5: error: ‘dotQopt’ was not declared in this scope
     dotQopt[priority] = dotQ;
     ^~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:120:5: note: suggested alternative: ‘dotQmin’
     dotQopt[priority] = dotQ;
     ^~~~~~~
     dotQmin
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:129:7: error: ‘dotQopt’ was not declared in this scope
       dotQopt[priority] = (*jointVelocity);
       ^~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:129:7: note: suggested alternative: ‘dotQmin’
       dotQopt[priority] = (*jointVelocity);
       ^~~~~~~
       dotQmin
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:134:7: error: ‘dotQopt’ was not declared in this scope
       dotQopt[priority] = (*jointVelocity);
       ^~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:134:7: note: suggested alternative: ‘dotQmin’
       dotQopt[priority] = (*jointVelocity);
       ^~~~~~~
       dotQmin
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:161:7: error: ‘dotQopt’ was not declared in this scope
       dotQopt[priority] = *jointVelocity;
       ^~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:161:7: note: suggested alternative: ‘dotQmin’
       dotQopt[priority] = *jointVelocity;
       ^~~~~~~
       dotQmin
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:176:9: error: ‘dotQopt’ was not declared in this scope
         dotQopt[priority] = (*jointVelocity);
         ^~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:176:9: note: suggested alternative: ‘dotQmin’
         dotQopt[priority] = (*jointVelocity);
         ^~~~~~~
         dotQmin
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:184:9: error: ‘dotQopt’ was not declared in this scope
         dotQopt[priority] = (*jointVelocity);
         ^~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:184:9: note: suggested alternative: ‘dotQmin’
         dotQopt[priority] = (*jointVelocity);
         ^~~~~~~
         dotQmin
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:217:7: error: ‘dotQopt’ was not declared in this scope
       dotQopt[priority] = (*jointVelocity);
       ^~~~~~~
/root/ws_sns_ik/src/sns_ik/sns_ik_lib/src/fsns_velocity_ik.cpp:217:7: note: suggested alternative: ‘dotQmin’
       dotQopt[priority] = (*jointVelocity);
       ^~~~~~~
       dotQmin
IanTheEngineer commented 6 years ago

Full details here https://travis-ci.org/RethinkRobotics-opensource/sns_ik/jobs/394192236#L1486

IanTheEngineer commented 6 years ago

it seems there are two underlying issues: 1) we don't properly declare #include <vector> everywhere that we should. Straightforward. 2) the robot_model.getJoint() function changes from returning a boost::shared_ptr<const urdf::Joint> to a std::shared_ptr<const urdf::Joint> in ROS Melodic. I could either create my own conditional Ptr define here, or simply use auto to have the compiler auto-detect its type

chris-smith commented 5 years ago

Between #90 and #105, I'm assuming this is completed.