-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* initial commit
- Loading branch information
Showing
52 changed files
with
2,714 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
name: C++ CI | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
|
||
jobs: | ||
build-and-test: | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ros:noetic-ros-base | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Setup Environment | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install -y cmake g++ ninja-build | ||
- name: Configure and Build | ||
run: | | ||
mkdir build | ||
cd build | ||
cmake -DBUILD_TESTS=ON -DCATKIN_BUILD_BINARY_PACKAGE=OFF .. | ||
cmake --build . -j8 | ||
- name: Run tests | ||
run: | | ||
cd build | ||
ctest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
.vscode | ||
__pycache__ | ||
*.pyc | ||
*idea | ||
*dist* | ||
*egg-info | ||
devel/ | ||
build/ | ||
*.bag | ||
*.bj | ||
doxygen/ | ||
*cmake-build-debug* | ||
*cmake-build-release* | ||
*cmake-build* | ||
|
||
# Folders | ||
BUILD/ | ||
Debug/ | ||
Realese/ | ||
|
||
# Thirdparty folders which are | ||
# downloaded during build (not submodules) | ||
|
||
# Build results | ||
*.user | ||
|
||
# Prerequisites | ||
*.d | ||
|
||
# Compiled Object files | ||
*.slo | ||
*.lo | ||
*.o | ||
*.obj | ||
|
||
# Precompiled Headers | ||
*.gch | ||
*.pch | ||
|
||
# Compiled Dynamic libraries | ||
*.so | ||
*.dylib | ||
*.dll | ||
|
||
# Compiled Static libraries | ||
*.lai | ||
*.la | ||
*.a | ||
*.lib | ||
|
||
# Executables | ||
*.exe | ||
*.out | ||
*.app | ||
|
||
# OS X specific | ||
*.DS_Store | ||
.DS_Store | ||
.DS_Store? | ||
|
||
install_script.zsh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
cmake_minimum_required(VERSION 3.11) | ||
project(behavior_tree) | ||
|
||
if(BUILD_TESTS) | ||
message(STATUS "Tests building is enabled.") | ||
enable_testing() | ||
endif() | ||
|
||
include(CMakePackageConfigHelpers) | ||
|
||
set(CMAKE_CXX_STANDARD 17) | ||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
set(CMAKE_CXX_EXTENSIONS OFF) | ||
|
||
#################################################################### | ||
## ADD ALL THE SUB-PROJECTS ## | ||
#################################################################### | ||
|
||
add_subdirectory(behavior_tree) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,21 @@ | ||
# behavior_tree | ||
# Behavior Tree Framework Libraries | ||
|
||
Behavior Tree is a framework for writing a control architecture for any mission | ||
execution system. | ||
|
||
## Provided packages | ||
|
||
1. **`evo-behavior-tree`** - behavior tree library package. No dependencies except for STL. | ||
2. **`ros-melodic-evo-behavior-tree`** - ROS wrapper library for the behavior | ||
tree framework. Created as a static library. [to be released] | ||
|
||
> See _behavior-tree_ and _evo-behavior-tree_ folders for more information about | ||
> the libraries and the installation process. | ||
## License | ||
|
||
MIT | ||
|
||
## Maintainers | ||
|
||
- Evgeniy Safronov <[email protected]> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
cmake_minimum_required(VERSION 3.10) | ||
file(STRINGS VERSION CURRENT_VERSION) | ||
project(behavior_tree VERSION ${CURRENT_VERSION}) | ||
|
||
|
||
file(GLOB_RECURSE SOURCES_CPP_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) | ||
file(GLOB_RECURSE SOURCES_C_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c) | ||
|
||
list(APPEND SOURCES_LIBRARY ${SOURCES_C_LIBRARY}) | ||
list(APPEND SOURCES_LIBRARY ${SOURCES_CPP_LIBRARY}) | ||
|
||
add_library(${PROJECT_NAME} SHARED ${SOURCES_LIBRARY}) | ||
|
||
target_include_directories( | ||
${PROJECT_NAME} | ||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> | ||
$<INSTALL_INTERFACE:include/evocargo> | ||
) | ||
|
||
#################################################################### | ||
## INSTALL LIBRARY ## | ||
#################################################################### | ||
|
||
string(TOUPPER ${PROJECT_NAME} COMPONENT_NAME) | ||
string(REPLACE "_" "" COMPONENT_NAME ${COMPONENT_NAME}) | ||
|
||
install( | ||
TARGETS ${PROJECT_NAME} | ||
EXPORT ${PROJECT_NAME}Targets | ||
LIBRARY DESTINATION lib/evocargo | ||
COMPONENT ${COMPONENT_NAME} | ||
RUNTIME DESTINATION bin | ||
COMPONENT ${COMPONENT_NAME} | ||
) | ||
|
||
install( | ||
DIRECTORY include/${PROJECT_NAME} | ||
DESTINATION include/evocargo | ||
COMPONENT ${COMPONENT_NAME} | ||
) | ||
|
||
#################################################################### | ||
## CREATE / INSTALL CMAKE CONFIGS ## | ||
#################################################################### | ||
|
||
configure_package_config_file( | ||
${CMAKE_CURRENT_SOURCE_DIR}/conf/${PROJECT_NAME}Config.cmake.in | ||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake | ||
INSTALL_DESTINATION "lib/cmake/${PROJECT_NAME}" | ||
) | ||
|
||
write_basic_package_version_file( | ||
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" | ||
VERSION ${PROJECT_VERSION} | ||
COMPATIBILITY SameMajorVersion | ||
) | ||
|
||
install( | ||
EXPORT ${PROJECT_NAME}Targets | ||
FILE ${PROJECT_NAME}Targets.cmake | ||
DESTINATION lib/cmake/${PROJECT_NAME} | ||
COMPONENT ${COMPONENT_NAME} | ||
) | ||
|
||
install( | ||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake | ||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake | ||
DESTINATION lib/cmake/${PROJECT_NAME} | ||
COMPONENT ${COMPONENT_NAME} | ||
) | ||
|
||
#################################################################### | ||
## CPACK CONFIGURATION ## | ||
#################################################################### | ||
|
||
set(CPACK_GENERATOR "DEB") | ||
set(CPACK_DEB_COMPONENT_INSTALL ON) | ||
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) | ||
|
||
string(REPLACE "_" "-" DASH_PROJECT_NAME ${PROJECT_NAME}) | ||
|
||
set(CPACK_PACKAGE_NAME ${DASH_PROJECT_NAME}) | ||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) | ||
|
||
set(CPACK_COMPONENTS_ALL ${COMPONENT_NAME}) | ||
set(CPACK_DEBIAN_${COMPONENT_NAME}_PACKAGE_NAME ${DASH_PROJECT_NAME}) | ||
|
||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER | ||
"Evgeniy Safronov <[email protected]>" | ||
) | ||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY | ||
"Behavior Tree framework." | ||
) | ||
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) | ||
set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README.md) | ||
|
||
set(CPACK_OUTPUT_CONFIG_FILE | ||
"${CMAKE_BINARY_DIR}/configs/${PROJECT_NAME}_Config.cmake" | ||
) | ||
|
||
include(CPack) | ||
|
||
#################################################################### | ||
## ASSEMBLE LIBRARY WITH TESTS ## | ||
#################################################################### | ||
|
||
if(BUILD_TESTS) | ||
add_subdirectory(test) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# ROS-independent BehaviorTree library | ||
|
||
Behavior Tree framework for building mission execution systems. | ||
|
||
## Usage example | ||
|
||
Install the library and write your own wrapper on it. | ||
Check out `behavior_tree/test/examples` to understand intended way of creating behavior trees! | ||
|
||
|
||
## Maintainers | ||
|
||
- Evgeniy Safronov <[email protected]> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
1.0.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# This file exports CMake target which should be passed to the | ||
# target_link_libraries command. | ||
|
||
@PACKAGE_INIT@ | ||
|
||
include(CMakeFindDependencyMacro) | ||
|
||
include("${CMAKE_CURRENT_LIST_DIR}/behavior_treeTargets.cmake") | ||
|
||
set (behavior_tree_FOUND 1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#pragma once | ||
|
||
#include "nodes/behavior_node.h" // Ensure correct path to the behavior node header | ||
#include "nodes/status.h" // Include the Status class for handling node statuses | ||
#include <memory> | ||
|
||
namespace evo::behavior { | ||
|
||
/** | ||
* @brief Represents a behavior tree, managing the execution of a hierarchical | ||
* structure of nodes that control decision making and behavior. | ||
*/ | ||
class BehaviorTree { | ||
public: | ||
/** | ||
* @brief Constructs a new BehaviorTree object with a specified root node. | ||
* | ||
* @param root The root node of the behavior tree, where execution starts. | ||
*/ | ||
explicit BehaviorTree(BehaviorPtr root); | ||
|
||
/** | ||
* @brief Default constructor for an empty BehaviorTree, intended for delayed | ||
* initialization. | ||
*/ | ||
BehaviorTree() = default; | ||
|
||
/** | ||
* @brief Sets the root node of the behavior tree. | ||
* | ||
* @param root The root node to set, starting point for tree execution. | ||
*/ | ||
virtual void set_root(BehaviorPtr root); | ||
|
||
/** | ||
* @brief Runs the behavior tree starting from the root node. | ||
* | ||
* @return Status The status of the behavior tree execution. Returns | ||
* Status::Failure if no root is set. | ||
*/ | ||
Status run(); | ||
|
||
/** | ||
* @brief Virtual destructor to ensure proper cleanup in derived classes. | ||
*/ | ||
virtual ~BehaviorTree() = default; | ||
|
||
private: | ||
/// The root node of the behavior tree. | ||
BehaviorPtr root_; | ||
}; | ||
|
||
} // namespace evo::behavior |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#pragma once | ||
|
||
#include "behavior_tree.h" | ||
#include "bt_factory.h" | ||
#include "nodes/status.h" |
Oops, something went wrong.