getting_started:ros
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
getting_started:ros [2021/03/29 15:52] – [Preparations and Building] ursgraf | getting_started:ros [2023/02/09 12:04] (current) – [Interfacing with ROS] ursgraf | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Interfacing with ROS ====== | ====== Interfacing with ROS ====== | ||
- | [[http:// | + | [[http:// |
* [[getting_started: | * [[getting_started: | ||
+ | * [[getting_started: | ||
* [[getting_started: | * [[getting_started: | ||
+ | * [[getting_started: | ||
You can make use of ROS within EEROS in the following two ways. | You can make use of ROS within EEROS in the following two ways. | ||
Line 21: | Line 23: | ||
- | ===== Example for Making your EEROS Application a ROS Node ===== | ||
- | The CMAKE file for the EEROS application using ROS has to be expanded as follows: | ||
- | < | ||
- | cmake_minimum_required(VERSION 3.5.1) | ||
- | project(testProject) | ||
- | |||
- | set(CMAKE_CXX_STANDARD 14) | ||
- | |||
- | ## ROS | ||
- | message(STATUS " | ||
- | find_package( roslib REQUIRED ) | ||
- | if (roslib_FOUND) | ||
- | message( STATUS "-> ROS found" | ||
- | add_definitions(-DROS_FOUND) | ||
- | include_directories( " | ||
- | message( STATUS " | ||
- | list(APPEND ROS_LIBRARIES " | ||
- | find_package( rosconsole REQUIRED) | ||
- | list(APPEND ROS_LIBRARIES " | ||
- | find_package( roscpp REQUIRED ) | ||
- | list(APPEND ROS_LIBRARIES " | ||
- | else() | ||
- | message( STATUS "-> ROS NOT found" | ||
- | endif() | ||
- | |||
- | find_package(EEROS REQUIRED) | ||
- | include_directories(${EEROS_INCLUDE_DIR}; | ||
- | link_directories(${EEROS_LIB_DIR}; | ||
- | |||
- | add_executable(testProject main.cpp) | ||
- | target_link_libraries(testProject eeros ucl ${CMAKE_DL_LIBS} ${ROS_LIBRARIES}) | ||
- | </ | ||
- | |||
- | Your test program might look like | ||
- | <code cpp> | ||
- | #include < | ||
- | #include < | ||
- | #include < | ||
- | | ||
- | int main(int argc, char **argv) { | ||
- | ... | ||
- | eeros:: | ||
- | ros:: | ||
- | log.info() << "ROS node initialized."; | ||
- | signal(SIGINT, | ||
- | ... | ||
- | </ | ||
- | All ROS tools such as '' | ||
- | |||
- | 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. | ||
- | |||
- | ===== Running your Application ===== | ||
- | An EEROS application using ROS needs to be started with super user privileges. Further, | ||
- | ROS needs some system variables, like '' | ||
- | To forward these variables to the super user process, the option //-E// has to be used. | ||
- | < | ||
- | $ sudo -E ./ | ||
- | </ | ||
getting_started/ros.1617025935.txt.gz · Last modified: 2021/03/29 15:52 by ursgraf