getting_started:ros_example
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
getting_started:ros_example [2023/02/27 15:04] – ursgraf | getting_started:ros_example [2023/02/27 16:46] (current) – [Working with ROS2] ursgraf | ||
---|---|---|---|
Line 15: | Line 15: | ||
find_package( roslib REQUIRED ) | find_package( roslib REQUIRED ) | ||
if (roslib_FOUND) | if (roslib_FOUND) | ||
- | message( STATUS "-> ROS found" | + | |
- | add_definitions(-DROS_FOUND) | + | add_definitions(-DROS_FOUND) |
- | include_directories( " | + | include_directories( " |
- | message( STATUS " | + | message( STATUS " |
- | list(APPEND ROS_LIBRARIES " | + | list(APPEND ROS_LIBRARIES " |
- | find_package( rosconsole REQUIRED) | + | find_package( rosconsole REQUIRED) |
- | list(APPEND ROS_LIBRARIES " | + | list(APPEND ROS_LIBRARIES " |
- | find_package( roscpp REQUIRED ) | + | find_package( roscpp REQUIRED ) |
- | list(APPEND ROS_LIBRARIES " | + | list(APPEND ROS_LIBRARIES " |
+ | add_definitions(-DUSE_ROS) | ||
else() | else() | ||
- | message( STATUS "-> ROS NOT found" | + | |
endif() | endif() | ||
Line 55: | Line 56: | ||
The CMake file for the EEROS application using ROS2 has to be expanded as follows: | The CMake file for the EEROS application using ROS2 has to be expanded as follows: | ||
< | < | ||
- | cmake_minimum_required(VERSION 3.5.1) | + | cmake_minimum_required(VERSION 3.10) |
project(testProject) | project(testProject) | ||
- | + | ||
set(CMAKE_CXX_STANDARD 14) | set(CMAKE_CXX_STANDARD 14) | ||
## ROS | ## ROS | ||
- | message(STATUS " | + | message(STATUS " |
- | find_package( rclcpp REQUIRED ) | + | find_package(rclcpp REQUIRED) |
if (rclcpp_FOUND) | if (rclcpp_FOUND) | ||
- | message( STATUS "-> ROS2 found" | + | |
- | add_definitions(-DROS2_FOUND) | + | add_definitions(-DROS2_FOUND) |
- | include_directories( " | + | include_directories( " |
- | message( STATUS " | + | message(STATUS " |
- | list(APPEND ROS_LIBRARIES " | + | list(APPEND ROS_LIBRARIES " |
- | find_package( rosconsole | + | find_package(rosconsole |
- | list(APPEND ROS_LIBRARIES " | + | list(APPEND ROS_LIBRARIES " |
+ | add_definitions(-DUSE_ROS2) | ||
else() | else() | ||
- | message( STATUS "-> ROS2 NOT found" | + | |
endif() | endif() | ||
find_package(EEROS REQUIRED) | find_package(EEROS REQUIRED) | ||
- | include_directories(${EEROS_INCLUDE_DIR}) | + | |
- | link_directories(${EEROS_LIB_DIR}) | + | |
- | + | ||
add_executable(testProject main.cpp) | add_executable(testProject main.cpp) | ||
- | target_link_libraries(testProject eeros ${EEROS_LIBS} ${ROS_LIBRARIES}) | + | target_link_libraries(testProject |
</ | </ | ||
Line 86: | Line 86: | ||
<code cpp> | <code cpp> | ||
#include < | #include < | ||
- | #include <ros/ros.h> | + | #include <rclcpp/rclcpp.hpp> |
#include < | #include < | ||
| | ||
Line 94: | Line 94: | ||
if (node != nullptr) log.info() << "ROS node initialized: | if (node != nullptr) log.info() << "ROS node initialized: | ||
signal(SIGINT, | signal(SIGINT, | ||
+ | ... | ||
+ | ControlSystem cs(node, dt); | ||
... | ... | ||
</ | </ | ||
+ | |||
+ | When defining a control system which uses ROS subscriber or publisher blocks, you have to pass this node to them. | ||
+ | |||
All ROS tools such as '' | All ROS tools such as '' | ||
If you want to register a signal handler, e.g. for shutting down a system (see [[getting_started: | If you want to register a signal handler, e.g. for shutting down a system (see [[getting_started: | ||
The ROS node will properly shut down as soon as the last node handler is destroyed when going out of scope. | The ROS node will properly shut down as soon as the last node handler is destroyed when going out of scope. |
getting_started/ros_example.1677506646.txt.gz · Last modified: 2023/02/27 15:04 by ursgraf