qpOASES安装使用

安装

参考:
1:qp solver
2
一次成功流水账-qpOASES安装和使用

ROS项目中使用qpOASES

ros功能包创建,略。
创建qptest.cpp

#include "ros/ros.h"
#include "std_msgs/String.h" //普通文本类型的消息
#include 
#include 

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

你可能感兴趣的:(控制,ROS,c++)