安装
参考:
1:qp solver
2:
一次成功流水账-qpOASES安装和使用
ROS项目中使用qpOASES
ros功能包创建,略。
创建qptest.cpp
#include "ros/ros.h"
#include "std_msgs/String.h" //普通文本类型的消息
#include <sstream>
#include <qpOASES.hpp>
using namespace qpOASES;
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
ros::init(argc,argv,"talker");
ros::NodeHandle nh;
ROS_INFO("qptest");
/* Setup data of first QP. */
real_t H[2 * 2] = { 1.0, 0.0, 0.0, 0.5 };
real_t A[1 * 2] = { 1.0, 1.0 };
real_t g[2] = { 1.5, 1.0 };
real_t lb[2] = { 0.5, -2.0 };
real_t ub[2] = { 5.0, 2.0 };
real_t lbA[1] = { -1.0 };
real_t ubA[1] = { 2.0 };
QProblem example(2, 1);
int_t nWSR = 10;
example.init(H, g, A, lb, ub, lbA, ubA, nWSR);
real_t xOpt[2];
example.getPrimalSolution(xOpt);
printf("\n xOpt = [ %e, %e ]; objVal = %e\n\n", xOpt[0], xOpt[1], example.getObjVal());
return 0;
}
CMakeLists.txt :
这部分可以参考:
一次成功流水账-qpOASES安装和使用
set(CMAKE_CXX_FLAGS "-std=c++11")
link_directories("/usr/local/lib")
include_directories(
# include
${catkin_INCLUDE_DIRS}
"/usr/local/include"
)
add_executable(qptest src/qptest)
add_dependencies(qptest ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(qptest
${catkin_LIBRARIES} libqpOASES.a
)
catkin_make编译后运行:
xia@ubuntu:~/mydemo01_ws$ rosrun plumbing_sub_pub qptest
[ INFO] [1657179870.124685115]: qptest
#################### qpOASES -- QP NO. 1 #####################
Iter | StepLength | Info | nFX | nAC
----------+------------------+------------------+---------+---------
0 | 5.833333e-01 | ADD CON 0 | 1 | 1
1 | 1.000000e+00 | QP SOLVED | 1 | 1
xOpt = [ 5.000000e-01, -1.500000e+00 ]; objVal = -6.250000e-02