diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ccff7c2f22701c1fb5b8a63350a5c677197a148d..05026060218f95900ef4517df78e099099b80c89 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,25 @@ stages: - deploy_packages ############ YAML ANCHORS ############ +.print_variables_template: &print_variables_definition + # Print variables + - echo $WOLF_IMU_BRANCH + - echo $WOLF_GNSS_BRANCH + - echo $WOLF_LASER_BRANCH + - echo $WOLF_VISION_BRANCH + - echo $WOLF_APRILTAG_BRANCH + - echo $WOLF_BODYDYNAMICS_BRANCH + - echo $GNSSUTILS_BRANCH + - echo $LASERSCANUTILS_BRANCH + - echo $CI_COMMIT_BRANCH + - echo $WOLF_ROS_NODE_BRANCH + - echo $WOLF_ROS_IMU_BRANCH + - echo $WOLF_ROS_GNSS_BRANCH + - echo $WOLF_ROS_LASER_BRANCH + - echo $WOLF_ROS_VISION_BRANCH + - echo $WOLF_ROS_APRILTAG_BRANCH + - echo $WOLF_ROS_BODYDYNAMICS_BRANCH + .preliminaries_template: &preliminaries_definition ## Install ssh-agent if not already installed, it is required by Docker. ## (change apt-get to yum if you use an RPM-based image) @@ -145,27 +164,42 @@ deploy_imu: variables: WOLF_CORE_BRANCH: $WOLF_CORE_BRANCH WOLF_IMU_BRANCH: $WOLF_IMU_BRANCH - WOLF_ROS_CORE_BRANCH: $CI_COMMIT_BRANCH + WOLF_ROS_NODE_BRANCH: $CI_COMMIT_BRANCH trigger: project: mobile_robotics/wolf_projects/wolf_ros/wolf_ros_imu + branch: $WOLF_ROS_IMU_BRANCH deploy_gnss: stage: deploy_packages variables: WOLF_CORE_BRANCH: $WOLF_CORE_BRANCH WOLF_APRILTAG_BRANCH: $WOLF_GNSS_BRANCH - WOLF_ROS_CORE_BRANCH: $CI_COMMIT_BRANCH + WOLF_ROS_NODE_BRANCH: $CI_COMMIT_BRANCH + GNSSUTILS_BRANCH: $GNSSUTILS_BRANCH trigger: project: mobile_robotics/wolf_projects/wolf_ros/wolf_ros_gnss + branch: $WOLF_ROS_GNSS_BRANCH deploy_laser: stage: deploy_packages variables: WOLF_CORE_BRANCH: $WOLF_CORE_BRANCH WOLF_LASER_BRANCH: $WOLF_LASER_BRANCH - WOLF_ROS_CORE_BRANCH: $CI_COMMIT_BRANCH + WOLF_ROS_NODE_BRANCH: $CI_COMMIT_BRANCH + LASERSCANUTILS_BRANCH: $LASERSCANUTILS_BRANCH trigger: project: mobile_robotics/wolf_projects/wolf_ros/wolf_ros_laser + branch: $WOLF_ROS_LASER_BRANCH + +deploy_vision: + stage: deploy_packages + variables: + WOLF_CORE_BRANCH: $WOLF_CORE_BRANCH + WOLF_VISION_BRANCH: $WOLF_VISION_BRANCH + WOLF_ROS_NODE_BRANCH: $CI_COMMIT_BRANCH + trigger: + project: mobile_robotics/wolf_projects/wolf_ros/wolf_ros_apriltag + branch: $WOLF_ROS_VISION_BRANCH deploy_apriltag: stage: deploy_packages @@ -173,6 +207,7 @@ deploy_apriltag: WOLF_CORE_BRANCH: $WOLF_CORE_BRANCH WOLF_VISION_BRANCH: $WOLF_VISION_BRANCH WOLF_APRILTAG_BRANCH: $WOLF_APRILTAG_BRANCH - WOLF_ROS_CORE_BRANCH: $CI_COMMIT_BRANCH + WOLF_ROS_NORE_BRANCH: $CI_COMMIT_BRANCH trigger: project: mobile_robotics/wolf_projects/wolf_ros/wolf_ros_apriltag + branch: $WOLF_ROS_APRILTAG_BRANCH diff --git a/CMakeLists.txt b/CMakeLists.txt index 1851015a20181da59c2d94b5c351bcbe88888b42..dfb477604a3919687abde4cd76fd6618c185bacd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,11 @@ -cmake_minimum_required(VERSION 2.8.3) +cmake_minimum_required(VERSION 3.10) project(wolf_ros_node) -## Compile as C++11, supported in ROS Kinetic and newer -add_compile_options(-std=c++14) +## Compile as C++14 +add_compile_options(-std=c++14) +# -fPIC and -rdynamic ensure unique singleton instance across shared libraries (for factories) see: https://stackoverflow.com/a/8626922 +SET(CMAKE_CXX_FLAGS "-fPIC -rdynamic") -# SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/wolf_ros_wrapper/cmake_modules") -## Find catkin macros and libraries -## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) -## is used, also find other catkin packages find_package(catkin REQUIRED COMPONENTS roslib roscpp @@ -17,104 +15,18 @@ find_package(catkin REQUIRED COMPONENTS tf tf_conversions tf2_ros -# dynamic_reconfigure ) ## System dependencies are found with CMake's conventions -# find_package(Boost REQUIRED COMPONENTS system) -# find_package(Ceres REQUIRED) -# find_package(Eigen3 REQUIRED) find_package(wolfcore REQUIRED) -## Uncomment this if the package has a setup.py. This macro ensures -## modules and global scripts declared therein get installed -## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html -# catkin_python_setup() - -################################################ -## Declare ROS messages, services and actions ## -################################################ - -## To declare and build messages, services or actions from within this -## package, follow these steps: -## * Let MSG_DEP_SET be the set of packages whose message types you use in -## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). -## * In the file package.xml: -## * add a build_depend tag for "message_generation" -## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET -## * If MSG_DEP_SET isn't empty the following dependency has been pulled in -## but can be declared for certainty nonetheless: -## * add a exec_depend tag for "message_runtime" -## * In this file (CMakeLists.txt): -## * add "message_generation" and every package in MSG_DEP_SET to -## find_package(catkin REQUIRED COMPONENTS ...) -## * add "message_runtime" and every package in MSG_DEP_SET to -## catkin_package(CATKIN_DEPENDS ...) -## * uncomment the add_*_files sections below as needed -## and list every .msg/.srv/.action file to be processed -## * uncomment the generate_messages entry below -## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) - -## Generate messages in the 'msg' folder -# add_message_files( -# FILES -# Message1.msg -# Message2.msg -# ) - -## Generate services in the 'srv' folder -# add_service_files( -# FILES -# Service1.srv -# Service2.srv -# ) - -## Generate actions in the 'action' folder -# add_action_files( -# FILES -# Action1.action -# Action2.action -# ) - -## Generate added messages and services with any dependencies listed here -# generate_messages( -# DEPENDENCIES -# sensor_msgs# std_msgs -# ) - -################################################ -## Declare ROS dynamic reconfigure parameters ## -################################################ - -## To declare and build dynamic reconfigure parameters within this -## package, follow these steps: -## * In the file package.xml: -## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" -## * In this file (CMakeLists.txt): -## * add "dynamic_reconfigure" to -## find_package(catkin REQUIRED COMPONENTS ...) -## * uncomment the "generate_dynamic_reconfigure_options" section below -## and list every .cfg file to be processed - -## Generate dynamic reconfigure parameters in the 'cfg' folder -##generate_dynamic_reconfigure_options( -## cfg/WolfROS.cfg -##) ################################### ## catkin specific configuration ## ################################### -## The catkin_package macro generates cmake config files for your package -## Declare things to be passed to dependent projects -## INCLUDE_DIRS: uncomment this if your package contains header files -## LIBRARIES: libraries you create in this project that dependent projects also need -## CATKIN_DEPENDS: catkin_packages dependent projects also need -## DEPENDS: system dependencies of this project that dependent projects also need +# produces the XXXConfig.cmake file among other things catkin_package( -INCLUDE_DIRS include -# LIBRARIES wolf_ros1 -# CATKIN_DEPENDS roscpp sensor_msgs std_msgs -# DEPENDS system_lib + INCLUDE_DIRS include ) ########### @@ -123,121 +35,36 @@ INCLUDE_DIRS include ## Specify additional locations of header files ## Your package locations should be listed before other locations -message("Wolf include path: ${wolfcore_INCLUDE_DIRS}") include_directories( - include - ${EIGEN_INCLUDE_DIRS} - ${wolfcore_INCLUDE_DIRS} + include ${catkin_INCLUDE_DIRS} - ${CERES_INCLUDE_DIRS} ) -# link_directories(/usr/local/lib/iri-algorithms) -## Declare a C++ library -# add_library(${PROJECT_NAME} -# src/${PROJECT_NAME}/wolf_ros.cpp -# ) - -## Add cmake target dependencies of the library -## as an example, code may need to be generated before libraries -## either from message generation or dynamic reconfigure -# add_dependencies(${PROJECT_NAME}_node ${PROJECT_NAME}_gencfg) -# add_dependencies(${PROJECT_NAME}_visualizer ${PROJECT_NAME}_gencfg) - -## Declare a C++ executable -## With catkin_make all packages are built within a single CMake context -## The recommended prefix ensures that target names across packages don't collide add_executable(${PROJECT_NAME} src/node.cpp) add_library(subscriber_${PROJECT_NAME} - src/subscriber_diffdrive.cpp - src/subscriber_odom2d.cpp) -add_library(publisher_${PROJECT_NAME} - src/publisher_graph.cpp - src/publisher_pose.cpp - src/publisher_trajectory.cpp - src/publisher_state_block.cpp - src/publisher_tf.cpp) + src/subscriber_diffdrive.cpp + src/subscriber_odom2d.cpp) -## Rename C++ executable without prefix -## The above recommended prefix causes long target names, the following renames the -## target back to the shorter version for ease of user use -## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg" -# set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME node PREFIX "") - -## Add cmake target dependencies of the executable -## same as for the library above -## add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_gencfg) +add_library(publisher_${PROJECT_NAME} + src/publisher_graph.cpp + src/publisher_pose.cpp + src/publisher_trajectory.cpp + src/publisher_state_block.cpp + src/publisher_tf.cpp) ## Specify libraries to link a library or executable target against target_link_libraries(subscriber_${PROJECT_NAME} ${catkin_LIBRARIES} - ${CERES_LIBRARIES} - ${wolfcore_LIBRARIES} - yaml-cpp - dl + wolfcore ) target_link_libraries(publisher_${PROJECT_NAME} ${catkin_LIBRARIES} - ${CERES_LIBRARIES} - ${wolfcore_LIBRARIES} - yaml-cpp - dl + wolfcore ) target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} - ${CERES_LIBRARIES} - ${wolfcore_LIBRARIES} - yaml-cpp - dl - ) - -############# -## Install ## -############# - -# all install targets should use catkin DESTINATION variables -# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html - -## Mark executable scripts (Python etc.) for installation -## in contrast to setup.py, you can choose the destination -# install(PROGRAMS -# scripts/my_python_script -# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -# ) - -## Mark executables and/or libraries for installation -# install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME} -# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -# ) - -## Mark cpp header files for installation -# install(DIRECTORY include/${PROJECT_NAME}/ -# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} -# FILES_MATCHING PATTERN "*.h" -# PATTERN ".svn" EXCLUDE -# ) - -## Mark other files for installation (e.g. launch and bag files, etc.) -# install(FILES -# # myfile1 -# # myfile2 -# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} -# ) - -############# -## Testing ## -############# - -## Add gtest based cpp test target and link libraries -# catkin_add_gtest(${PROJECT_NAME}-test test/test_wolf_ros.cpp) -# if(TARGET ${PROJECT_NAME}-test) -# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) -# endif() - -## Add folders to be run by python nosetests -# catkin_add_nosetests(test) + wolfcore + ) \ No newline at end of file diff --git a/include/node.h b/include/node.h index 8ba4ef10b6cdf02f64d36710c0bd328af54189f9..8324843dbbc865276bb527563164660e32e5b19a 100644 --- a/include/node.h +++ b/include/node.h @@ -61,7 +61,6 @@ #include "publisher.h" using namespace wolf; -using namespace std; class WolfRosNode {