hpp-tutorial 9.0.0__0-py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cmeel.prefix/include/hpp/tutorial/config.hh +94 -0
- cmeel.prefix/include/hpp/tutorial/deprecated.hh +56 -0
- cmeel.prefix/include/hpp/tutorial/warning.hh +35 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/cxx-standard.cmake +193 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/hpp_tutorialConfig.cmake +209 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/hpp_tutorialConfigVersion.cmake +65 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/hpp_tutorialTargets.cmake +102 -0
- cmeel.prefix/lib/pkgconfig/hpp_tutorial.pc +22 -0
- cmeel.prefix/share/ament_index/resource_index/packages/hpp_tutorial +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/auf_saeule_bei_shop.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/ganz_links_neben_roboterplakat.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/ganz_links_vorn_bei_biolab.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/ganz_rechts_neben_kuecheninsel.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/hinter_shopschraenken_an_saeule.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/mittig_neben_roboterplakat.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/sink.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/stove.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper2.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper_ai_unihb.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper_project_logos.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/models/meshes/glasses/__Color_A05_4.png +0 -0
- cmeel.prefix/share/hpp_tutorial/hook/ament_prefix_path.dsv +1 -0
- cmeel.prefix/share/hpp_tutorial/hook/python_path.dsv +1 -0
- cmeel.prefix/share/hpp_tutorial/launch/config.rviz +475 -0
- cmeel.prefix/share/hpp_tutorial/launch/tutorial_7_launch.py +124 -0
- cmeel.prefix/share/hpp_tutorial/launch/tutorial_8_launch.py +193 -0
- cmeel.prefix/share/hpp_tutorial/meshes/box.dae +601 -0
- cmeel.prefix/share/hpp_tutorial/meshes/drill.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/base_link.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_1.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_2.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_3.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_4.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_5.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_6.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/base_link.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_1.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_2.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_3.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_4.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_5.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_6.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/package.xml +20 -0
- cmeel.prefix/share/hpp_tutorial/srdf/box.srdf +13 -0
- cmeel.prefix/share/hpp_tutorial/srdf/cup.srdf +22 -0
- cmeel.prefix/share/hpp_tutorial/srdf/door.srdf +14 -0
- cmeel.prefix/share/hpp_tutorial/srdf/fr3.srdf +92 -0
- cmeel.prefix/share/hpp_tutorial/srdf/ground.srdf +8 -0
- cmeel.prefix/share/hpp_tutorial/srdf/kitchen_area.srdf +11770 -0
- cmeel.prefix/share/hpp_tutorial/srdf/panda.srdf +76 -0
- cmeel.prefix/share/hpp_tutorial/srdf/rod.srdf +2 -0
- cmeel.prefix/share/hpp_tutorial/srdf/staubli-drill.srdf +14 -0
- cmeel.prefix/share/hpp_tutorial/srdf/table.srdf +16 -0
- cmeel.prefix/share/hpp_tutorial/tutorial_7/controllers.yaml +28 -0
- cmeel.prefix/share/hpp_tutorial/tutorial_8/controllers.yaml +44 -0
- cmeel.prefix/share/hpp_tutorial/urdf/box.urdf +26 -0
- cmeel.prefix/share/hpp_tutorial/urdf/box_color.urdf +16 -0
- cmeel.prefix/share/hpp_tutorial/urdf/cup.urdf +26 -0
- cmeel.prefix/share/hpp_tutorial/urdf/door.urdf +111 -0
- cmeel.prefix/share/hpp_tutorial/urdf/fr3.urdf +452 -0
- cmeel.prefix/share/hpp_tutorial/urdf/ground.urdf +20 -0
- cmeel.prefix/share/hpp_tutorial/urdf/kitchen_area.urdf +4729 -0
- cmeel.prefix/share/hpp_tutorial/urdf/kitchen_area_obstacle.urdf +4729 -0
- cmeel.prefix/share/hpp_tutorial/urdf/obstacle.urdf +18 -0
- cmeel.prefix/share/hpp_tutorial/urdf/rod.urdf +19 -0
- cmeel.prefix/share/hpp_tutorial/urdf/square-plate.urdf +17 -0
- cmeel.prefix/share/hpp_tutorial/urdf/staubli-drill.urdf +254 -0
- cmeel.prefix/share/hpp_tutorial/urdf/table.urdf +160 -0
- hpp_tutorial-9.0.0.dist-info/METADATA +36 -0
- hpp_tutorial-9.0.0.dist-info/RECORD +74 -0
- hpp_tutorial-9.0.0.dist-info/WHEEL +6 -0
- hpp_tutorial-9.0.0.dist-info/licenses/LICENSE +24 -0
- hpp_tutorial-9.0.0.dist-info/top_level.txt +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""Launch Franka fr3 in Gazebo with a joint_trajectory_controller for HPP tutorial 6.
|
|
2
|
+
|
|
3
|
+
Usage (inside the docker container):
|
|
4
|
+
ros2 launch hpp_tutorial tutorial_7/launch_sim.py
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
|
|
9
|
+
import xacro
|
|
10
|
+
from ament_index_python.packages import get_package_share_directory
|
|
11
|
+
from launch import LaunchContext, LaunchDescription
|
|
12
|
+
from launch.actions import (
|
|
13
|
+
DeclareLaunchArgument,
|
|
14
|
+
IncludeLaunchDescription,
|
|
15
|
+
OpaqueFunction,
|
|
16
|
+
)
|
|
17
|
+
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
|
18
|
+
from launch.substitutions import LaunchConfiguration
|
|
19
|
+
from launch_ros.actions import Node
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def get_robot_description_and_controllers(context: LaunchContext, robot_type):
|
|
23
|
+
robot_type_str = context.perform_substitution(robot_type)
|
|
24
|
+
|
|
25
|
+
tutorial_dir = os.path.join(
|
|
26
|
+
get_package_share_directory("hpp_tutorial"), "tutorial_7"
|
|
27
|
+
)
|
|
28
|
+
controllers_yaml = os.path.join(tutorial_dir, "controllers.yaml")
|
|
29
|
+
|
|
30
|
+
franka_xacro = os.path.join(
|
|
31
|
+
get_package_share_directory("franka_gazebo_bringup"),
|
|
32
|
+
"urdf",
|
|
33
|
+
"franka_arm.gazebo.xacro",
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
robot_description_xml = xacro.process_file(
|
|
37
|
+
franka_xacro,
|
|
38
|
+
mappings={
|
|
39
|
+
"robot_type": robot_type_str,
|
|
40
|
+
"hand": "false",
|
|
41
|
+
"ros2_control": "true",
|
|
42
|
+
"gazebo": "true",
|
|
43
|
+
"ee_id": "franka_hand",
|
|
44
|
+
},
|
|
45
|
+
).toxml()
|
|
46
|
+
|
|
47
|
+
# Replace the Franka default controllers YAML with our tutorial controllers
|
|
48
|
+
franka_controllers = os.path.join(
|
|
49
|
+
get_package_share_directory("franka_gazebo_bringup"),
|
|
50
|
+
"config",
|
|
51
|
+
"franka_gazebo_controllers.yaml",
|
|
52
|
+
)
|
|
53
|
+
robot_description_xml = robot_description_xml.replace(
|
|
54
|
+
franka_controllers, controllers_yaml
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
robot_state_publisher = Node(
|
|
58
|
+
package="robot_state_publisher",
|
|
59
|
+
executable="robot_state_publisher",
|
|
60
|
+
output="both",
|
|
61
|
+
parameters=[{"robot_description": robot_description_xml}],
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# Spawn controllers using ros2_control spawner
|
|
65
|
+
spawn_jsb = Node(
|
|
66
|
+
package="controller_manager",
|
|
67
|
+
executable="spawner",
|
|
68
|
+
arguments=["joint_state_broadcaster"],
|
|
69
|
+
output="screen",
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
spawn_jtc = Node(
|
|
73
|
+
package="controller_manager",
|
|
74
|
+
executable="spawner",
|
|
75
|
+
arguments=["joint_trajectory_controller"],
|
|
76
|
+
output="screen",
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
return [robot_state_publisher, spawn_jsb, spawn_jtc]
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def generate_launch_description():
|
|
83
|
+
robot_type = LaunchConfiguration("robot_type")
|
|
84
|
+
|
|
85
|
+
# Gazebo Sim
|
|
86
|
+
os.environ["GZ_SIM_RESOURCE_PATH"] = os.path.dirname(
|
|
87
|
+
get_package_share_directory("franka_description")
|
|
88
|
+
)
|
|
89
|
+
gazebo = IncludeLaunchDescription(
|
|
90
|
+
PythonLaunchDescriptionSource(
|
|
91
|
+
os.path.join(
|
|
92
|
+
get_package_share_directory("ros_gz_sim"),
|
|
93
|
+
"launch",
|
|
94
|
+
"gz_sim.launch.py",
|
|
95
|
+
)
|
|
96
|
+
),
|
|
97
|
+
launch_arguments={"gz_args": "empty.sdf -r"}.items(),
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
spawn = Node(
|
|
101
|
+
package="ros_gz_sim",
|
|
102
|
+
executable="create",
|
|
103
|
+
arguments=["-topic", "/robot_description"],
|
|
104
|
+
output="screen",
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
bridge = Node(
|
|
108
|
+
package="ros_gz_bridge",
|
|
109
|
+
executable="parameter_bridge",
|
|
110
|
+
arguments=["/clock@rosgraph_msgs/msg/Clock[gz.msgs.Clock"],
|
|
111
|
+
output="screen",
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
return LaunchDescription(
|
|
115
|
+
[
|
|
116
|
+
DeclareLaunchArgument("robot_type", default_value="fr3"),
|
|
117
|
+
gazebo,
|
|
118
|
+
OpaqueFunction(
|
|
119
|
+
function=get_robot_description_and_controllers, args=[robot_type]
|
|
120
|
+
),
|
|
121
|
+
spawn,
|
|
122
|
+
bridge,
|
|
123
|
+
]
|
|
124
|
+
)
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"""Launch Franka FR3 with gripper in Gazebo for HPP tutorial 8 (pick and place).
|
|
2
|
+
|
|
3
|
+
Usage (inside the docker container):
|
|
4
|
+
ros2 launch /home/user/devel/install/share/hpp_tutorial/tutorial_8/launch_sim.py
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
|
|
9
|
+
import xacro
|
|
10
|
+
from ament_index_python.packages import get_package_share_directory
|
|
11
|
+
from launch import LaunchContext, LaunchDescription
|
|
12
|
+
from launch.actions import (
|
|
13
|
+
DeclareLaunchArgument,
|
|
14
|
+
IncludeLaunchDescription,
|
|
15
|
+
OpaqueFunction,
|
|
16
|
+
)
|
|
17
|
+
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
|
18
|
+
from launch.substitutions import LaunchConfiguration
|
|
19
|
+
from launch_ros.actions import Node
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def get_robot_description_and_controllers(context: LaunchContext, robot_type):
|
|
23
|
+
robot_type_str = context.perform_substitution(robot_type)
|
|
24
|
+
|
|
25
|
+
tutorial_dir = os.path.join(
|
|
26
|
+
get_package_share_directory("hpp_tutorial"), "tutorial_8"
|
|
27
|
+
)
|
|
28
|
+
controllers_yaml = os.path.join(tutorial_dir, "controllers.yaml")
|
|
29
|
+
|
|
30
|
+
franka_xacro = os.path.join(
|
|
31
|
+
get_package_share_directory("franka_gazebo_bringup"),
|
|
32
|
+
"urdf",
|
|
33
|
+
"franka_arm.gazebo.xacro",
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
robot_description_xml = xacro.process_file(
|
|
37
|
+
franka_xacro,
|
|
38
|
+
mappings={
|
|
39
|
+
"robot_type": robot_type_str,
|
|
40
|
+
"hand": "true",
|
|
41
|
+
"ros2_control": "true",
|
|
42
|
+
"gazebo": "true",
|
|
43
|
+
"ee_id": "franka_hand",
|
|
44
|
+
},
|
|
45
|
+
).toxml()
|
|
46
|
+
|
|
47
|
+
detachable_joint_plugin = f"""
|
|
48
|
+
<gazebo>
|
|
49
|
+
<plugin filename="gz-sim-detachable-joint-system" name="gz::sim::systems::DetachableJoint">
|
|
50
|
+
<parent_link>{robot_type_str}_hand</parent_link>
|
|
51
|
+
<child_model>box</child_model>
|
|
52
|
+
<child_link>base_link</child_link>
|
|
53
|
+
<attach_topic>/box/attach</attach_topic>
|
|
54
|
+
<detach_topic>/box/detach</detach_topic>
|
|
55
|
+
<suppress_child_warning>true</suppress_child_warning>
|
|
56
|
+
</plugin>
|
|
57
|
+
</gazebo>
|
|
58
|
+
</robot>
|
|
59
|
+
"""
|
|
60
|
+
robot_description_xml = robot_description_xml.replace(
|
|
61
|
+
"</robot>", detachable_joint_plugin
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# Replace the Franka default controllers YAML with our tutorial controllers
|
|
65
|
+
franka_controllers = os.path.join(
|
|
66
|
+
get_package_share_directory("franka_gazebo_bringup"),
|
|
67
|
+
"config",
|
|
68
|
+
"franka_gazebo_controllers.yaml",
|
|
69
|
+
)
|
|
70
|
+
robot_description_xml = robot_description_xml.replace(
|
|
71
|
+
franka_controllers, controllers_yaml
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
robot_state_publisher = Node(
|
|
75
|
+
package="robot_state_publisher",
|
|
76
|
+
executable="robot_state_publisher",
|
|
77
|
+
output="both",
|
|
78
|
+
parameters=[{"robot_description": robot_description_xml}],
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
spawn_jsb = Node(
|
|
82
|
+
package="controller_manager",
|
|
83
|
+
executable="spawner",
|
|
84
|
+
arguments=["joint_state_broadcaster"],
|
|
85
|
+
output="screen",
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
spawn_jtc = Node(
|
|
89
|
+
package="controller_manager",
|
|
90
|
+
executable="spawner",
|
|
91
|
+
arguments=["joint_trajectory_controller"],
|
|
92
|
+
output="screen",
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
spawn_gripper = Node(
|
|
96
|
+
package="controller_manager",
|
|
97
|
+
executable="spawner",
|
|
98
|
+
arguments=["gripper_controller"],
|
|
99
|
+
output="screen",
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
return [robot_state_publisher, spawn_jsb, spawn_jtc, spawn_gripper]
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def generate_launch_description():
|
|
106
|
+
robot_type = LaunchConfiguration("robot_type")
|
|
107
|
+
tutorial_share = get_package_share_directory("hpp_tutorial")
|
|
108
|
+
box_urdf = os.path.join(tutorial_share, "urdf", "box.urdf")
|
|
109
|
+
ground_urdf = os.path.join(tutorial_share, "urdf", "ground.urdf")
|
|
110
|
+
|
|
111
|
+
# Gazebo Sim
|
|
112
|
+
os.environ["GZ_SIM_RESOURCE_PATH"] = os.path.dirname(
|
|
113
|
+
get_package_share_directory("franka_description")
|
|
114
|
+
)
|
|
115
|
+
gazebo = IncludeLaunchDescription(
|
|
116
|
+
PythonLaunchDescriptionSource(
|
|
117
|
+
os.path.join(
|
|
118
|
+
get_package_share_directory("ros_gz_sim"),
|
|
119
|
+
"launch",
|
|
120
|
+
"gz_sim.launch.py",
|
|
121
|
+
)
|
|
122
|
+
),
|
|
123
|
+
launch_arguments={"gz_args": "empty.sdf -r"}.items(),
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
spawn = Node(
|
|
127
|
+
package="ros_gz_sim",
|
|
128
|
+
executable="create",
|
|
129
|
+
arguments=["-topic", "/robot_description"],
|
|
130
|
+
output="screen",
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
spawn_box = Node(
|
|
134
|
+
package="ros_gz_sim",
|
|
135
|
+
executable="create",
|
|
136
|
+
arguments=[
|
|
137
|
+
"-name",
|
|
138
|
+
"box",
|
|
139
|
+
"-file",
|
|
140
|
+
box_urdf,
|
|
141
|
+
"-x",
|
|
142
|
+
"0.4",
|
|
143
|
+
"-y",
|
|
144
|
+
"-0.2",
|
|
145
|
+
"-z",
|
|
146
|
+
"0.0251",
|
|
147
|
+
],
|
|
148
|
+
output="screen",
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
spawn_ground = Node(
|
|
152
|
+
package="ros_gz_sim",
|
|
153
|
+
executable="create",
|
|
154
|
+
arguments=[
|
|
155
|
+
"-name",
|
|
156
|
+
"ground",
|
|
157
|
+
"-file",
|
|
158
|
+
ground_urdf,
|
|
159
|
+
"-x",
|
|
160
|
+
"0.0",
|
|
161
|
+
"-y",
|
|
162
|
+
"0.0",
|
|
163
|
+
"-z",
|
|
164
|
+
"0.0",
|
|
165
|
+
],
|
|
166
|
+
output="screen",
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
bridge = Node(
|
|
170
|
+
package="ros_gz_bridge",
|
|
171
|
+
executable="parameter_bridge",
|
|
172
|
+
arguments=[
|
|
173
|
+
"/clock@rosgraph_msgs/msg/Clock[gz.msgs.Clock",
|
|
174
|
+
"/box/attach@std_msgs/msg/Empty]gz.msgs.Empty",
|
|
175
|
+
"/box/detach@std_msgs/msg/Empty]gz.msgs.Empty",
|
|
176
|
+
"/world/empty/set_pose@ros_gz_interfaces/srv/SetEntityPose",
|
|
177
|
+
],
|
|
178
|
+
output="screen",
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
return LaunchDescription(
|
|
182
|
+
[
|
|
183
|
+
DeclareLaunchArgument("robot_type", default_value="fr3"),
|
|
184
|
+
gazebo,
|
|
185
|
+
OpaqueFunction(
|
|
186
|
+
function=get_robot_description_and_controllers, args=[robot_type]
|
|
187
|
+
),
|
|
188
|
+
spawn,
|
|
189
|
+
spawn_ground,
|
|
190
|
+
spawn_box,
|
|
191
|
+
bridge,
|
|
192
|
+
]
|
|
193
|
+
)
|