@@ -47,6 +47,9 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP
4747
4848#include < tesseract_motion_planners/trajopt/profile/trajopt_default_composite_profile.h>
4949#include < tesseract_motion_planners/trajopt/profile/trajopt_default_solver_profile.h>
50+ #include < tesseract_motion_planners/trajopt_ifopt/profile/trajopt_ifopt_default_composite_profile.h>
51+ #include < tesseract_motion_planners/trajopt_ifopt/profile/trajopt_ifopt_default_plan_profile.h>
52+ #include < tesseract_motion_planners/trajopt_ifopt/profile/trajopt_ifopt_default_solver_profile.h>
5053#include < tesseract_motion_planners/core/utils.h>
5154#include < tesseract_visualization/markers/toolpath_marker.h>
5255
@@ -58,6 +61,7 @@ using namespace tesseract_visualization;
5861using namespace tesseract_planning ;
5962using tesseract_common::ManipulatorInfo;
6063
64+ static const std::string TRAJOPT_IFOPT_DEFAULT_NAMESPACE = " TrajOptIfoptMotionPlannerTask" ;
6165static const std::string TRAJOPT_DEFAULT_NAMESPACE = " TrajOptMotionPlannerTask" ;
6266namespace tesseract_examples
6367{
@@ -112,8 +116,10 @@ Commands addSeats(const tesseract_common::ResourceLocator::ConstPtr& locator)
112116}
113117
114118CarSeatExample::CarSeatExample (tesseract_environment::Environment::Ptr env,
115- tesseract_visualization::Visualization::Ptr plotter)
116- : Example(std::move(env), std::move(plotter))
119+ tesseract_visualization::Visualization::Ptr plotter,
120+ bool ifopt,
121+ bool debug)
122+ : Example(std::move(env), std::move(plotter)), ifopt_(ifopt), debug_(debug)
117123{
118124}
119125
@@ -215,7 +221,10 @@ Eigen::VectorXd CarSeatExample::getPositionVectorXd(const JointGroup& joint_grou
215221
216222bool CarSeatExample::run ()
217223{
218- console_bridge::setLogLevel (console_bridge::LogLevel::CONSOLE_BRIDGE_LOG_DEBUG);
224+ if (debug_)
225+ console_bridge::setLogLevel (console_bridge::LogLevel::CONSOLE_BRIDGE_LOG_DEBUG);
226+ else
227+ console_bridge::setLogLevel (console_bridge::LogLevel::CONSOLE_BRIDGE_LOG_INFO);
219228
220229 // Create Task Composer Plugin Factory
221230 const std::string share_dir (TESSERACT_TASK_COMPOSER_DIR);
@@ -245,25 +254,70 @@ bool CarSeatExample::run()
245254 // Create Executor
246255 auto executor = factory.createTaskComposerExecutor (" TaskflowExecutor" );
247256
248- // Create TrajOpt Profile
249- auto trajopt_composite_profile = std::make_shared<TrajOptDefaultCompositeProfile>();
250- trajopt_composite_profile->collision_constraint_config .enabled = true ;
251- trajopt_composite_profile->collision_constraint_config .safety_margin = 0.00 ;
252- trajopt_composite_profile->collision_constraint_config .safety_margin_buffer = 0.005 ;
253- trajopt_composite_profile->collision_constraint_config .coeff = 10 ;
254- trajopt_composite_profile->collision_cost_config .safety_margin = 0.005 ;
255- trajopt_composite_profile->collision_cost_config .safety_margin_buffer = 0.01 ;
256- trajopt_composite_profile->collision_cost_config .coeff = 50 ;
257-
258- auto trajopt_solver_profile = std::make_shared<TrajOptDefaultSolverProfile>();
259- trajopt_solver_profile->opt_info .max_iter = 200 ;
260- trajopt_solver_profile->opt_info .min_approx_improve = 1e-3 ;
261- trajopt_solver_profile->opt_info .min_trust_box_size = 1e-3 ;
262-
263257 // Create profile dictionary
264258 auto profiles = std::make_shared<ProfileDictionary>();
265- profiles->addProfile <TrajOptCompositeProfile>(TRAJOPT_DEFAULT_NAMESPACE, " FREESPACE" , trajopt_composite_profile);
266- profiles->addProfile <TrajOptSolverProfile>(TRAJOPT_DEFAULT_NAMESPACE, " FREESPACE" , trajopt_solver_profile);
259+ if (ifopt_)
260+ {
261+ // Create TrajOpt_Ifopt Profile
262+ auto trajopt_ifopt_composite_profile = std::make_shared<TrajOptIfoptDefaultCompositeProfile>();
263+ trajopt_ifopt_composite_profile->collision_constraint_config ->type =
264+ tesseract_collision::CollisionEvaluatorType::LVS_CONTINUOUS;
265+ trajopt_ifopt_composite_profile->collision_constraint_config ->contact_manager_config =
266+ tesseract_collision::ContactManagerConfig (0.00 );
267+ trajopt_ifopt_composite_profile->collision_constraint_config ->collision_margin_buffer = 0.005 ;
268+ trajopt_ifopt_composite_profile->collision_constraint_config ->collision_coeff_data =
269+ trajopt_common::CollisionCoeffData (1 );
270+ trajopt_ifopt_composite_profile->collision_cost_config ->type =
271+ tesseract_collision::CollisionEvaluatorType::LVS_CONTINUOUS;
272+ trajopt_ifopt_composite_profile->collision_cost_config ->contact_manager_config =
273+ tesseract_collision::ContactManagerConfig (0.005 );
274+ trajopt_ifopt_composite_profile->collision_cost_config ->collision_margin_buffer = 0.01 ;
275+ trajopt_ifopt_composite_profile->collision_cost_config ->collision_coeff_data =
276+ trajopt_common::CollisionCoeffData (50 );
277+ trajopt_ifopt_composite_profile->smooth_velocities = false ;
278+ trajopt_ifopt_composite_profile->velocity_coeff = Eigen::VectorXd::Ones (1 );
279+ trajopt_ifopt_composite_profile->smooth_accelerations = true ;
280+ trajopt_ifopt_composite_profile->acceleration_coeff = Eigen::VectorXd::Ones (1 );
281+ trajopt_ifopt_composite_profile->smooth_jerks = true ;
282+ trajopt_ifopt_composite_profile->jerk_coeff = Eigen::VectorXd::Ones (1 );
283+ trajopt_ifopt_composite_profile->longest_valid_segment_length = 0.1 ;
284+
285+ auto trajopt_ifopt_plan_profile = std::make_shared<TrajOptIfoptDefaultPlanProfile>();
286+ trajopt_ifopt_plan_profile->cartesian_coeff = Eigen::VectorXd::Ones (6 );
287+ trajopt_ifopt_plan_profile->joint_coeff = Eigen::VectorXd::Ones (8 );
288+
289+ auto trajopt_ifopt_solver_profile = std::make_shared<TrajOptIfoptDefaultSolverProfile>();
290+ trajopt_ifopt_solver_profile->opt_info .max_iterations = 200 ;
291+ trajopt_ifopt_solver_profile->opt_info .min_approx_improve = 1e-3 ;
292+ trajopt_ifopt_solver_profile->opt_info .min_trust_box_size = 1e-3 ;
293+
294+ profiles->addProfile <TrajOptIfoptCompositeProfile>(
295+ TRAJOPT_IFOPT_DEFAULT_NAMESPACE, " FREESPACE" , trajopt_ifopt_composite_profile);
296+ profiles->addProfile <TrajOptIfoptPlanProfile>(
297+ TRAJOPT_IFOPT_DEFAULT_NAMESPACE, " FREESPACE" , trajopt_ifopt_plan_profile);
298+ profiles->addProfile <TrajOptIfoptSolverProfile>(
299+ TRAJOPT_IFOPT_DEFAULT_NAMESPACE, " FREESPACE" , trajopt_ifopt_solver_profile);
300+ }
301+ else
302+ {
303+ // Create TrajOpt Profile
304+ auto trajopt_composite_profile = std::make_shared<TrajOptDefaultCompositeProfile>();
305+ trajopt_composite_profile->collision_constraint_config .enabled = true ;
306+ trajopt_composite_profile->collision_constraint_config .safety_margin = 0.00 ;
307+ trajopt_composite_profile->collision_constraint_config .safety_margin_buffer = 0.005 ;
308+ trajopt_composite_profile->collision_constraint_config .coeff = 10 ;
309+ trajopt_composite_profile->collision_cost_config .safety_margin = 0.005 ;
310+ trajopt_composite_profile->collision_cost_config .safety_margin_buffer = 0.01 ;
311+ trajopt_composite_profile->collision_cost_config .coeff = 50 ;
312+
313+ auto trajopt_solver_profile = std::make_shared<TrajOptDefaultSolverProfile>();
314+ trajopt_solver_profile->opt_info .max_iter = 200 ;
315+ trajopt_solver_profile->opt_info .min_approx_improve = 1e-3 ;
316+ trajopt_solver_profile->opt_info .min_trust_box_size = 1e-3 ;
317+
318+ profiles->addProfile <TrajOptCompositeProfile>(TRAJOPT_DEFAULT_NAMESPACE, " FREESPACE" , trajopt_composite_profile);
319+ profiles->addProfile <TrajOptSolverProfile>(TRAJOPT_DEFAULT_NAMESPACE, " FREESPACE" , trajopt_solver_profile);
320+ }
267321
268322 // Solve Trajectory
269323 CONSOLE_BRIDGE_logInform (" Car Seat Demo Started" );
@@ -297,7 +351,8 @@ bool CarSeatExample::run()
297351 CONSOLE_BRIDGE_logInform (" Freespace plan to pick seat 1 example" );
298352
299353 // Create task
300- TaskComposerNode::UPtr task = factory.createTaskComposerNode (" TrajOptPipeline" );
354+ const std::string task_name = (ifopt_) ? " TrajOptIfoptPipeline" : " TrajOptPipeline" ;
355+ TaskComposerNode::UPtr task = factory.createTaskComposerNode (task_name);
301356 const std::string output_key = task->getOutputKeys ().front ();
302357
303358 // Create Task Composer Problem
@@ -381,7 +436,8 @@ bool CarSeatExample::run()
381436 CONSOLE_BRIDGE_logInform (" Freespace plan to pick seat 1 example" );
382437
383438 // Create task
384- TaskComposerNode::UPtr task = factory.createTaskComposerNode (" TrajOptPipeline" );
439+ const std::string task_name = (ifopt_) ? " TrajOptIfoptPipeline" : " TrajOptPipeline" ;
440+ TaskComposerNode::UPtr task = factory.createTaskComposerNode (task_name);
385441 const std::string output_key = task->getOutputKeys ().front ();
386442
387443 // Create Task Composer Problem
0 commit comments