diff --git a/README.md b/README.md index 16847501b..7063027ef 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,14 @@ It draws on the planning capabilities of [MoveIt](https://moveit.ros.org/) to so A common interface, based on MoveIt's PlanningScene is used to pass solution hypotheses between stages. The framework enables the hierarchical organization of basic stages using *containers*, allowing for sequential as well as parallel compositions. +## Branches + +This repository provides the following branches: + +- **master**: ROS 1 development +- **ros2**: ROS 2 development, compatible with MoveIt 2 `main` +- **humble**: ROS 2 stable branch for Humble support + ## Videos - Demo video associated with [ICRA 2019 paper](https://pub.uni-bielefeld.de/download/2918864/2933599/paper.pdf) diff --git a/core/src/task.cpp b/core/src/task.cpp index d316fde33..f6c3b864d 100644 --- a/core/src/task.cpp +++ b/core/src/task.cpp @@ -267,7 +267,10 @@ void Task::preempt() { moveit::core::MoveItErrorCode Task::execute(const SolutionBase& s) { actionlib::SimpleActionClient ac("execute_task_solution"); - ac.waitForServer(); + if (!ac.waitForServer(ros::Duration(0.5))) { + ROS_ERROR("Failed to connect to the 'execute_task_solution' action server"); + return moveit::core::MoveItErrorCode::FAILURE; + } moveit_task_constructor_msgs::ExecuteTaskSolutionGoal goal; s.toMsg(goal.solution, pimpl()->introspection_.get()); diff --git a/visualization/motion_planning_tasks/src/task_panel.cpp b/visualization/motion_planning_tasks/src/task_panel.cpp index fccba906e..a4518bc8c 100644 --- a/visualization/motion_planning_tasks/src/task_panel.cpp +++ b/visualization/motion_planning_tasks/src/task_panel.cpp @@ -87,8 +87,13 @@ TaskPanel::TaskPanel(QWidget* parent) : rviz::Panel(parent), d_ptr(new TaskPanel Q_D(TaskPanel); // sync checked tool button with displayed widget +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) + connect(d->tool_buttons_group, &QButtonGroup::idClicked, d->stackedWidget, + [d](int index) { d->stackedWidget->setCurrentIndex(index); }); +#else connect(d->tool_buttons_group, static_cast(&QButtonGroup::buttonClicked), d->stackedWidget, [d](int index) { d->stackedWidget->setCurrentIndex(index); }); +#endif connect(d->stackedWidget, &QStackedWidget::currentChanged, d->tool_buttons_group, [d](int index) { d->tool_buttons_group->button(index)->setChecked(true); }); @@ -529,7 +534,7 @@ void TaskView::onExecCurrentSolution() const { const DisplaySolutionPtr& solution = task->getSolution(current); if (!d_ptr->exec_action_client_.waitForServer(ros::Duration(0.1))) { - ROS_ERROR("Failed to connect to task execution action"); + ROS_ERROR("Failed to connect to the 'execute_task_solution' action server"); return; }