diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100644 new mode 100755 index adc3011..efaf17d --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,211 @@ cmake_minimum_required(VERSION 3.5.1) -project(mobile_robot VERSION 0.2.0) +project(ugv_sdk VERSION 0.1.5) -add_subdirectory(ugv_sdk) +find_program(CCACHE_PROGRAM ccache) +if(CCACHE_PROGRAM) + message(STATUS "Found ccache") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") +endif() + +## Project Options +option(BUILD_TESTS ON) +option(STATIC_CHECK OFF) +# set(CMAKE_BUILD_TYPE Release) +# set(CMAKE_BUILD_TYPE Debug) + +## Check if pkg is built with ROS catkin +if(CATKIN_DEVEL_PREFIX) + message(STATUS "Build package with catkin") + set(BUILD_WITHOUT_ROS OFF) + find_package(catkin REQUIRED) +else() + message(STATUS "Build package with cmake") + set(BUILD_WITHOUT_ROS ON) +endif() + +## Generate symbols for IDE indexer +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +if(STATIC_CHECK) + find_program(CPPCHECK cppcheck) + if(CPPCHECK) + message(STATUS "Found cppcheck") + set(CMAKE_CXX_CPPCHECK cppcheck;--std=c++11;--enable=all) + endif() +endif() + +## Additional cmake module path +set(USER_CMAKE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +list(APPEND CMAKE_MODULE_PATH "${USER_CMAKE_PATH}/modules") +list(APPEND CMAKE_PREFIX_PATH "/usr/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/cmake") +list(APPEND CMAKE_PREFIX_PATH "/opt/weston_robot/lib/cmake") + +## Set compiler to use c++ 11 features +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +## Chosse build type +set(default_build_type "Release") +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to '${default_build_type}' as none was specified.") + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE + STRING "Choose the type of build." FORCE) + # Set the possible values of build type for cmake-gui + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() + +if(BUILD_WITHOUT_ROS) + ## Use GNUInstallDirs to install libraries into correct locations on all platforms. + include(GNUInstallDirs) + message(STATUS "Project will be installed to ${CMAKE_INSTALL_PREFIX} with 'make install'") + + ## Put all binary files into /bin and libraries into /lib + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) +endif() + +if(NOT BUILD_WITHOUT_ROS) + find_package(catkin REQUIRED COMPONENTS async_port) + include_directories( + include + ${catkin_INCLUDE_DIRS} + ) +endif() + +# Build libraries +find_package(Threads REQUIRED) + +add_library(${PROJECT_NAME} + # agx common + src/mobile_base.cpp + src/agx_msg_parser.c + # robot support + src/scout_base.cpp + # src/hunter_base.cpp + src/tracer_base.cpp + # src/bunker_base.cpp +) +if(BUILD_WITHOUT_ROS) + target_link_libraries(${PROJECT_NAME} wrp_io Threads::Threads) +else() + target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} Threads::Threads) +endif() +target_include_directories(${PROJECT_NAME} PUBLIC + $ + $ + PRIVATE src) + +# Build apps +if(BUILD_WITHOUT_ROS) + # Check wether to build monitor tool + set(BUILD_MONITOR ON) + # Disable monitor if ncurses library is not found + set(CURSES_NEED_NCURSES TRUE) + find_package(Curses QUIET) + if(BUILD_MONITOR AND NOT CURSES_FOUND) + set(BUILD_MONITOR OFF) + message(STATUS "Monitor app will not be built due to missing ncurses library, try: sudo apt install libncurses5-dev") + endif() + + # add app source directory + add_subdirectory(apps) +endif() + +# Build tests +# if(PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME AND BUILD_TESTS) +# message(STATUS "Tests will be built") +# enable_testing() +# include(GoogleTest) +# add_subdirectory(tests) +# else() +# message(STATUS "Tests will not be built") +# endif() + +## Installation configuration +if(BUILD_WITHOUT_ROS) # BUILD_WITHOUT_ROS + + # Offer the user the choice of overriding the installation directories + set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries") + set(INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Installation directory for executables") + set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Installation directory for header files") + if(WIN32 AND NOT CYGWIN) + set(DEF_INSTALL_CMAKEDIR CMake) + else() + set(DEF_INSTALL_CMAKEDIR share/cmake/${PROJECT_NAME}) + endif() + set(INSTALL_CMAKEDIR ${DEF_INSTALL_CMAKEDIR} CACHE PATH "Installation directory for CMake files") + + # Report to user + foreach(p LIB BIN INCLUDE CMAKE) + file(TO_NATIVE_PATH ${CMAKE_INSTALL_PREFIX}/${INSTALL_${p}DIR} _path) + message(STATUS " - To install ${p} components to ${_path}") + unset(_path) + endforeach() + + # targets to install + install(TARGETS ${PROJECT_NAME} + EXPORT ugv_sdkTargets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin + INCLUDES DESTINATION include) + + install(DIRECTORY include/ugv_sdk + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + # export target configuration + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + ugv_sdkConfigVersion.cmake + VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" + COMPATIBILITY SameMajorVersion) + + install(EXPORT ugv_sdkTargets + FILE ugv_sdkTargets.cmake + NAMESPACE westonrobot:: + DESTINATION lib/cmake/ugv_sdk) + + configure_file(cmake/ugv_sdkConfig.cmake.in ugv_sdkConfig.cmake @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ugv_sdkConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/ugv_sdkConfigVersion.cmake" + DESTINATION lib/cmake/ugv_sdk) + + # Packaging support + set(CPACK_PACKAGE_VENDOR "Weston Robot") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Weston Robot Platform - SDK") + set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) + set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/weston_robot") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Ruixiang Du (ruixiang.du@westonrobot.com)") + # set(CPACK_DEBIAN_PACKAGE_DEPENDS "libasio-dev") + set(CPACK_SOURCE_IGNORE_FILES .git dist .*build.* /\\\\.DS_Store) + include(CPack) + +else() # BUILD_WITHOUT_ROS + + catkin_package( + LIBRARIES ${PROJECT_NAME} + INCLUDE_DIRS include + CATKIN_DEPENDS wrp_io + # DEPENDS system_lib + ) + + ## Add catkin install targets + install(TARGETS ${PROJECT_NAME} + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}) + + install(DIRECTORY include/${PROJECT_NAME} + DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}) + +endif() # BUILD_WITHOUT_ROS diff --git a/LICENSE b/LICENSE index c8c14c7..261eeb9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,29 +1,201 @@ -BSD 3-Clause License + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2020, WestonRobot -All rights reserved. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: + 1. Definitions. -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/ugv_sdk/apps/CMakeLists.txt b/apps/CMakeLists.txt similarity index 100% rename from ugv_sdk/apps/CMakeLists.txt rename to apps/CMakeLists.txt diff --git a/ugv_sdk/apps/hunter_demo/hunter_demo.cpp b/apps/hunter_demo/hunter_demo.cpp similarity index 100% rename from ugv_sdk/apps/hunter_demo/hunter_demo.cpp rename to apps/hunter_demo/hunter_demo.cpp diff --git a/ugv_sdk/apps/scout_demo/scout_demo.cpp b/apps/scout_demo/scout_demo.cpp similarity index 100% rename from ugv_sdk/apps/scout_demo/scout_demo.cpp rename to apps/scout_demo/scout_demo.cpp diff --git a/ugv_sdk/apps/scout_demo/scout_discharge.cpp b/apps/scout_demo/scout_discharge.cpp similarity index 100% rename from ugv_sdk/apps/scout_demo/scout_discharge.cpp rename to apps/scout_demo/scout_discharge.cpp diff --git a/ugv_sdk/apps/scout_monitor/CMakeLists.txt b/apps/scout_monitor/CMakeLists.txt similarity index 100% rename from ugv_sdk/apps/scout_monitor/CMakeLists.txt rename to apps/scout_monitor/CMakeLists.txt diff --git a/ugv_sdk/apps/scout_monitor/app/CMakeLists.txt b/apps/scout_monitor/app/CMakeLists.txt similarity index 100% rename from ugv_sdk/apps/scout_monitor/app/CMakeLists.txt rename to apps/scout_monitor/app/CMakeLists.txt diff --git a/ugv_sdk/apps/scout_monitor/app/app_scout_monitor.cpp b/apps/scout_monitor/app/app_scout_monitor.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/app/app_scout_monitor.cpp rename to apps/scout_monitor/app/app_scout_monitor.cpp diff --git a/ugv_sdk/apps/scout_monitor/color_demo.png b/apps/scout_monitor/color_demo.png similarity index 100% rename from ugv_sdk/apps/scout_monitor/color_demo.png rename to apps/scout_monitor/color_demo.png diff --git a/ugv_sdk/apps/scout_monitor/include/monitor/ncolors.hpp b/apps/scout_monitor/include/monitor/ncolors.hpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/include/monitor/ncolors.hpp rename to apps/scout_monitor/include/monitor/ncolors.hpp diff --git a/ugv_sdk/apps/scout_monitor/include/monitor/nshapes.hpp b/apps/scout_monitor/include/monitor/nshapes.hpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/include/monitor/nshapes.hpp rename to apps/scout_monitor/include/monitor/nshapes.hpp diff --git a/ugv_sdk/apps/scout_monitor/include/monitor/scout_monitor.hpp b/apps/scout_monitor/include/monitor/scout_monitor.hpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/include/monitor/scout_monitor.hpp rename to apps/scout_monitor/include/monitor/scout_monitor.hpp diff --git a/ugv_sdk/apps/scout_monitor/src/ncolors.cpp b/apps/scout_monitor/src/ncolors.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/src/ncolors.cpp rename to apps/scout_monitor/src/ncolors.cpp diff --git a/ugv_sdk/apps/scout_monitor/src/nshapes.cpp b/apps/scout_monitor/src/nshapes.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/src/nshapes.cpp rename to apps/scout_monitor/src/nshapes.cpp diff --git a/ugv_sdk/apps/scout_monitor/src/scout_monitor.cpp b/apps/scout_monitor/src/scout_monitor.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/src/scout_monitor.cpp rename to apps/scout_monitor/src/scout_monitor.cpp diff --git a/ugv_sdk/apps/scout_monitor/tests/CMakeLists.txt b/apps/scout_monitor/tests/CMakeLists.txt similarity index 100% rename from ugv_sdk/apps/scout_monitor/tests/CMakeLists.txt rename to apps/scout_monitor/tests/CMakeLists.txt diff --git a/ugv_sdk/apps/scout_monitor/tests/test_ncolor.c b/apps/scout_monitor/tests/test_ncolor.c similarity index 100% rename from ugv_sdk/apps/scout_monitor/tests/test_ncolor.c rename to apps/scout_monitor/tests/test_ncolor.c diff --git a/ugv_sdk/apps/scout_monitor/tests/test_ncolor2.cpp b/apps/scout_monitor/tests/test_ncolor2.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/tests/test_ncolor2.cpp rename to apps/scout_monitor/tests/test_ncolor2.cpp diff --git a/ugv_sdk/apps/scout_monitor/tests/test_ncurses.cpp b/apps/scout_monitor/tests/test_ncurses.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/tests/test_ncurses.cpp rename to apps/scout_monitor/tests/test_ncurses.cpp diff --git a/ugv_sdk/apps/scout_monitor/tests/test_scout_monitor.cpp b/apps/scout_monitor/tests/test_scout_monitor.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/tests/test_scout_monitor.cpp rename to apps/scout_monitor/tests/test_scout_monitor.cpp diff --git a/ugv_sdk/apps/scout_monitor/tests/test_scout_monitor_virtual.cpp b/apps/scout_monitor/tests/test_scout_monitor_virtual.cpp similarity index 100% rename from ugv_sdk/apps/scout_monitor/tests/test_scout_monitor_virtual.cpp rename to apps/scout_monitor/tests/test_scout_monitor_virtual.cpp diff --git a/ugv_sdk/apps/tracer_demo/tracer_demo.cpp b/apps/tracer_demo/tracer_demo.cpp similarity index 100% rename from ugv_sdk/apps/tracer_demo/tracer_demo.cpp rename to apps/tracer_demo/tracer_demo.cpp diff --git a/ugv_sdk/cmake/ugv_sdkConfig.cmake.in b/cmake/ugv_sdkConfig.cmake.in similarity index 100% rename from ugv_sdk/cmake/ugv_sdkConfig.cmake.in rename to cmake/ugv_sdkConfig.cmake.in diff --git a/ugv_sdk/include/ugv_sdk/hunter/hunter_base.hpp b/include/ugv_sdk/hunter/hunter_base.hpp similarity index 100% rename from ugv_sdk/include/ugv_sdk/hunter/hunter_base.hpp rename to include/ugv_sdk/hunter/hunter_base.hpp diff --git a/ugv_sdk/include/ugv_sdk/hunter/hunter_types.hpp b/include/ugv_sdk/hunter/hunter_types.hpp similarity index 100% rename from ugv_sdk/include/ugv_sdk/hunter/hunter_types.hpp rename to include/ugv_sdk/hunter/hunter_types.hpp diff --git a/ugv_sdk/include/ugv_sdk/mobile_base.hpp b/include/ugv_sdk/mobile_base.hpp similarity index 96% rename from ugv_sdk/include/ugv_sdk/mobile_base.hpp rename to include/ugv_sdk/mobile_base.hpp index 3adc3a1..e12668e 100644 --- a/ugv_sdk/include/ugv_sdk/mobile_base.hpp +++ b/include/ugv_sdk/mobile_base.hpp @@ -19,8 +19,8 @@ #include #include -#include "wrp_io/async_can.hpp" -#include "wrp_io/async_serial.hpp" +#include "async_port/async_can.hpp" +#include "async_port/async_serial.hpp" namespace westonrobot { class MobileBase { diff --git a/ugv_sdk/include/ugv_sdk/proto/agx_msg_parser.h b/include/ugv_sdk/proto/agx_msg_parser.h similarity index 100% rename from ugv_sdk/include/ugv_sdk/proto/agx_msg_parser.h rename to include/ugv_sdk/proto/agx_msg_parser.h diff --git a/ugv_sdk/include/ugv_sdk/proto/agx_protocol_v2.h b/include/ugv_sdk/proto/agx_protocol_v2.h similarity index 100% rename from ugv_sdk/include/ugv_sdk/proto/agx_protocol_v2.h rename to include/ugv_sdk/proto/agx_protocol_v2.h diff --git a/ugv_sdk/include/ugv_sdk/scout/scout_base.hpp b/include/ugv_sdk/scout/scout_base.hpp similarity index 100% rename from ugv_sdk/include/ugv_sdk/scout/scout_base.hpp rename to include/ugv_sdk/scout/scout_base.hpp diff --git a/ugv_sdk/include/ugv_sdk/scout/scout_types.hpp b/include/ugv_sdk/scout/scout_types.hpp similarity index 100% rename from ugv_sdk/include/ugv_sdk/scout/scout_types.hpp rename to include/ugv_sdk/scout/scout_types.hpp diff --git a/ugv_sdk/include/ugv_sdk/tracer/tracer_base.hpp b/include/ugv_sdk/tracer/tracer_base.hpp similarity index 100% rename from ugv_sdk/include/ugv_sdk/tracer/tracer_base.hpp rename to include/ugv_sdk/tracer/tracer_base.hpp diff --git a/ugv_sdk/include/ugv_sdk/tracer/tracer_types.hpp b/include/ugv_sdk/tracer/tracer_types.hpp similarity index 100% rename from ugv_sdk/include/ugv_sdk/tracer/tracer_types.hpp rename to include/ugv_sdk/tracer/tracer_types.hpp diff --git a/ugv_sdk/package.xml b/package.xml similarity index 100% rename from ugv_sdk/package.xml rename to package.xml diff --git a/ugv_sdk/src/agx_msg_parser.c b/src/agx_msg_parser.c similarity index 100% rename from ugv_sdk/src/agx_msg_parser.c rename to src/agx_msg_parser.c diff --git a/ugv_sdk/src/hunter_base.cpp b/src/hunter_base.cpp similarity index 100% rename from ugv_sdk/src/hunter_base.cpp rename to src/hunter_base.cpp diff --git a/ugv_sdk/src/mobile_base.cpp b/src/mobile_base.cpp similarity index 100% rename from ugv_sdk/src/mobile_base.cpp rename to src/mobile_base.cpp diff --git a/ugv_sdk/src/scout_base.cpp b/src/scout_base.cpp similarity index 100% rename from ugv_sdk/src/scout_base.cpp rename to src/scout_base.cpp diff --git a/ugv_sdk/src/stopwatch.hpp b/src/stopwatch.hpp similarity index 100% rename from ugv_sdk/src/stopwatch.hpp rename to src/stopwatch.hpp diff --git a/ugv_sdk/src/tracer_base.cpp b/src/tracer_base.cpp similarity index 100% rename from ugv_sdk/src/tracer_base.cpp rename to src/tracer_base.cpp diff --git a/ugv_sdk/CMakeLists.txt b/ugv_sdk/CMakeLists.txt deleted file mode 100755 index e58d4c0..0000000 --- a/ugv_sdk/CMakeLists.txt +++ /dev/null @@ -1,211 +0,0 @@ -cmake_minimum_required(VERSION 3.5.1) -project(ugv_sdk VERSION 0.1.5) - -find_program(CCACHE_PROGRAM ccache) -if(CCACHE_PROGRAM) - message(STATUS "Found ccache") - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") -endif() - -## Project Options -option(BUILD_TESTS ON) -option(STATIC_CHECK OFF) -# set(CMAKE_BUILD_TYPE Release) -# set(CMAKE_BUILD_TYPE Debug) - -## Check if pkg is built with ROS catkin -if(CATKIN_DEVEL_PREFIX) - message(STATUS "Build package with catkin") - set(BUILD_WITHOUT_ROS OFF) - find_package(catkin REQUIRED) -else() - message(STATUS "Build package with cmake") - set(BUILD_WITHOUT_ROS ON) -endif() - -## Generate symbols for IDE indexer -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - -if(STATIC_CHECK) - find_program(CPPCHECK cppcheck) - if(CPPCHECK) - message(STATUS "Found cppcheck") - set(CMAKE_CXX_CPPCHECK cppcheck;--std=c++11;--enable=all) - endif() -endif() - -## Additional cmake module path -set(USER_CMAKE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -list(APPEND CMAKE_MODULE_PATH "${USER_CMAKE_PATH}/modules") -list(APPEND CMAKE_PREFIX_PATH "/usr/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/cmake") -list(APPEND CMAKE_PREFIX_PATH "/opt/weston_robot/lib/cmake") - -## Set compiler to use c++ 11 features -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -## Chosse build type -set(default_build_type "Release") -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - message(STATUS "Setting build type to '${default_build_type}' as none was specified.") - set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE - STRING "Choose the type of build." FORCE) - # Set the possible values of build type for cmake-gui - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -endif() - -if(BUILD_WITHOUT_ROS) - ## Use GNUInstallDirs to install libraries into correct locations on all platforms. - include(GNUInstallDirs) - message(STATUS "Project will be installed to ${CMAKE_INSTALL_PREFIX} with 'make install'") - - ## Put all binary files into /bin and libraries into /lib - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) -endif() - -if(NOT BUILD_WITHOUT_ROS) - find_package(catkin REQUIRED COMPONENTS wrp_io) - include_directories( - include - ${catkin_INCLUDE_DIRS} - ) -endif() - -# Build libraries -find_package(Threads REQUIRED) - -add_library(${PROJECT_NAME} - # agx common - src/mobile_base.cpp - src/agx_msg_parser.c - # robot support - src/scout_base.cpp - # src/hunter_base.cpp - src/tracer_base.cpp - # src/bunker_base.cpp -) -if(BUILD_WITHOUT_ROS) - target_link_libraries(${PROJECT_NAME} wrp_io Threads::Threads) -else() - target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} Threads::Threads) -endif() -target_include_directories(${PROJECT_NAME} PUBLIC - $ - $ - PRIVATE src) - -# Build apps -if(BUILD_WITHOUT_ROS) - # Check wether to build monitor tool - set(BUILD_MONITOR ON) - # Disable monitor if ncurses library is not found - set(CURSES_NEED_NCURSES TRUE) - find_package(Curses QUIET) - if(BUILD_MONITOR AND NOT CURSES_FOUND) - set(BUILD_MONITOR OFF) - message(STATUS "Monitor app will not be built due to missing ncurses library, try: sudo apt install libncurses5-dev") - endif() - - # add app source directory - add_subdirectory(apps) -endif() - -# Build tests -# if(PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME AND BUILD_TESTS) -# message(STATUS "Tests will be built") -# enable_testing() -# include(GoogleTest) -# add_subdirectory(tests) -# else() -# message(STATUS "Tests will not be built") -# endif() - -## Installation configuration -if(BUILD_WITHOUT_ROS) # BUILD_WITHOUT_ROS - - # Offer the user the choice of overriding the installation directories - set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries") - set(INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Installation directory for executables") - set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Installation directory for header files") - if(WIN32 AND NOT CYGWIN) - set(DEF_INSTALL_CMAKEDIR CMake) - else() - set(DEF_INSTALL_CMAKEDIR share/cmake/${PROJECT_NAME}) - endif() - set(INSTALL_CMAKEDIR ${DEF_INSTALL_CMAKEDIR} CACHE PATH "Installation directory for CMake files") - - # Report to user - foreach(p LIB BIN INCLUDE CMAKE) - file(TO_NATIVE_PATH ${CMAKE_INSTALL_PREFIX}/${INSTALL_${p}DIR} _path) - message(STATUS " - To install ${p} components to ${_path}") - unset(_path) - endforeach() - - # targets to install - install(TARGETS ${PROJECT_NAME} - EXPORT ugv_sdkTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin - INCLUDES DESTINATION include) - - install(DIRECTORY include/ugv_sdk - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - # export target configuration - include(CMakePackageConfigHelpers) - write_basic_package_version_file( - ugv_sdkConfigVersion.cmake - VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" - COMPATIBILITY SameMajorVersion) - - install(EXPORT ugv_sdkTargets - FILE ugv_sdkTargets.cmake - NAMESPACE westonrobot:: - DESTINATION lib/cmake/ugv_sdk) - - configure_file(cmake/ugv_sdkConfig.cmake.in ugv_sdkConfig.cmake @ONLY) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ugv_sdkConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/ugv_sdkConfigVersion.cmake" - DESTINATION lib/cmake/ugv_sdk) - - # Packaging support - set(CPACK_PACKAGE_VENDOR "Weston Robot") - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Weston Robot Platform - SDK") - set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) - set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/weston_robot") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") - - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) - set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Ruixiang Du (ruixiang.du@westonrobot.com)") - # set(CPACK_DEBIAN_PACKAGE_DEPENDS "libasio-dev") - set(CPACK_SOURCE_IGNORE_FILES .git dist .*build.* /\\\\.DS_Store) - include(CPack) - -else() # BUILD_WITHOUT_ROS - - catkin_package( - LIBRARIES ${PROJECT_NAME} - INCLUDE_DIRS include - CATKIN_DEPENDS wrp_io - # DEPENDS system_lib - ) - - ## Add catkin install targets - install(TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}) - - install(DIRECTORY include/${PROJECT_NAME} - DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}) - -endif() # BUILD_WITHOUT_ROS diff --git a/ugv_sdk/LICENSE b/ugv_sdk/LICENSE deleted file mode 100644 index c8c14c7..0000000 --- a/ugv_sdk/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2020, WestonRobot -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.