currently KinematicTrajectoryOptimization only support snopt or ifopt, is it possiable to support gurobi solver ?
when use gurobi solver, it throws a not support generic constraints exception
EXPECT_EQ(trajopt_.prog().linear_constraints().size(), 0);
VectorXd desired = VectorXd::Ones(num_positions_);
auto binding = trajopt_.AddPathVelocityConstraint(desired, desired, 0.5);
std::cout << "path velocity constraint:\t" << binding.to_string() << std::endl;
EXPECT_THAT(binding.to_string(), HasSubstr("path velocity constraint"));
EXPECT_EQ(trajopt_.prog().linear_constraints().size(), 1);
// r(0) = 0, r(1) = 1.
trajopt_.AddPathPositionConstraint(VectorXd::Zero(num_positions_), VectorXd::Zero(num_positions_), 0);
trajopt_.AddPathPositionConstraint(VectorXd::Ones(num_positions_),VectorXd::Ones(num_positions_), 1);
auto lb = VectorXd::Constant(3, -10);
auto ub = VectorXd::Constant(3, 10);
trajopt_.AddAccelerationBounds(lb, ub);
trajopt_.AddDurationConstraint(1, 1);
trajopt_.AddDurationCost(50);
GurobiSolver solver;
solver.Solve(trajopt_.prog());
unknown file: Failure
C++ exception with description "GurobiSolver is unable to solve because a GenericConstraint was declared but is not supported." thrown in the test body.
Gurobi only supports convex optimization problems. The error you're seeing is reporting that the optimization you're generating with KinematicTrajectoryOptimization is not convex. (That's expected).
No, I'm afraid I wouldn't expect you to use Gurobi with KinematicTrajectoryOptimization. GcsTrajectoryOptimization uses a very similar formulation, but goes to length to formulate the problem in a way that's suitable for convex solvers.