From 4c114a98726c3699f0733259d155ef1abdab7be4 Mon Sep 17 00:00:00 2001 From: mosFet Date: Mon, 23 Jun 2025 17:57:16 +0100 Subject: [PATCH] qt6 Fix compile with qt6 fix trailing whitespace fix trailing whitespace fix trailing whitespace fix trailing whitespace fix cast deprecation qt6 Fix compile with qt6 fix trailing whitespace fix trailing whitespace --- .github/workflows/format.yaml | 4 +- .github/workflows/prerelease.yaml | 2 +- .pre-commit-config.yaml | 4 +- core/include/moveit/task_constructor/stage.h | 1 + core/src/cost_terms.cpp | 10 ++-- core/src/stage.cpp | 33 +++++----- core/test/test_move_relative.cpp | 8 +-- rviz_marker_tools/CMakeLists.txt | 23 +++---- visualization/CMakeLists.txt | 29 +++++---- .../properties/CMakeLists.txt | 15 ++--- .../src/remote_task_model.cpp | 2 +- .../src/task_list_model.cpp | 4 +- .../utils/CMakeLists.txt | 7 ++- .../visualization_tools/CMakeLists.txt | 60 ++++++++++++++----- 14 files changed, 117 insertions(+), 85 deletions(-) diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml index 15cca2942..28860cba6 100644 --- a/.github/workflows/format.yaml +++ b/.github/workflows/format.yaml @@ -16,8 +16,8 @@ jobs: - uses: actions/checkout@v6 with: submodules: recursive - - name: Install clang-format-14 - run: sudo apt-get install clang-format-14 + - name: Install clang-format-18 + run: sudo apt-get install clang-format-18 - uses: pre-commit/action@v3.0.1 id: precommit - name: Upload pre-commit changes diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index 900db7253..e2723049b 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -10,7 +10,7 @@ on: type: string required: true description: 'ROS distribution codename:' - default: noetic + default: humble permissions: contents: read # to fetch code (actions/checkout) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cde915455..c25f96ab2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,7 +29,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 26.3.1 + rev: 26.5.1 hooks: - id: black args: ["--line-length", "100"] @@ -39,7 +39,7 @@ repos: - id: clang-format name: clang-format description: Format files with ClangFormat. - entry: clang-format-14 + entry: clang-format-18 language: system files: \.(c|cc|cxx|cpp|frag|glsl|h|hpp|hxx|ih|ispc|ipp|java|js|m|proto|vert)$ args: ["-fallback-style=none", "-i"] diff --git a/core/include/moveit/task_constructor/stage.h b/core/include/moveit/task_constructor/stage.h index a34704ae3..79e00da78 100644 --- a/core/include/moveit/task_constructor/stage.h +++ b/core/include/moveit/task_constructor/stage.h @@ -43,6 +43,7 @@ #include "utils.h" #include #include +#include #include #include diff --git a/core/src/cost_terms.cpp b/core/src/cost_terms.cpp index 9ddb94ff2..5401465f0 100644 --- a/core/src/cost_terms.cpp +++ b/core/src/cost_terms.cpp @@ -253,8 +253,6 @@ Clearance::Clearance(bool with_world, bool cumulative, std::string group_propert , distance_to_cost{ [](double d) { return 1.0 / (d + 1e-5); } } {} double Clearance::operator()(const SubTrajectory& s, std::string& comment) const { - static const std::string PREFIX{ "Clearance: " }; - collision_detection::DistanceRequest request; request.type = cumulative ? collision_detection::DistanceRequestType::SINGLE : collision_detection::DistanceRequestType::GLOBAL; @@ -298,7 +296,7 @@ double Clearance::operator()(const SubTrajectory& s, std::string& comment) const } }; auto collision_comment = [=](const auto& distance) { - return fmt::format(PREFIX + "allegedly valid solution collides between '{}' and '{}'", distance.link_names[0], + return fmt::format("Clearance: allegedly valid solution collides between '{}' and '{}'", distance.link_names[0], distance.link_names[1]); }; @@ -313,10 +311,10 @@ double Clearance::operator()(const SubTrajectory& s, std::string& comment) const } distance = distance_data.distance; if (!cumulative) - comment = fmt::format(PREFIX + "distance {} between '{}' and '{}'", distance, distance_data.link_names[0], + comment = fmt::format("Clearance: distance {} between '{}' and '{}'", distance, distance_data.link_names[0], distance_data.link_names[1]); else - comment = fmt::format(PREFIX + "cumulative distance {}", distance); + comment = fmt::format("Clearance: cumulative distance {}", distance); } else { // check trajectory for (size_t i = 0; i < s.trajectory()->getWayPointCount(); ++i) { auto distance_data = check_distance(state, s.trajectory()->getWayPoint(i)); @@ -327,7 +325,7 @@ double Clearance::operator()(const SubTrajectory& s, std::string& comment) const distance += distance_data.distance; } distance /= s.trajectory()->getWayPointCount(); - comment = fmt::format(PREFIX + "average{} distance: {}", (cumulative ? " cumulative" : ""), distance); + comment = fmt::format("Clearance: average{} distance: {}", (cumulative ? " cumulative" : ""), distance); } return distance_to_cost(distance); diff --git a/core/src/stage.cpp b/core/src/stage.cpp index b64ce0ab3..0344d32d7 100644 --- a/core/src/stage.cpp +++ b/core/src/stage.cpp @@ -311,7 +311,7 @@ Stage::Stage(StagePrivate* impl) : pimpl_(impl) { assert(impl); auto& p = properties(); p.declare("timeout", "timeout per run (s)"); - p.declare("marker_ns", name(), "marker namespace"); + p.declare("marker_ns", name(), "marker namespace"); p.declare("trajectory_execution_info", TrajectoryExecutionInfo(), "settings used when executing the trajectory"); @@ -909,13 +909,14 @@ bool Connecting::compatible(const InterfaceState& from_state, const InterfaceSta const planning_scene::PlanningSceneConstPtr& from = from_state.scene(); const planning_scene::PlanningSceneConstPtr& to = to_state.scene(); - auto false_with_debug = [](auto... args) { - RCLCPP_DEBUG_STREAM(rclcpp::get_logger("Connecting"), fmt::format(args...)); + auto false_with_debug = [](auto args...) { + RCLCPP_DEBUG_STREAM(rclcpp::get_logger("Connecting"), args); return false; }; - if (from->getWorld()->size() != to->getWorld()->size()) - return false_with_debug("{}: different number of collision objects", name()); + if (from->getWorld()->size() != to->getWorld()->size()) { + return false_with_debug("{}: different number of collision objects", name().c_str()); + } // both scenes should have the same set of collision objects, at the same location for (const auto& from_object_pair : *from->getWorld()) { @@ -923,19 +924,19 @@ bool Connecting::compatible(const InterfaceState& from_state, const InterfaceSta const collision_detection::World::ObjectPtr& from_object = from_object_pair.second; const collision_detection::World::ObjectConstPtr& to_object = to->getWorld()->getObject(from_object_name); if (!to_object) - return false_with_debug("{}: object missing: {}", name(), from_object_name); + return false_with_debug("{}: object missing: {}", name().c_str(), from_object_name.c_str()); if (!(from_object->pose_.matrix() - to_object->pose_.matrix()).isZero(1e-4)) - return false_with_debug("{}: different object pose: {}", name(), from_object_name); + return false_with_debug("{}: different object pose: {}", name().c_str(), from_object_name.c_str()); if (from_object->shape_poses_.size() != to_object->shape_poses_.size()) - return false_with_debug("{}: different object shapes: {}", name(), from_object_name); + return false_with_debug("{}: different object shapes: {}", name().c_str(), from_object_name.c_str()); for (auto from_it = from_object->shape_poses_.cbegin(), from_end = from_object->shape_poses_.cend(), to_it = to_object->shape_poses_.cbegin(); from_it != from_end; ++from_it, ++to_it) if (!(from_it->matrix() - to_it->matrix()).isZero(1e-4)) - return false_with_debug("{}: different shape pose: {}", name(), from_object_name); + return false_with_debug("{}: different shape pose: {}", name().c_str(), from_object_name.c_str()); } // Also test for attached objects which have a different storage @@ -944,7 +945,7 @@ bool Connecting::compatible(const InterfaceState& from_state, const InterfaceSta from->getCurrentState().getAttachedBodies(from_attached); to->getCurrentState().getAttachedBodies(to_attached); if (from_attached.size() != to_attached.size()) - return false_with_debug("{}: different number of objects", name()); + return false_with_debug("{}: different number of objects", name().c_str()); for (const moveit::core::AttachedBody* from_object : from_attached) { auto it = std::find_if(to_attached.cbegin(), to_attached.cend(), @@ -952,23 +953,25 @@ bool Connecting::compatible(const InterfaceState& from_state, const InterfaceSta return object->getName() == from_object->getName(); }); if (it == to_attached.cend()) - return false_with_debug("{}: object missing: {}", name(), from_object->getName()); + return false_with_debug("{}: object missing: {}", name().c_str(), from_object->getName().c_str()); const moveit::core::AttachedBody* to_object = *it; if (from_object->getAttachedLink() != to_object->getAttachedLink()) return false_with_debug("{}: different attach links: {} attached to {} vs. {}", // - name(), from_object->getName(), // - from_object->getAttachedLink()->getName(), to_object->getAttachedLink()->getName()); + name().c_str(), from_object->getName().c_str(), // + from_object->getAttachedLink()->getName().c_str(), + to_object->getAttachedLink()->getName().c_str()); if (from_object->getShapes().size() != to_object->getShapes().size()) - return false_with_debug("{}: different object shapes: {}", name(), from_object->getName()); + return false_with_debug("{}: different object shapes: {}", name().c_str(), from_object->getName().c_str()); auto from_it = from_object->getShapePosesInLinkFrame().cbegin(); auto from_end = from_object->getShapePosesInLinkFrame().cend(); auto to_it = to_object->getShapePosesInLinkFrame().cbegin(); for (; from_it != from_end; ++from_it, ++to_it) if (!(from_it->matrix() - to_it->matrix()).isZero(1e-4)) - return false_with_debug("{}: different pose of attached object shape: {}", name(), from_object->getName()); + return false_with_debug("{}: different pose of attached object shape: {}", name().c_str(), + from_object->getName().c_str()); } return true; } diff --git a/core/test/test_move_relative.cpp b/core/test/test_move_relative.cpp index f34abc80f..d21cba7f5 100644 --- a/core/test/test_move_relative.cpp +++ b/core/test/test_move_relative.cpp @@ -173,16 +173,16 @@ TEST_F(PandaMoveRelativeCartesian, cartesianRotateAttachedIKFrame) { TEST_F(PandaMoveRelativeJoint, jointOutsideBound) { // move joint inside limit auto initial_jpos = scene->getCurrentState().getJointPositions("panda_joint7"); - move->setDirection([initial_jpos] { - return std::map{ { "panda_joint7", 2.0 - *initial_jpos } }; + move->setDirection( + [initial_jpos] { return std::map{ { "panda_joint7", 2.0 - *initial_jpos } }; }()); EXPECT_TRUE(this->t.plan()) << "Plan should succeed, joint inside limit"; this->t.reset(); // move joint outside limit: 2.8973 - move->setDirection([initial_jpos] { - return std::map{ { "panda_joint7", 3.0 - *initial_jpos } }; + move->setDirection( + [initial_jpos] { return std::map{ { "panda_joint7", 3.0 - *initial_jpos } }; }()); EXPECT_FALSE(this->t.plan()) << "Plan should fail, joint outside limit"; diff --git a/rviz_marker_tools/CMakeLists.txt b/rviz_marker_tools/CMakeLists.txt index ded545498..c514788cf 100644 --- a/rviz_marker_tools/CMakeLists.txt +++ b/rviz_marker_tools/CMakeLists.txt @@ -5,14 +5,11 @@ find_package(ament_cmake REQUIRED) find_package(moveit_common REQUIRED) moveit_package() -set(THIS_PACKAGE_INCLUDE_DEPENDS - rclcpp - tf2_eigen - urdfdom_headers - geometry_msgs - std_msgs - visualization_msgs -) +find_package(urdfdom_headers REQUIRED) +find_package(Eigen3 REQUIRED) +find_package(tf2_eigen REQUIRED) +find_package(tf2_geometry_msgs REQUIRED) +find_package(visualization_msgs REQUIRED) foreach(dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) find_package(${dependency} REQUIRED) @@ -26,14 +23,8 @@ add_library(${PROJECT_NAME} SHARED src/marker_creation.cpp ) -target_link_libraries(${PROJECT_NAME} PUBLIC - rclcpp::rclcpp - ${tf2_eigen_TARGETS} - ${urdfdom_headers_TARGETS} - ${geometry_msgs_TARGETS} - ${std_msgs_TARGETS} - ${visualization_msgs_TARGETS} -) +target_link_libraries(${PROJECT_NAME} + Eigen3::Eigen tf2_eigen::tf2_eigen tf2_geometry_msgs::tf2_geometry_msgs urdfdom_headers::urdfdom_headers ${visualization_msgs_TARGETS}) target_include_directories(${PROJECT_NAME} PUBLIC $ diff --git a/visualization/CMakeLists.txt b/visualization/CMakeLists.txt index a220b3a62..b4b0a44d9 100644 --- a/visualization/CMakeLists.txt +++ b/visualization/CMakeLists.txt @@ -1,5 +1,8 @@ cmake_minimum_required(VERSION 3.16) project(moveit_task_constructor_visualization) +# Qt Stuff +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) find_package(ament_cmake REQUIRED) find_package(fmt REQUIRED) @@ -18,12 +21,13 @@ find_package(rviz_ogre_vendor REQUIRED) # definition needed for boost/math/constants/constants.hpp included by Ogre to compile add_definitions(-DBOOST_MATH_DISABLE_FLOAT128) -# Qt Stuff -find_package(Qt5 REQUIRED COMPONENTS Core Widgets) -set(QT_LIBRARIES Qt5::Widgets) -macro(qt_wrap_ui) - qt5_wrap_ui(${ARGN}) -endmacro() + + + function(qt_wrap_cpp out) + qt_wrap_cpp(_sources ${ARGN}) + set("${out}" ${_sources} PARENT_SCOPE) + endfunction() + set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) @@ -41,12 +45,13 @@ install(DIRECTORY icons DESTINATION share) pluginlib_export_plugin_description_file(rviz_common motion_planning_tasks_rviz_plugin_description.xml) ament_export_include_directories(include) -ament_export_libraries(motion_planning_tasks_utils - motion_planning_tasks_properties - motion_planning_tasks_rviz_plugin - moveit_task_visualization_tools -) -ament_export_dependencies(ament_cmake) + + + + + +ament_export_dependencies(Core5Compat) +#ament_export_dependencies(ament_cmake) ament_export_dependencies(Boost) ament_export_dependencies(moveit_core) ament_export_dependencies(moveit_ros_visualization) diff --git a/visualization/motion_planning_tasks/properties/CMakeLists.txt b/visualization/motion_planning_tasks/properties/CMakeLists.txt index 8296b9eab..0d545b81d 100644 --- a/visualization/motion_planning_tasks/properties/CMakeLists.txt +++ b/visualization/motion_planning_tasks/properties/CMakeLists.txt @@ -10,17 +10,18 @@ find_package(yaml REQUIRED) add_library(${MOVEIT_LIB_NAME} SHARED ${SOURCES}) -target_link_libraries(${MOVEIT_LIB_NAME} - ${QT_LIBRARIES} yaml -) + target_link_libraries(motion_planning_tasks_properties PUBLIC + moveit_task_constructor_core::moveit_task_constructor_core + moveit_task_constructor_core::moveit_task_constructor_core_stage_plugins + moveit_task_constructor_core::moveit_task_constructor_core_stages + rviz_common::rviz_common + ) + target_include_directories(${MOVEIT_LIB_NAME} PUBLIC $ PRIVATE ${YAML_INCLUDE_DIRS} ) -target_link_libraries(${MOVEIT_LIB_NAME} - ${moveit_task_constructor_core_TARGETS} - ${rviz_common_TARGETS} -) + install(TARGETS ${MOVEIT_LIB_NAME} EXPORT export_${MOVEIT_LIB_NAME} diff --git a/visualization/motion_planning_tasks/src/remote_task_model.cpp b/visualization/motion_planning_tasks/src/remote_task_model.cpp index d28cfd60e..8926cba98 100644 --- a/visualization/motion_planning_tasks/src/remote_task_model.cpp +++ b/visualization/motion_planning_tasks/src/remote_task_model.cpp @@ -526,7 +526,7 @@ QVariant RemoteSolutionModel::data(const QModelIndex& index, int role) const { return item.creation_rank; case 1: if (std::isinf(item.cost)) - return tr(u8"∞"); + return tr("∞"); if (std::isnan(item.cost)) return QVariant(); return QLocale().toString(item.cost, 'f', 4); diff --git a/visualization/motion_planning_tasks/src/task_list_model.cpp b/visualization/motion_planning_tasks/src/task_list_model.cpp index 3cd646690..715f9085c 100644 --- a/visualization/motion_planning_tasks/src/task_list_model.cpp +++ b/visualization/motion_planning_tasks/src/task_list_model.cpp @@ -61,9 +61,9 @@ QVariant TaskListModel::horizontalHeader(int column, int role) { case 0: return tr("name"); case 1: - return tr(u8"✓"); + return tr("✓"); // ✓ case 2: - return tr(u8"✗"); + return tr("✗"); // ✗ case 3: return tr("time"); } diff --git a/visualization/motion_planning_tasks/utils/CMakeLists.txt b/visualization/motion_planning_tasks/utils/CMakeLists.txt index 436145dcc..96b062db0 100644 --- a/visualization/motion_planning_tasks/utils/CMakeLists.txt +++ b/visualization/motion_planning_tasks/utils/CMakeLists.txt @@ -1,5 +1,6 @@ set(MOVEIT_LIB_NAME motion_planning_tasks_utils) - +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets) set(SOURCES flat_merge_proxy_model.cpp tree_merge_proxy_model.cpp @@ -8,7 +9,9 @@ set(SOURCES add_library(${MOVEIT_LIB_NAME} SHARED ${SOURCES}) target_link_libraries(${MOVEIT_LIB_NAME} - ${QT_LIBRARIES} + rclcpp::rclcpp + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Core ) target_include_directories(${MOVEIT_LIB_NAME} PUBLIC $ diff --git a/visualization/visualization_tools/CMakeLists.txt b/visualization/visualization_tools/CMakeLists.txt index bde4d614c..5975a3bbd 100644 --- a/visualization/visualization_tools/CMakeLists.txt +++ b/visualization/visualization_tools/CMakeLists.txt @@ -1,5 +1,9 @@ set(MOVEIT_LIB_NAME moveit_task_visualization_tools) - +find_package(moveit_core REQUIRED) +find_package(rviz_default_plugins REQUIRED) +find_package(moveit_ros_visualization REQUIRED) +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets) set(PROJECT_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include/moveit/visualization_tools) set(HEADERS @@ -18,23 +22,49 @@ add_library(${MOVEIT_LIB_NAME} SHARED src/task_solution_visualization.cpp ) set_target_properties(${MOVEIT_LIB_NAME} PROPERTIES VERSION "${${PROJECT_NAME}_VERSION}") -target_link_libraries(${MOVEIT_LIB_NAME} - ${QT_LIBRARIES} - rviz_ogre_vendor::OgreMain - fmt::fmt -) + target_link_libraries(moveit_task_visualization_tools PUBLIC + ${moveit_task_constructor_msgs_TARGETS} + moveit_core::moveit_collision_detection + moveit_core::moveit_collision_detection_bullet + moveit_core::moveit_collision_detection_fcl + moveit_core::moveit_collision_distance_field + moveit_core::moveit_constraint_samplers + moveit_core::moveit_distance_field + moveit_core::moveit_dynamics_solver + moveit_core::moveit_exceptions + moveit_core::moveit_kinematic_constraints + moveit_core::moveit_kinematics_base + moveit_core::moveit_kinematics_metrics + moveit_core::moveit_macros + moveit_core::moveit_planning_interface + moveit_core::moveit_planning_scene + moveit_core::moveit_robot_model + moveit_core::moveit_robot_state + moveit_core::moveit_robot_trajectory + moveit_core::moveit_smoothing_base + moveit_core::moveit_test_utils + moveit_core::moveit_trajectory_processing + moveit_core::moveit_transforms + moveit_core::moveit_utils + moveit_ros_visualization::moveit_motion_planning_rviz_plugin + moveit_ros_visualization::moveit_motion_planning_rviz_plugin_core + moveit_ros_visualization::moveit_planning_scene_rviz_plugin + moveit_ros_visualization::moveit_planning_scene_rviz_plugin_core + moveit_ros_visualization::moveit_robot_state_rviz_plugin + moveit_ros_visualization::moveit_robot_state_rviz_plugin_core + moveit_ros_visualization::moveit_rviz_plugin_render_tools + moveit_ros_visualization::moveit_trajectory_rviz_plugin + moveit_ros_visualization::moveit_trajectory_rviz_plugin_core + pluginlib::pluginlib + rclcpp::rclcpp + rviz_common::rviz_common + rviz_default_plugins::rviz_default_plugins + ) + target_include_directories(${MOVEIT_LIB_NAME} PUBLIC include ) -target_link_libraries(${MOVEIT_LIB_NAME} - Boost::headers - pluginlib::pluginlib - ${moveit_task_constructor_msgs_TARGETS} - ${moveit_ros_visualization_TARGETS} - ${moveit_core_TARGETS} - ${rviz_common_TARGETS} - ${rviz_default_plugins_TARGETS} -) + install(DIRECTORY include/ DESTINATION include)