-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgroot_turtlebot.btproj
More file actions
113 lines (113 loc) · 8.27 KB
/
Copy pathgroot_turtlebot.btproj
File metadata and controls
113 lines (113 loc) · 8.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4" project_name="Project">
<include path="ros2_ws/src/behavior_trees/move_arm_tree.xml"/>
<include path="ros2_ws/src/bt_execution_server/behavior_trees/my_tree.xml"/>
<include path="ros2_ws/src/get_workpiece_position_client/src/bt_get_workpiece_position_client_models.xml"/>
<include path="ros2_ws/src/navigation_ctrl/src/bt_navigation_ctrl_models.xml"/>
<include path="ros2_ws/src/open_manipulator_x_control/src/bt_arm_control_models.xml"/>
<!-- Description of Node Models (used by Groot) -->
<TreeNodesModel>
<Condition ID="ArmIsPositionReachable">
<input_port name="goal_point" default="{product_position}" type="geometry_msgs::msg::Point_<std::allocator<void> >">The goal point to check if it is reachable</input_port>
<input_port name="max_reach" default="0.350000" type="double">The max reach of the arm in meters</input_port>
</Condition>
<SubTree ID="BackUpAndTurn" editable="true">
<input_port name="distance" default="{distance}">The distance to back up in m</input_port>
<input_port name="turn_yaw" default="{turn_yaw}">The yaw to turn in degrees</input_port>
</SubTree>
<Action ID="CreatePoint">
<output_port name="point" type="geometry_msgs::msg::Point_<std::allocator<void> >">The point that was created</output_port>
<input_port name="z" type="float">The z position of the point</input_port>
<input_port name="y" type="float">The y position of the point</input_port>
<input_port name="x" type="float">The x position of the point</input_port>
</Action>
<SubTree ID="FindProduct" editable="true">
<input_port name="product_color" default="{product_color}">The product color to search for</input_port>
<output_port name="product_position" default="{product_position}">The position of the detected product</output_port>
</SubTree>
<SubTree ID="GetProductPosition" editable="true">
<input_port name="product_color" default="{product_color}">The product color to search for</input_port>
<output_port name="product_position" default="{product_position}">The position of the detected product</output_port>
</SubTree>
<Action ID="GetWorkpiecePositionClient">
<input_port name="product_color" type="std::string">The color of the product to select</input_port>
<output_port name="product_point" type="geometry_msgs::msg::Point_<std::allocator<void> >">The positions of the selected product</output_port>
</Action>
<SubTree ID="GoToArmReach" editable="true">
<input_port name="product_color" default="{product_color}">The product color to search for</input_port>
</SubTree>
<SubTree ID="GoToPoseAndArmReach" editable="true">
<input_port name="pose" default="{pose}">The Pose to first move to.</input_port>
<input_port name="yaw" default="{yaw}">The amount of turn after reaching the pose.</input_port>
<input_port name="product_color" default="{product_color}">The color of the product to look for.</input_port>
</SubTree>
<SubTree ID="GoToPoseAndTurn" editable="true">
<input_port name="pose" default="{pose}"><x;y;yaw>The Pose to move to before turning.</input_port>
<input_port name="orientation_2">The orientation to turn after move is completed</input_port>
</SubTree>
<Action ID="GripperClose"/>
<Action ID="GripperOpen"/>
<Action ID="MoveArmToHome"/>
<Action ID="MoveArmToPosition">
<input_port name="goal_point" type="geometry_msgs::msg::Point_<std::allocator<void> >">The goal point to move the arm to</input_port>
</Action>
<Action ID="NavCmdDriveBackward">
<input_port name="distance" type="double">distanceThe distance to drive in m</input_port>
<input_port name="speed" default="0.100000" type="double">The speed drive up at</input_port>
<input_port name="time_allowance" default="10" type="int">The time allowed to reach the goal in seconds</input_port>
<output_port name="final_distance" default="{final_distance}" type="double">The final distance, can be less than distance in case of FAILURE</output_port>
</Action>
<Action ID="NavCmdDriveForward">
<input_port name="distance" type="double">distanceThe distance to drive in m</input_port>
<input_port name="speed" default="0.100000" type="double">The speed drive up at</input_port>
<input_port name="time_allowance" default="10" type="int">The time allowed to reach the goal in seconds</input_port>
<output_port name="final_distance" default="{final_distance}" type="double">The final distance, can be less than distance in case of FAILURE</output_port>
</Action>
<Action ID="NavCmdGetMoveToPoint">
<input_port name="point" type="geometry_msgs::msg::Point_<std::allocator<void> >">The point to move to</input_port>
<input_port name="gap_to_point" type="double">How much gap to leave to the point</input_port>
<output_port name="distance" type="double">The distance that needs to be traveled</output_port>
<output_port name="orientation" type="double">The orientation to spin to before traveling</output_port>
</Action>
<Action ID="NavCmdGoToPose">
<input_port name="pose" default="{pose}" type="std::string">The x, y, and yaw of the goal pose, separated by semicolons</input_port>
</Action>
<Action ID="NavCmdKeepoutToggle">
<input_port name="enable" default="true" type="bool">true to enable the keepout zone, false to disable</input_port>
</Action>
<Condition ID="NavCmdSetInitPose">
<input_port name="x" default="0.150000" type="double">The x position of the initial pose</input_port>
<input_port name="y" default="0.000000" type="double">The y position of the initial pose</input_port>
<input_port name="orientation" default="0.000000" type="double">The orientation of the initial pose in degrees</input_port>
</Condition>
<Action ID="NavCmdTurn">
<input_port name="turn_yaw" default="{turn_yaw}" type="double">The angular distance to spin in degrees</input_port>
<input_port name="time_allowance" default="10" type="int">The time allowed to reach the goal in seconds</input_port>
<output_port name="final_yaw" default="{final_yaw}" type="double">The final yaw after spinning, can be less than target_yaq in case of FAILURE</output_port>
</Action>
<Action ID="NavCmdWaitUntilNav2Active">
<input_port name="timeout" default="10" type="int">The time to wait for the navigation2 to become active in seconds</input_port>
</Action>
<SubTree ID="PickProduct" editable="true">
<input_port name="product_color" default="{product_color}">The product color to search for</input_port>
</SubTree>
<Action ID="PortLogger">
<input_port name="message" type="BT::AnyTypeAllowed">The message to log</input_port>
</Action>
<Condition ID="PublishPoint">
<input_port name="product_positions" type="turtlebot_interfaces::msg::ProductPositions_<std::allocator<void> >">The positions to publish</input_port>
<input_port name="topic_name" type="std::string">The topic to publish to</input_port>
</Condition>
<Action ID="QueueDouble">
<output_port name="value" type="double"/>
<input_port name="queue" type="std::string_view">The queue of values to output, will loop through the values</input_port>
</Action>
<Condition ID="SubscribePoint">
<output_port name="point" type="geometry_msgs::msg::Point_<std::allocator<void> >">The point that was received from the topic</output_port>
<input_port name="topic_name" type="std::string">The topic to subscribe to</input_port>
</Condition>
<SubTree ID="TestTreeSub" editable="true">
<output_port name="positions" default="{position}"/>
</SubTree>
</TreeNodesModel>
</root>