From b17e2ef02e0cccc741280bcb2ab4bece5e9f6d31 Mon Sep 17 00:00:00 2001 From: philippewarren Date: Wed, 18 Dec 2024 14:26:13 -0500 Subject: [PATCH] Fix warnings with GCC on Ubuntu 20.04 --- face_cropping/CMakeLists.txt | 11 +++++----- .../src/drawers/LabelImageDrawer.cpp | 6 ------ .../src/drawers/OccupancyGridImageDrawer.cpp | 20 +++++++++++-------- opentera_webrtc_demos/CMakeLists.txt | 4 ++-- .../cmake/output_only_if_failed.sh | 10 ++++++++++ .../src/LocalCameraWindow.cpp | 2 +- opentera_webrtc_robot_gui/src/MainWindow.cpp | 2 +- .../src/ROSCameraView.cpp | 12 +++++------ opentera_webrtc_ros/CMakeLists.txt | 16 +++++++++++---- opentera_webrtc_ros/opentera-webrtc | 2 +- 10 files changed, 51 insertions(+), 34 deletions(-) create mode 100755 opentera_webrtc_demos/cmake/output_only_if_failed.sh diff --git a/face_cropping/CMakeLists.txt b/face_cropping/CMakeLists.txt index 90fe24e..eb58709 100644 --- a/face_cropping/CMakeLists.txt +++ b/face_cropping/CMakeLists.txt @@ -10,11 +10,6 @@ endif() if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) - -endif() - -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) endif() find_package(ament_cmake REQUIRED) @@ -187,6 +182,12 @@ install(TARGETS face_cropping_webrtc_node DESTINATION lib/${PROJECT_NAME}) install(DIRECTORY models DESTINATION share/${PROJECT_NAME}) +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + target_compile_options(torchvision PRIVATE -w) + target_compile_options(face_cropping_node PRIVATE -Wall -Wextra -Wpedantic) + target_compile_options(face_cropping_webrtc_node PRIVATE -Wall -Wextra -Wpedantic) +endif() + if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) # the following line skips the linter which checks for copyrights diff --git a/map_image_generator/src/drawers/LabelImageDrawer.cpp b/map_image_generator/src/drawers/LabelImageDrawer.cpp index ef8843e..a200c1d 100644 --- a/map_image_generator/src/drawers/LabelImageDrawer.cpp +++ b/map_image_generator/src/drawers/LabelImageDrawer.cpp @@ -2,8 +2,6 @@ #include -#include - using namespace map_image_generator; LabelImageDrawer::LabelImageDrawer(const Parameters& parameters, rclcpp::Node& node, tf2_ros::Buffer& tfBuffer) @@ -52,14 +50,10 @@ void LabelImageDrawer::drawLabel( tf2::fromMsg(label.pose.pose, labelPose); labelPose = transform * labelPose; adjustTransformForRobotRef(labelPose); - double yaw = tf2::getYaw(labelPose.getRotation()); int startX, startY; convertTransformToMapCoordinates(labelPose, startX, startY); - int endX = static_cast(startX + size * cos(yaw)); - int endY = static_cast(startY + size * sin(yaw)); - cv::drawMarker( image, cv::Point(startX, startY), diff --git a/map_image_generator/src/drawers/OccupancyGridImageDrawer.cpp b/map_image_generator/src/drawers/OccupancyGridImageDrawer.cpp index b2b6702..86d7eff 100644 --- a/map_image_generator/src/drawers/OccupancyGridImageDrawer.cpp +++ b/map_image_generator/src/drawers/OccupancyGridImageDrawer.cpp @@ -197,6 +197,9 @@ void OccupancyGridImageDrawer::rotateImageAboutCenter(cv::Mat& image, double ang OccupancyGridImageDrawer::DirectionalValues OccupancyGridImageDrawer::computePadding(const DirectionalValues& position, int height, int width) { + // TODO: remove pragma when using C++20 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" return { .top = restrictToPositive((height - 1) / 2 - position.top), .bottom = restrictToPositive(height / 2 - position.bottom), @@ -204,6 +207,7 @@ OccupancyGridImageDrawer::DirectionalValues .left = restrictToPositive((width - 1) / 2 - position.left), .right = restrictToPositive(width / 2 - position.right), }; +#pragma GCC diagnostic pop } OccupancyGridImageDrawer::MapCoordinates @@ -217,12 +221,16 @@ OccupancyGridImageDrawer::MapCoordinates OccupancyGridImageDrawer::DirectionalValues OccupancyGridImageDrawer::getDirectionsFromMapCoordinates(const MapCoordinates& mapCoordinates, const cv::Mat& map) { + // TODO: remove pragma when using C++20 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" return { .top = 0 + mapCoordinates.y, .bottom = (map.rows - 1) - mapCoordinates.y, .left = 0 + mapCoordinates.x, .right = (map.cols - 1) - mapCoordinates.x, }; +#pragma GCC diagnostic pop } void OccupancyGridImageDrawer::drawOccupancyGridImage(cv::Mat& image) @@ -239,18 +247,10 @@ void OccupancyGridImageDrawer::drawOccupancyGridImage(cv::Mat& image) MapCoordinates robotCoordinates = getMapCoordinatesFromTf(*robotTransform); DirectionalValues robotPosition = getDirectionsFromMapCoordinates(robotCoordinates, m_scaledOccupancyGridImage); - double heightBorder = 0.1 * outHeight; - double widthBorder = 0.1 * outWidth; - - // Map center - double occupancyXOrigin = m_lastOccupancyGrid->info.origin.position.x; - double occupancyYOrigin = m_lastOccupancyGrid->info.origin.position.y; - tf2::Transform mapOriginPose; mapOriginPose.setOrigin({0.0, 0.0, 0.0}); MapCoordinates mapOriginCoordinates = getMapCoordinatesFromTf(mapOriginPose); - DirectionalValues mapPosition = getDirectionsFromMapCoordinates(mapOriginCoordinates, m_scaledOccupancyGridImage); double hScaleFactor = (0.4 * outWidth) / std::abs(robotPosition.left - mapOriginCoordinates.x); double vScaleFactor = (0.4 * outHeight) / std::abs(robotPosition.top - mapOriginCoordinates.y); @@ -259,10 +259,14 @@ void OccupancyGridImageDrawer::drawOccupancyGridImage(cv::Mat& image) const auto& zoomedMap = getZoomedOccupancyImage(); + // TODO: remove pragma when using C++20 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" MapCoordinates zoomedMapOriginCoordinates{ .x = static_cast(mapOriginCoordinates.x * m_parameters.scaleFactor()), .y = static_cast(mapOriginCoordinates.y * m_parameters.scaleFactor()), }; +#pragma GCC diagnostic pop DirectionalValues zoomedMapPosition = getDirectionsFromMapCoordinates(zoomedMapOriginCoordinates, zoomedMap); DirectionalValues padding = computePadding(zoomedMapPosition, outHeight, outWidth); diff --git a/opentera_webrtc_demos/CMakeLists.txt b/opentera_webrtc_demos/CMakeLists.txt index 5ee37fc..b6b8dfc 100644 --- a/opentera_webrtc_demos/CMakeLists.txt +++ b/opentera_webrtc_demos/CMakeLists.txt @@ -21,7 +21,7 @@ find_package(ament_cmake REQUIRED) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/node_modules.stamp DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/opentera-webrtc-teleop-frontend/teleop-vue/package.json - COMMAND npm install + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cmake/output_only_if_failed.sh npm install COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/node_modules.stamp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/opentera-webrtc-teleop-frontend/teleop-vue VERBATIM @@ -45,7 +45,7 @@ file( add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dist.stamp DEPENDS ${FRONTEND_FILES} ${CMAKE_CURRENT_BINARY_DIR}/node_modules.stamp opentera_werbrtc_teleop_frontend-install - COMMAND npm run build + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cmake/output_only_if_failed.sh npm run build COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/dist.stamp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/opentera-webrtc-teleop-frontend/teleop-vue VERBATIM diff --git a/opentera_webrtc_demos/cmake/output_only_if_failed.sh b/opentera_webrtc_demos/cmake/output_only_if_failed.sh new file mode 100755 index 0000000..53a2a08 --- /dev/null +++ b/opentera_webrtc_demos/cmake/output_only_if_failed.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +output=$("$@" 2>&1) +return_code=$? + +if [ $return_code -ne 0 ]; then + echo -e "$output" >&2 +fi + +exit $return_code diff --git a/opentera_webrtc_robot_gui/src/LocalCameraWindow.cpp b/opentera_webrtc_robot_gui/src/LocalCameraWindow.cpp index 49f2896..3e296dc 100644 --- a/opentera_webrtc_robot_gui/src/LocalCameraWindow.cpp +++ b/opentera_webrtc_robot_gui/src/LocalCameraWindow.cpp @@ -61,7 +61,7 @@ void LocalCameraWindow::mousePressEvent(QMouseEvent* event) } } -void LocalCameraWindow::focusOutEvent(QFocusEvent* event) +void LocalCameraWindow::focusOutEvent([[maybe_unused]] QFocusEvent* event) { if (isSizeGripEnabled()) { diff --git a/opentera_webrtc_robot_gui/src/MainWindow.cpp b/opentera_webrtc_robot_gui/src/MainWindow.cpp index 7b7b76b..1f99715 100644 --- a/opentera_webrtc_robot_gui/src/MainWindow.cpp +++ b/opentera_webrtc_robot_gui/src/MainWindow.cpp @@ -189,7 +189,7 @@ void MainWindow::onPeerStatusClientDisconnected(const QString& id) } } -void MainWindow::_onPeerStatus(const QString& id, const QString& name, int status) +void MainWindow::_onPeerStatus(const QString& id, [[maybe_unused]] const QString& name, int status) { switch (status) { diff --git a/opentera_webrtc_robot_gui/src/ROSCameraView.cpp b/opentera_webrtc_robot_gui/src/ROSCameraView.cpp index 05d3fb3..a55a9f4 100644 --- a/opentera_webrtc_robot_gui/src/ROSCameraView.cpp +++ b/opentera_webrtc_robot_gui/src/ROSCameraView.cpp @@ -15,7 +15,7 @@ void CameraWidget::setImage(const QImage& image, bool repaintNow) } } -void CameraWidget::paintEvent(QPaintEvent* event) +void CameraWidget::paintEvent([[maybe_unused]] QPaintEvent* event) { QPainter painter(this); painter.setRenderHint(QPainter::SmoothPixmapTransform, true); @@ -27,9 +27,9 @@ void CameraWidget::paintEvent(QPaintEvent* event) return; } - float scale = - std::min(static_cast(width()) / static_cast(m_image.width()), - static_cast(height()) / static_cast(m_image.height())); + float scale = std::min( + static_cast(width()) / static_cast(m_image.width()), + static_cast(height()) / static_cast(m_image.height())); int scaledWidth = static_cast(scale * m_image.width()); int scaledHeight = static_cast(scale * m_image.height()); int offsetX = std::max(0, (width() - scaledWidth) / 2); @@ -41,8 +41,8 @@ void CameraWidget::paintEvent(QPaintEvent* event) ROSCameraView::ROSCameraView(QWidget* parent) : QWidget{parent}, m_layout{nullptr}, - m_label{nullptr}, - m_cameraWidget{nullptr} + m_cameraWidget{nullptr}, + m_label{nullptr} { m_layout = new QVBoxLayout(this); diff --git a/opentera_webrtc_ros/CMakeLists.txt b/opentera_webrtc_ros/CMakeLists.txt index b14cc3a..650f7c6 100644 --- a/opentera_webrtc_ros/CMakeLists.txt +++ b/opentera_webrtc_ros/CMakeLists.txt @@ -16,10 +16,6 @@ endif() set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) -endif() - if(NOT CMAKE_BUILD_TYPE ) MESSAGE(STATUS "not define build type, set to release" ) set(CMAKE_BUILD_TYPE Release ) @@ -55,6 +51,8 @@ set(OPENTERA_WEBRTC_ENABLE_EXAMPLES OFF) set(OPENTERA_WEBRTC_ENABLE_GSTREAMER ON) # Use system opencv that is shared with ROS set(OPENTERA_WEBRTC_USE_SYSTEM_OPENCV ON) +# Disable building the documentation, the pip install for the documentation is annoying. +set(OPENTERA_WEBRTC_ENABLE_PYTHON_HTML_DOC OFF) # Enable install on build for python package, which is required for using it in ROS if using devel space set(OPENTERA_WEBRTC_NATIVE_CLIENT_PYTHON_INSTALL_ON_BUILD OFF) # Install in ROS worksapce @@ -193,6 +191,16 @@ ament_target_dependencies(${PROJECT_NAME}_json_data_handler set_target_properties(${PROJECT_NAME}_json_data_handler PROPERTIES OUTPUT_NAME json_data_handler PREFIX "") install(TARGETS ${PROJECT_NAME}_json_data_handler DESTINATION lib/${PROJECT_NAME}) +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + target_compile_options(${PROJECT_NAME}_topic_streamer PRIVATE -Wall -Wextra -Wpedantic) + target_compile_options(${PROJECT_NAME}_data_channel_bridge PRIVATE -Wall -Wextra -Wpedantic) + target_compile_options(${PROJECT_NAME}_json_data_handler PRIVATE -Wall -Wextra -Wpedantic) + + foreach(target ${opentera_webrtc_native_client_targets}) + target_compile_options(${target} PRIVATE -Wall -Wextra -Wpedantic) + endforeach() +endif() + install( DIRECTORY lib/lib diff --git a/opentera_webrtc_ros/opentera-webrtc b/opentera_webrtc_ros/opentera-webrtc index b90291b..7f1ef54 160000 --- a/opentera_webrtc_ros/opentera-webrtc +++ b/opentera_webrtc_ros/opentera-webrtc @@ -1 +1 @@ -Subproject commit b90291b143fb5f4a912164d98f38144017ade9f2 +Subproject commit 7f1ef54532e64f4bc55770e9cdc3d57735244fb7