Skip to content

Commit a633b10

Browse files
committed
Initial sample testing tests and samples
1 parent 75dfe07 commit a633b10

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3656
-0
lines changed

clearpath_generator_robot/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ install(PROGRAMS
1515
DESTINATION lib/${PROJECT_NAME}
1616
)
1717

18+
install(DIRECTORY samples
19+
DESTINATION share/${PROJECT_NAME}
20+
)
21+
22+
set(EXCLUDED_DIR samples)
23+
list(APPEND AMENT_LINT_AUTO_FILE_EXCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/${EXCLUDED_DIR}")
24+
1825
ament_python_install_package(${PROJECT_NAME})
1926

2027
if(BUILD_TESTING)
@@ -32,6 +39,7 @@ if(BUILD_TESTING)
3239
set(_pytest_tests
3340
test/test_generator_launch.py
3441
test/test_generator_param.py
42+
test/test_samples.py
3543
)
3644
foreach(_test_path ${_pytest_tests})
3745
get_filename_component(_test_name ${_test_path} NAME_WE)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
a201_0000/manipulators:
2+
controller_manager:
3+
ros__parameters:
4+
update_rate: 1000
5+
joint_state_broadcaster:
6+
type: 'joint_state_broadcaster/JointStateBroadcaster'
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
a201_0000:
2+
move_group:
3+
ros__parameters:
4+
robot_description_planning:
5+
cartesian_limits:
6+
max_trans_vel: 1.0
7+
max_trans_acc: 2.25
8+
max_trans_dec: -5.0
9+
max_rot_vel: 1.57
10+
publish_planning_scene: True
11+
publish_robot_description: False
12+
publish_robot_description_semantic: True
13+
publish_geometry_updates: True
14+
publish_state_updates: True
15+
publish_transforms_updates: True
16+
ompl:
17+
planning_plugins: ['ompl_interface/OMPLPlanner']
18+
path_tolerance: 0.1
19+
resample_dt: 0.1
20+
min_angle_change: 0.001
21+
default_workspace_bounds: 10.0
22+
start_state_max_bounds_error: 0.1
23+
start_state_max_dt: 0.5
24+
jiggle_fraction: 0.05
25+
max_sampling_attempts: 100
26+
request_adapters: ['default_planning_request_adapters/ResolveConstraintFrames', 'default_planning_request_adapters/ValidateWorkspaceBounds', 'default_planning_request_adapters/CheckStartStateBounds', 'default_planning_request_adapters/CheckStartStateCollision']
27+
response_adapters: ['default_planning_response_adapters/AddTimeOptimalParameterization', 'default_planning_response_adapters/ValidateSolution', 'default_planning_response_adapters/DisplayMotionPath']
28+
planner_configs:
29+
AnytimePathShortening:
30+
type: 'geometric::AnytimePathShortening'
31+
shortcut: True
32+
hybridize: True
33+
max_hybrid_paths: 24
34+
num_planners: 4
35+
planners: ''
36+
SBL:
37+
type: 'geometric::SBL'
38+
range: 0.0
39+
EST:
40+
type: 'geometric::EST'
41+
range: 0.0
42+
goal_bias: 0.05
43+
LBKPIECE:
44+
type: 'geometric::LBKPIECE'
45+
range: 0.0
46+
border_fraction: 0.9
47+
min_valid_path_fraction: 0.5
48+
BKPIECE:
49+
type: 'geometric::BKPIECE'
50+
range: 0.0
51+
border_fraction: 0.9
52+
failed_expansion_score_factor: 0.5
53+
min_valid_path_fraction: 0.5
54+
KPIECE:
55+
type: 'geometric::KPIECE'
56+
range: 0.0
57+
goal_bias: 0.05
58+
border_fraction: 0.9
59+
failed_expansion_score_factor: 0.5
60+
min_valid_path_fraction: 0.5
61+
RRT:
62+
type: 'geometric::RRT'
63+
range: 0.0
64+
goal_bias: 0.05
65+
RRTConnect:
66+
type: 'geometric::RRTConnect'
67+
range: 0.0
68+
RRTstar:
69+
type: 'geometric::RRTstar'
70+
range: 0.0
71+
goal_bias: 0.05
72+
delay_collision_checking: 1
73+
TRRT:
74+
type: 'geometric::TRRT'
75+
range: 0.0
76+
goal_bias: 0.05
77+
max_states_failed: 10
78+
temp_change_factor: 2.0
79+
min_temperature: '10e-10'
80+
init_temperature: '10e-6'
81+
frountier_threshold: 0.0
82+
frountierNodeRatio: 0.1
83+
k_constant: 0.0
84+
PRM:
85+
type: 'geometric::PRM'
86+
max_nearest_neighbors: 10
87+
PRMstar:
88+
type: 'geometric::PRMstar'
89+
FMT:
90+
type: 'geometric::FMT'
91+
num_samples: 1000
92+
radius_multiplier: 1.1
93+
nearest_k: 1
94+
cache_cc: 1
95+
heuristics: 0
96+
extended_fmt: 1
97+
BFMT:
98+
type: 'geometric::BFMT'
99+
num_samples: 1000
100+
radius_multiplier: 1.0
101+
nearest_k: 1
102+
balanced: 0
103+
optimality: 1
104+
heuristics: 1
105+
cache_cc: 1
106+
extended_fmt: 1
107+
PDST:
108+
type: 'geometric::PDST'
109+
STRIDE:
110+
type: 'geometric::STRIDE'
111+
range: 0.0
112+
goal_bias: 0.05
113+
use_projected_distance: 0
114+
degree: 16
115+
max_degree: 18
116+
min_degree: 12
117+
max_pts_per_leaf: 6
118+
estimated_dimension: 0.0
119+
min_valid_path_fraction: 0.2
120+
BiTRRT:
121+
type: 'geometric::BiTRRT'
122+
range: 0.0
123+
temp_change_factor: 0.1
124+
init_temperature: 100
125+
frountier_threshold: 0.0
126+
frountier_node_ratio: 0.1
127+
cost_threshold: '1e300'
128+
LBTRRT:
129+
type: 'geometric::LBTRRT'
130+
range: 0.0
131+
goal_bias: 0.05
132+
epsilon: 0.4
133+
BiEST:
134+
type: 'geometric::BiEST'
135+
range: 0.0
136+
ProjEST:
137+
type: 'geometric::ProjEST'
138+
range: 0.0
139+
goal_bias: 0.05
140+
LazyPRM:
141+
type: 'geometric::LazyPRM'
142+
range: 0.0
143+
LazyPRMstar:
144+
type: 'geometric::LazyPRMstar'
145+
SPARS:
146+
type: 'geometric::SPARS'
147+
stretch_factor: 3.0
148+
sparse_delta_fraction: 0.25
149+
dense_delta_fraction: 0.001
150+
max_failures: 1000
151+
SPARStwo:
152+
type: 'geometric::SPARStwo'
153+
stretch_factor: 3.0
154+
sparse_delta_fraction: 0.25
155+
dense_delta_fraction: 0.001
156+
max_failures: 5000
157+
chomp:
158+
planning_plugins: ['chomp_interface/CHOMPPlanner']
159+
enable_failure_recovery: True
160+
jiggle_fraction: 0.05
161+
request_adapters: ['default_planning_request_adapters/ResolveConstraintFrames', 'default_planning_request_adapters/ValidateWorkspaceBounds', 'default_planning_request_adapters/CheckStartStateBounds', 'default_planning_request_adapters/CheckStartStateCollision']
162+
response_adapters: ['default_planning_response_adapters/AddTimeOptimalParameterization', 'default_planning_response_adapters/ValidateSolution', 'default_planning_response_adapters/DisplayMotionPath']
163+
ridge_factor: 0.01
164+
start_state_max_bounds_error: 0.1
165+
path_tolerance: 0.1
166+
resample_dt: 0.1
167+
min_angle_change: 0.001
168+
default_workspace_bounds: 10.0
169+
start_state_max_dt: 0.5
170+
max_sampling_attempts: 100
171+
pilz:
172+
planning_plugins: ['pilz_industrial_motion_planner/CommandPlanner']
173+
default_planner_config: 'PTP'
174+
request_adapters: ['default_planning_request_adapters/ResolveConstraintFrames', 'default_planning_request_adapters/ValidateWorkspaceBounds', 'default_planning_request_adapters/CheckStartStateBounds', 'default_planning_request_adapters/CheckStartStateCollision']
175+
response_adapters: ['default_planning_response_adapters/ValidateSolution', 'default_planning_response_adapters/DisplayMotionPath']
176+
capabilities: 'pilz_industrial_motion_planner/MoveGroupSequenceAction pilz_industrial_motion_planner/MoveGroupSequenceService'
177+
cartesian_limits:
178+
max_trans_vel: 1.0
179+
max_trans_acc: 2.25
180+
max_trans_dec: -5.0
181+
max_rot_vel: 1.57
182+
planning_pipelines: ['chomp', 'pilz', 'ompl']
183+
default_planning_pipeline: 'ompl'
184+
allow_trajectory_execution: True
185+
moveit_manage_controllers: False
186+
trajectory_execution:
187+
allowed_execution_duration_scaling: 1.2
188+
allowed_goal_duration_margin: 0.5
189+
allowed_start_tolerance: 0.01
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from launch import LaunchDescription
2+
from launch.actions import IncludeLaunchDescription, DeclareLaunchArgument, ExecuteProcess
3+
from launch.launch_description_sources import PythonLaunchDescriptionSource
4+
from launch.substitutions import EnvironmentVariable, FindExecutable, PathJoinSubstitution, LaunchConfiguration
5+
from launch_ros.actions import Node
6+
from launch_ros.substitutions import FindPackageShare
7+
8+
9+
def generate_launch_description():
10+
11+
# Create LaunchDescription
12+
ld = LaunchDescription()
13+
return ld
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from launch import LaunchDescription
2+
from launch.actions import IncludeLaunchDescription, DeclareLaunchArgument, ExecuteProcess
3+
from launch.launch_description_sources import PythonLaunchDescriptionSource
4+
from launch.substitutions import EnvironmentVariable, FindExecutable, PathJoinSubstitution, LaunchConfiguration
5+
from launch_ros.actions import Node
6+
from launch_ros.substitutions import FindPackageShare
7+
8+
9+
def generate_launch_description():
10+
11+
# Include Packages
12+
pkg_clearpath_common = FindPackageShare('clearpath_common')
13+
14+
# Declare launch files
15+
launch_file_platform_extras = PathJoinSubstitution([
16+
pkg_clearpath_common, 'launch', 'platform_extras.launch.py'])
17+
18+
# Include launch files
19+
launch_platform_extras = IncludeLaunchDescription(
20+
PythonLaunchDescriptionSource([launch_file_platform_extras]),
21+
launch_arguments=
22+
[
23+
(
24+
'setup_path'
25+
,
26+
'/home/lcamero/Workspaces/jazzy_ws/src/clearpath_robot/clearpath_generator_robot/samples/test_a200'
27+
)
28+
,
29+
(
30+
'use_sim_time'
31+
,
32+
'false'
33+
)
34+
,
35+
(
36+
'namespace'
37+
,
38+
'a201_0000'
39+
)
40+
,
41+
]
42+
)
43+
44+
# Create LaunchDescription
45+
ld = LaunchDescription()
46+
ld.add_action(launch_platform_extras)
47+
return ld
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
a201_0000:
2+
controller_manager:
3+
ros__parameters:
4+
update_rate: 20
5+
use_sim_time: False
6+
joint_state_broadcaster.type: 'joint_state_broadcaster/JointStateBroadcaster'
7+
platform_velocity_controller.type: 'diff_drive_controller/DiffDriveController'
8+
platform_velocity_controller:
9+
ros__parameters:
10+
use_sim_time: False
11+
left_wheel_names: ['front_left_wheel_joint', 'rear_left_wheel_joint']
12+
right_wheel_names: ['front_right_wheel_joint', 'rear_right_wheel_joint']
13+
wheel_separation: 0.555
14+
wheels_per_side: 1
15+
wheel_radius: 0.1651
16+
wheel_separation_multiplier: 1.875
17+
left_wheel_radius_multiplier: 1.0
18+
right_wheel_radius_multiplier: 1.0
19+
publish_rate: 50.0
20+
odom_frame_id: 'odom'
21+
base_frame_id: 'base_link'
22+
pose_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]
23+
twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]
24+
open_loop: False
25+
enable_odom_tf: False
26+
tf_frame_prefix_enable: False
27+
cmd_vel_timeout: 0.5
28+
use_stamped_vel: True
29+
preserve_turning_radius: True
30+
publish_limited_velocity: True
31+
publish_wheel_data: True
32+
linear.x.max_velocity: 1.0
33+
linear.x.min_velocity: -1.0
34+
linear.x.max_acceleration: 1.0
35+
linear.x.max_jerk: nan
36+
linear.x.min_jerk: nan
37+
angular.z.max_velocity: 1.0
38+
angular.z.min_velocity: -1.0
39+
angular.z.max_acceleration: 1.0
40+
angular.z.max_deceleration: -1.0
41+
angular.z.max_jerk: nan
42+
angular.z.min_jerk: nan
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
a201_0000:
2+
diagnostic_aggregator:
3+
ros__parameters:
4+
path: 'Clearpath Diagnostics'
5+
platform.type: 'diagnostic_aggregator/AnalyzerGroup'
6+
platform.path: 'Platform'
7+
platform.analyzers.power.type: 'diagnostic_aggregator/GenericAnalyzer'
8+
platform.analyzers.power.path: 'Power'
9+
platform.analyzers.power.expected: ['clearpath_diagnostic_updater: Battery Management System', 'clearpath_diagnostic_updater: Power Status']
10+
platform.analyzers.power.contains: ['Battery', 'Power']
11+
platform.analyzers.stop_status.type: 'diagnostic_aggregator/GenericAnalyzer'
12+
platform.analyzers.stop_status.path: 'E-stop Status'
13+
platform.analyzers.stop_status.expected: ['clearpath_diagnostic_updater: E-stop Status']
14+
platform.analyzers.stop_status.contains: ['E-stop']
15+
platform.analyzers.drive.type: 'diagnostic_aggregator/GenericAnalyzer'
16+
platform.analyzers.drive.path: 'Drive System'
17+
platform.analyzers.drive.expected: ['controller_manager: Controller Manager Activity', 'controller_manager: Controllers Activity', 'controller_manager: Hardware Components Activity']
18+
platform.analyzers.drive.contains: ['lynx', 'puma', 'sevcon', 'controller_manager', 'twist_mux', 'joy_node']
19+
platform.analyzers.odometry.type: 'diagnostic_aggregator/GenericAnalyzer'
20+
platform.analyzers.odometry.path: 'Odometry'
21+
platform.analyzers.odometry.contains: ['odometry', 'ekf_node']
22+
platform.analyzers.odometry.expected: ['ekf_node: Filter diagnostic updater', 'ekf_node: odometry/filtered topic status']
23+
platform.analyzers.networking.type: 'diagnostic_aggregator/GenericAnalyzer'
24+
platform.analyzers.networking.path: 'Networking'
25+
platform.analyzers.networking.contains: ['Wi-Fi']
26+
platform.analyzers.networking.expected: ['wireless_watcher: Wi-Fi Monitor']
27+
sensors.type: 'diagnostic_aggregator/AnalyzerGroup'
28+
sensors.path: 'Sensors'
29+
sensors.analyzers.lidar2d.type: 'diagnostic_aggregator/GenericAnalyzer'
30+
sensors.analyzers.lidar2d.path: 'Lidar2D'
31+
sensors.analyzers.lidar2d.contains: ['lidar2d']
32+
sensors.analyzers.lidar3d.type: 'diagnostic_aggregator/GenericAnalyzer'
33+
sensors.analyzers.lidar3d.path: 'Lidar3D'
34+
sensors.analyzers.lidar3d.contains: ['lidar3d']
35+
sensors.analyzers.cameras.type: 'diagnostic_aggregator/GenericAnalyzer'
36+
sensors.analyzers.cameras.path: 'Cameras'
37+
sensors.analyzers.cameras.contains: ['camera']
38+
sensors.analyzers.imu.type: 'diagnostic_aggregator/GenericAnalyzer'
39+
sensors.analyzers.imu.path: 'IMU'
40+
sensors.analyzers.imu.contains: ['imu']
41+
sensors.analyzers.gps.type: 'diagnostic_aggregator/GenericAnalyzer'
42+
sensors.analyzers.gps.path: 'GPS'
43+
sensors.analyzers.gps.contains: ['gps']

0 commit comments

Comments
 (0)