Skip to content
This repository has been archived by the owner on Aug 23, 2022. It is now read-only.

Commit

Permalink
composable mode
Browse files Browse the repository at this point in the history
  • Loading branch information
Ar-Ray-code committed Apr 8, 2022
1 parent 983d862 commit f55572f
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 3 deletions.
29 changes: 29 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,38 @@ find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(std_msgs REQUIRED)
find_package(rclcpp_components REQUIRED)

include_directories(
include/ps_ros2_common
)

# add library ---------------------------------------------------------------
add_library(ps_ros2_common SHARED
src/example_joy.cpp
)
rclcpp_components_register_nodes(ps_ros2_common
"ps_ros2_common::example_joy")
target_compile_options(ps_ros2_common PUBLIC -Wall)

target_include_directories(ps_ros2_common PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)

ament_target_dependencies(ps_ros2_common
rclcpp
rclcpp_components
sensor_msgs
std_msgs
)

install(TARGETS ps_ros2_common
EXPORT export_${PROJECT_NAME}
DESTINATION lib
)

# joy_test executable -------------------------------------------------------
add_executable(joy_test
src/example_joy.cpp
)
Expand All @@ -31,8 +58,10 @@ ament_target_dependencies(joy_test
rclcpp
sensor_msgs
std_msgs
rclcpp_components
)

# testing --------------------------------------------------------------------
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
Expand Down
31 changes: 31 additions & 0 deletions launch/test_composable.launch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from launch import LaunchDescription
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode


def generate_launch_description():
"""Generate launch file."""

component = ComposableNodeContainer(
name='joy_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='ps_ros2_common',
plugin='ps_ros2_common::example_joy',
name='joy_common_comp',
),
ComposableNode(
package='joy',
plugin='joy::Joy',
name='joy_node_comp',
),
],
output='screen',
)

return LaunchDescription([
component
])
14 changes: 11 additions & 3 deletions src/example_joy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ using namespace ps4;
using namespace ps3;
#endif

namespace ps_ros2_common {

class example_joy : public rclcpp::Node, public ps
{
public:
Expand Down Expand Up @@ -69,8 +71,8 @@ class example_joy : public rclcpp::Node, public ps
pub_int->publish(send_data);
}

example_joy(const std::string name, const rclcpp::NodeOptions & options)
: Node(name, options)
example_joy(const rclcpp::NodeOptions & options)
: Node("joy_test", options)
{
using namespace std::chrono_literals;
sub_joy =
Expand All @@ -81,11 +83,17 @@ class example_joy : public rclcpp::Node, public ps
}
};

} // namespace ps_ros2_common

#include <rclcpp_components/register_node_macro.hpp>
RCLCPP_COMPONENTS_REGISTER_NODE(ps_ros2_common::example_joy)

int main(int argc, char ** argv)
{
using namespace ps_ros2_common;
rclcpp::init(argc, argv);
rclcpp::NodeOptions options;
auto node = std::make_shared<example_joy>("joy_test", options);
auto node = std::make_shared<example_joy>(options);

rclcpp::spin(node);
rclcpp::shutdown();
Expand Down

0 comments on commit f55572f

Please sign in to comment.