Skip to content

Commit 344a6b3

Browse files
committed
add mbf prev/next client
1 parent e9ad044 commit 344a6b3

File tree

5 files changed

+92
-19
lines changed

5 files changed

+92
-19
lines changed

advanced/CMakeLists.txt

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,23 @@ project(mbf_advanced)
44
set(CMAKE_CXX_STANDARD 14)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66

7-
find_package(BehaviorTreeV3)
7+
find_package(BehaviorTreeV3 REQUIRED)
8+
89
find_package(catkin REQUIRED COMPONENTS
910
roscpp
1011
geometry_msgs
1112
actionlib
1213
)
1314

14-
###################################
15-
## catkin specific configuration ##
16-
###################################
17-
1815
catkin_package(
19-
# DEPENDS move_base_flex
16+
DEPENDS move_base_flex
2017
)
2118

2219
catkin_install_python(
23-
PROGRAMS scripts/circle_smach.py
20+
PROGRAMS scripts/circle_smach.py scripts/pytrees.py scripts/mbf_client.py
2421
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
2522
)
2623

27-
add_executable(behavior_tree src/behavior_tree.cpp)
28-
target_include_directories(behavior_tree PRIVATE include ${catkin_INCLUDE_DIRS})
29-
target_link_libraries(behavior_tree BT::behaviortree_cpp_v3 ${catkin_LIBRARIES})
30-
target_compile_definitions(behavior_tree
31-
PRIVATE
32-
BT_XML_PATH="${PROJECT_SOURCE_DIR}/param/behavior_tree.xml"
33-
POSE_PATH="${PROJECT_SOURCE_DIR}/param/poses.txt"
34-
)
35-
36-
add_dependencies(behavior_tree ${behavior_tree_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
37-
3824
add_executable(mbf_cpp_client_node src/mbf_cpp_client_node.cpp)
3925
target_include_directories(mbf_cpp_client_node PRIVATE include ${catkin_INCLUDE_DIRS})
4026
target_link_libraries(mbf_cpp_client_node ${catkin_LIBRARIES})

advanced/include/mbf_advanced/mbf_cpp_client.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ struct MBFClient
7373
{
7474
auto result = log_move(*prev_move_);
7575
it_ = prev_move_+1;
76+
prev_move_ = it_-1;
7677
return result;
7778
}
7879
else

advanced/package.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package format="2">
33
<name>mbf_advanced</name>
44
<version>0.0.0</version>
5-
<description>Minimal example for move base flex and turtlebot</description>
5+
<description>Minimal examples for move base flex and turtlebot</description>
66

77
<maintainer email="[email protected]">Julian Gaal</maintainer>
88

@@ -17,4 +17,6 @@
1717
<exec_depend>clear_costmap_recovery</exec_depend>
1818
<exec_depend>rotate_recovery</exec_depend>
1919
<exec_depend>behaviortree_cpp_v3</exec_depend>
20+
<exec_depend>py_trees_ros</exec_depend>
21+
<exec_depend>moveback_recovery</exec_depend>
2022
</package>

advanced/scripts/mbf_client.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import rospy
2+
import mbf_msgs.msg as mbf_msgs
3+
4+
def create_goal(x, y, z, xx, yy, zz, ww):
5+
goal = mbf_msgs.MoveBaseGoal()
6+
goal.target_pose.header.frame_id = "map"
7+
goal.target_pose.header.stamp = rospy.Time.now()
8+
goal.target_pose.pose.position.x = x
9+
goal.target_pose.pose.position.y = y
10+
goal.target_pose.pose.position.z = z
11+
goal.target_pose.pose.orientation.x = xx
12+
goal.target_pose.pose.orientation.y = yy
13+
goal.target_pose.pose.orientation.z = zz
14+
goal.target_pose.pose.orientation.w = ww
15+
return goal
16+
17+
18+
def goal_generator():
19+
target_poses = [
20+
create_goal(-1.75, 0.74, 0, 0, 0, 0.539, 0.843),
21+
create_goal(-0.36, 1.92, 0, 0, 0, -0.020, 0.999),
22+
create_goal(0.957, 1.60, 0, 0, 0, -0.163, 0.987),
23+
create_goal(1.8741, 0.3830, 0, 0, 0, -0.70, 0.711),
24+
create_goal(1.752, -0.928, 0, 0, 0, -0.856, 0.517),
25+
create_goal(0.418, -2.116, 0, 0, 0, 0.998, 0.0619),
26+
create_goal(-0.775, -1.80, 0, 0, 0, 0.954, 0.300),
27+
create_goal(-1.990, -0.508, 0, 0, 0, -0.112, 0.999)
28+
]
29+
30+
for target_pose in target_poses:
31+
yield target_pose
32+
33+
34+
class Goals:
35+
def __init__(self):
36+
self.goals = [
37+
create_goal(-1.75, 0.74, 0, 0, 0, 0.539, 0.843),
38+
create_goal(-0.36, 1.92, 0, 0, 0, -0.020, 0.999),
39+
create_goal(0.957, 1.60, 0, 0, 0, -0.163, 0.987),
40+
create_goal(1.8741, 0.3830, 0, 0, 0, -0.70, 0.711),
41+
create_goal(1.752, -0.928, 0, 0, 0, -0.856, 0.517),
42+
create_goal(0.418, -2.116, 0, 0, 0, 0.998, 0.0619),
43+
create_goal(-0.775, -1.80, 0, 0, 0, 0.954, 0.300),
44+
create_goal(-1.990, -0.508, 0, 0, 0, -0.112, 0.999)
45+
]
46+
47+
self.iterator = 0
48+
self.next_called = False
49+
50+
def next(self):
51+
goal = self.goals[self.iterator]
52+
self.iterator += 1
53+
self.next_called = True
54+
55+
if self.iterator > len(self.goals)-1:
56+
raise IndexError
57+
58+
return goal
59+
60+
def prev(self):
61+
if self.next_called:
62+
self.iterator -= 2
63+
self.next_called = False
64+
else:
65+
self.iterator -= 1
66+
67+
if self.iterator < 0:
68+
raise IndexError
69+
70+
return self.goals[self.iterator]
71+
72+
class MBFClient:
73+
def __init__(self):
74+
self.goals = Goals()
75+
76+
def next(self):
77+
return self.goals.next()
78+
79+
def prev(self):
80+
return self.goals.prev()
81+
82+
if __name__ == '__main__':
83+
rospy.init_node("move_base_flex_client")
84+
mbf = MBFClient()

advanced/scripts/pytrees.py

Whitespace-only changes.

0 commit comments

Comments
 (0)