Skip to content

Commit ee91a1f

Browse files
MikeWrockJWhitleyWork
authored andcommitted
Added example behavior and interface behaviors loader
Former-commit-id: 73feb3b
1 parent 0444715 commit ee91a1f

17 files changed

Lines changed: 80 additions & 1 deletion

File tree

src/example_behaviors/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ find_package(moveit_studio_common REQUIRED)
55
find_package(example_interfaces REQUIRED)
66
moveit_studio_package()
77

8-
set(THIS_PACKAGE_INCLUDE_DEPENDS cartesian_planning moveit_studio_behavior
8+
set(THIS_PACKAGE_INCLUDE_DEPENDS cartesian_planning geometry_msgs moveit_studio_behavior
99
moveit_studio_behavior_interface pluginlib moveit_studio_vision
1010
moveit_studio_vision_msgs PCL pcl_conversions pcl_ros example_interfaces)
1111
foreach(package IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
@@ -18,6 +18,7 @@ add_library(
1818
src/example_add_two_ints_service_client.cpp
1919
src/example_convert_mtc_solution_to_joint_trajectory.cpp
2020
src/example_delayed_message.cpp
21+
src/example_get_pose_stamped_from_topic.cpp
2122
src/example_get_string_from_topic.cpp
2223
src/example_fibonacci_action_client.cpp
2324
src/example_hello_world.cpp
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#pragma once
2+
3+
#include <moveit_studio_behavior_interface/get_message_from_topic.hpp>
4+
#include <geometry_msgs/msg/pose_stamped.hpp>
5+
6+
namespace example_behaviors
7+
{
8+
class ExampleGetPoseStampedFromTopic final
9+
: public moveit_studio::behaviors::GetMessageFromTopicBehaviorBase<geometry_msgs::msg::PoseStamped>
10+
{
11+
public:
12+
ExampleGetPoseStampedFromTopic(const std::string& name, const BT::NodeConfiguration& config,
13+
const std::shared_ptr<moveit_studio::behaviors::BehaviorContext>& shared_resources);
14+
15+
static BT::PortsList providedPorts();
16+
17+
static BT::KeyValueVector metadata();
18+
19+
private:
20+
std::shared_future<tl::expected<bool, std::string>>& getFuture() override
21+
{
22+
return future_;
23+
}
24+
25+
std::shared_future<tl::expected<bool, std::string>> future_;
26+
};
27+
} // namespace example_behaviors

src/example_behaviors/package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
<depend>moveit_studio_behavior_interface</depend>
1717
<depend>example_interfaces</depend>
18+
<depend>geometry_msgs</depend>
1819
<depend>perception_pcl</depend>
1920
<depend>moveit_ros_planning_interface</depend>
2021
<depend>moveit_studio_vision_msgs</depend>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <example_behaviors/example_get_pose_stamped_from_topic.hpp>
2+
3+
#include <moveit_studio_behavior_interface/impl/get_message_from_topic_impl.hpp>
4+
5+
namespace example_behaviors
6+
{
7+
// Mirrors the PoseStamped specialization produced by generate_topic_interface_behaviors.py so developers
8+
// can see the generated pattern inside example_behaviors.
9+
ExampleGetPoseStampedFromTopic::ExampleGetPoseStampedFromTopic(
10+
const std::string& name, const BT::NodeConfiguration& config,
11+
const std::shared_ptr<moveit_studio::behaviors::BehaviorContext>& shared_resources)
12+
: GetMessageFromTopicBehaviorBase<geometry_msgs::msg::PoseStamped>(name, config, shared_resources)
13+
{
14+
}
15+
16+
BT::PortsList ExampleGetPoseStampedFromTopic::providedPorts()
17+
{
18+
return BT::PortsList({
19+
BT::InputPort<std::string>(kPortIDTopicName, "/pose_stamped",
20+
"Topic that publishes <code>geometry_msgs::msg::PoseStamped</code> messages."),
21+
BT::OutputPort<geometry_msgs::msg::PoseStamped>(kPortIDMessageOut, "{pose_stamped}",
22+
"Output pose from the subscribed topic."),
23+
});
24+
}
25+
26+
BT::KeyValueVector ExampleGetPoseStampedFromTopic::metadata()
27+
{
28+
return { { "subcategory", "Example Behaviors" },
29+
{ "description", "Capture a pose stamped message from a topic and store it on the blackboard." } };
30+
}
31+
32+
} // namespace example_behaviors
33+
34+
template class moveit_studio::behaviors::GetMessageFromTopicBehaviorBase<geometry_msgs::msg::PoseStamped>;

src/example_behaviors/src/register_behaviors.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <example_behaviors/example_create_string_msg.hpp>
1010
#include <example_behaviors/example_delayed_message.hpp>
1111
#include <example_behaviors/example_fibonacci_action_client.hpp>
12+
#include <example_behaviors/example_get_pose_stamped_from_topic.hpp>
1213
#include <example_behaviors/example_get_string_from_topic.hpp>
1314
#include <example_behaviors/example_hello_world.hpp>
1415
#include <example_behaviors/example_ndt_registration.hpp>
@@ -36,6 +37,9 @@ class ExampleBehaviorsLoader : public moveit_studio::behaviors::SharedResourcesN
3637
shared_resources);
3738
moveit_studio::behaviors::registerBehavior<ExampleGetStringFromTopic>(factory, "ExampleGetStringFromTopic",
3839
shared_resources);
40+
moveit_studio::behaviors::registerBehavior<ExampleGetPoseStampedFromTopic>(factory,
41+
"ExampleGetPoseStampedFromTopic",
42+
shared_resources);
3943
moveit_studio::behaviors::registerBehavior<ExampleAddTwoIntsServiceClient>(
4044
factory, "ExampleAddTwoIntsServiceClient", shared_resources);
4145
moveit_studio::behaviors::registerBehavior<ExampleFibonacciActionClient>(factory, "ExampleFibonacciActionClient",

src/factory_sim/config/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ objectives:
133133
# Add additional plugin loaders as needed.
134134
core:
135135
- "moveit_studio::behaviors::ConverterBehaviorsLoader"
136+
- "moveit_studio::behaviors::TopicInterfaceBehaviorsLoader"
136137
- "moveit_studio::behaviors::CoreBehaviorsLoader"
137138
- "moveit_studio::behaviors::MTCCoreBehaviorsLoader"
138139
- "moveit_studio::behaviors::ServoBehaviorsLoader"

src/grinding_sim/config/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ objectives:
129129
- "moveit_studio::behaviors::ServoBehaviorsLoader"
130130
- "moveit_studio::behaviors::VisionBehaviorsLoader"
131131
- "moveit_studio::behaviors::ConverterBehaviorsLoader"
132+
- "moveit_studio::behaviors::TopicInterfaceBehaviorsLoader"
132133
# Specify source folder for objectives
133134
# [Required]
134135
objective_library_paths:

src/hangar_sim/config/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ objectives:
7070
- "moveit_studio::behaviors::ServoBehaviorsLoader"
7171
- "moveit_studio::behaviors::VisionBehaviorsLoader"
7272
- "moveit_studio::behaviors::ConverterBehaviorsLoader"
73+
- "moveit_studio::behaviors::TopicInterfaceBehaviorsLoader"
7374
# Specify source folder for objectives
7475
# [Required]
7576
objective_library_paths:

src/lab_sim/config/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ objectives:
5454
- "moveit_studio::behaviors::ServoBehaviorsLoader"
5555
- "moveit_studio::behaviors::VisionBehaviorsLoader"
5656
- "moveit_studio::behaviors::ConverterBehaviorsLoader"
57+
- "moveit_studio::behaviors::TopicInterfaceBehaviorsLoader"
5758
- "moveit_studio::behaviors::MujocoBehaviorsLoader"
5859
# Specify source folder for objectives
5960
# [Required]

src/moveit_pro_franka_configs/dual_arm_sim/config/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ objectives:
9999
- "moveit_studio::behaviors::ServoBehaviorsLoader"
100100
- "moveit_studio::behaviors::VisionBehaviorsLoader"
101101
- "moveit_studio::behaviors::ConverterBehaviorsLoader"
102+
- "moveit_studio::behaviors::TopicInterfaceBehaviorsLoader"
102103
# Specify source folder for objectives
103104
# [Required]
104105
objective_library_paths:

0 commit comments

Comments
 (0)