Skip to content

Commit b5aaaae

Browse files
authored
Merge pull request #105 from AGH-CEAI/feature/servo_calibration
`aegis_moveit_config`: MoveIt Servo calibration & SRDF fixes
2 parents 7c30975 + a1e2c47 commit b5aaaae

File tree

4 files changed

+99
-11
lines changed

4 files changed

+99
-11
lines changed

aegis_moveit_config/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1414

1515
### Changed
1616

17+
* [PR-105](https://github.com/AGH-CEAI/aegis_ros/pull/105) - Calibrated servo configuration for Sim2Real experiments.
1718
* [PR-77](https://github.com/AGH-CEAI/aegis_ros/pull/77) - Changed `ur_base` frame to the `world` frame (simulation simplification).
1819
* [PR-75](https://github.com/AGH-CEAI/aegis_ros/pull/75) - Updated servo max linear, angular and joints velocities.
1920
* [PR-71](https://github.com/AGH-CEAI/aegis_ros/pull/71) - Updated collision checking.

aegis_moveit_config/config/aegis.srdf

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group-->
1111
<!--SUBGROUPS: Groups can also be formed by referencing to already defined group names-->
1212
<group name="aegis_arm">
13-
<chain base_link="base_link" tip_link="tool0" />
13+
<chain base_link="base_link" tip_link="robotiq_hande_end" />
1414
</group>
1515
<group name="aegis_manipulator">
1616
<link name="adapter_to_sensor"/>
@@ -45,8 +45,19 @@
4545
<group_state name="close" group="aegis_manipulator">
4646
<joint name="robotiq_hande_left_finger_joint" value="0"/>
4747
</group_state>
48+
<group_state name="home" group="aegis">
49+
<joint name="shoulder_pan_joint" value="0"/>
50+
<joint name="shoulder_lift_joint" value="-2.094395"/>
51+
<joint name="elbow_joint" value="2.094395"/>
52+
<joint name="wrist_1_joint" value="-1.570796"/>
53+
<joint name="wrist_2_joint" value="-1.570796"/>
54+
<joint name="wrist_3_joint" value="0"/>
55+
<joint name="robotiq_hande_left_finger_joint" value="0.025"/>
56+
</group_state>
4857
<!--END EFFECTOR: Purpose: Represent information about an end effector.-->
49-
<end_effector name="aegis_manipulator" parent_link="tool0" group="aegis_manipulator" parent_group="aegis_arm"/>
58+
<!-- <end_effector name="aegis_manipulator" parent_link="tool0" group="aegis_manipulator" parent_group="aegis_arm"/> -->
59+
<!-- <end_effector name="robotiq_hand" parent_link="robotiq_hande_end" group="aegis_manipulator" parent_group="aegis"/> -->
60+
<end_effector name="aegis_manipulator" parent_link="robotiq_hande_end" group="aegis_manipulator" parent_group="aegis_arm"/>
5061
<!--VIRTUAL JOINT: Purpose: this element defines a virtual joint between a robot link and an external frame of reference (considered fixed with respect to the robot)-->
5162
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world" child_link="base_link"/>
5263
<!--DISABLE COLLISIONS: By default it is assumed that any link of the robot could potentially come into collision with any other link in the robot. This tag disables collision checking between a specified pair of links. -->
Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
move_group:
22
planning_plugin: ompl_interface/OMPLPlanner
3-
planner_configs:
4-
RRTConnectkConfigDefault:
5-
type: geometric::RRTConnect
6-
range: 0.0
3+
projection_evaluator: jodints(shoulder_pan_joint,shoulder_lift_joint)
4+
longest_valid_segment_fraction: 0.005
75
start_state_max_bounds_error: 0.1
6+
enforce_joint_model_state_space: true
87

98
# Request adapters are described in the MoveIt2 docs:
109
# https://moveit.picknik.ai/humble/doc/concepts/motion_planning.html#motion-planning-adapters
@@ -14,3 +13,61 @@ move_group:
1413
default_planner_request_adapters/FixStartStateBounds
1514
default_planner_request_adapters/FixStartStateCollision
1615
default_planner_request_adapters/FixStartStatePathConstraints
16+
17+
response_adapters: >-
18+
default_planner_request_adapters/ValidateSolution
19+
20+
planner_configs:
21+
SBLkConfigDefault:
22+
type: geometric::SBL
23+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
24+
ESTkConfigDefault:
25+
type: geometric::EST
26+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup()
27+
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
28+
LBKPIECEkConfigDefault:
29+
type: geometric::LBKPIECE
30+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
31+
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
32+
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
33+
BKPIECEkConfigDefault:
34+
type: geometric::BKPIECE
35+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
36+
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
37+
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
38+
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
39+
KPIECEkConfigDefault:
40+
type: geometric::KPIECE
41+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
42+
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
43+
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 (0.0,1.]
44+
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
45+
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
46+
RRTkConfigDefault:
47+
type: geometric::RRT
48+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
49+
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
50+
RRTConnectkConfigDefault:
51+
type: geometric::RRTConnect
52+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
53+
RRTstarkConfigDefault:
54+
type: geometric::RRTstar
55+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
56+
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
57+
delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1
58+
TRRTkConfigDefault:
59+
type: geometric::TRRT
60+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
61+
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
62+
max_states_failed: 10 # when to start increasing temp. default: 10
63+
temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0
64+
min_temperature: 10e-10 # lower limit of temp change. default: 10e-10
65+
init_temperature: 10e-6 # initial temperature. default: 10e-6
66+
frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
67+
frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
68+
k_constant: 0.0 # value used to normalize expression. default: 0.0 set in setup()
69+
PRMkConfigDefault:
70+
type: geometric::PRM
71+
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
72+
PRMstarkConfigDefault:
73+
type: geometric::PRMstar

aegis_moveit_config/config/move_group/ur_servo.yaml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,32 @@ use_gazebo: false # Whether the robot is started in a Gazebo simulation environm
88
command_in_type: "unitless"
99
scale:
1010
# Scale parameters are only used if command_in_type=="unitless"
11-
linear: 0.5 # Max linear velocity. Meters per publish_period. Unit is [m/s]. Only used for Cartesian commands.
12-
rotational: 0.35 # Max angular velocity. Rads per publish_period. Unit is [rad/s]. Only used for Cartesian commands.
11+
# linear: 0.5 # Max linear velocity. Meters per publish_period. Unit is [m/s]. Only used for Cartesian commands.
12+
# rotational: 0.35 # Max angular velocity. Rads per publish_period. Unit is [rad/s]. Only used for Cartesian commands.
1313
# Max joint angular/linear velocity. Rads or Meters per publish period. Only used for joint commands on joint_command_in_topic.
14-
joint: 0.35 # ~ 20 deg/s
14+
# joint: 0.35 # ~ 20 deg/s
15+
16+
# For publlisnihg 25 msgs with 25Hz (for "Robot Limit 300W")
17+
# target: 2.0 m/s measured: 0.113m/s for publish_period 1/250
18+
# target: 1.0 m/s measured: 0.102 m/s for publish_period 1/250
19+
# target: 3.1416 rad/s measured: 0,302 rad/s for publish_period 1/250
20+
# target: 0.6 m/s measured: 0.054m/s for publish_period 1/250
21+
# target: 1.0 m/s measured: 0.052m/s for publish_period 1/500
22+
# target: 2.5 m/s measured: 0.068 m/s for publish_period 1/500
23+
# target: 5.0 m/s measured: 0.071 m/s for publish_period 1/500
24+
# For publlisnihg 25 msgs with 25Hz (for "Robot Limit 1000W")
25+
# target: 0.6 m/s measured: 0.048m/s for publish_period 1/250
26+
# target: 0.6 m/s measured: 0.032m/s for publish_period 1/500
27+
# target: 1.0 m/s measured: 0,098m/s for publish_period 1/250
28+
# target: 1.0 m/s measured: 0,053m/s for publish_period 1/500
29+
linear: 1.0
30+
rotational: 3.1416
31+
joint: 3.1416
32+
1533
# This is a fudge factor to account for any latency in the system, e.g. network latency or poor low-level
1634
# controller performance. It essentially increases the timestep when calculating the target pose, to move the target
1735
# pose farther away. [seconds]
18-
system_latency_compensation: 0.04
36+
system_latency_compensation: 0.0
1937

2038
## Properties of outgoing commands
2139
publish_period: 0.004 # 1/Nominal publish rate [seconds]
@@ -68,6 +86,7 @@ joint_topic: /joint_states
6886
status_topic: ~/status # Publish status to this topic
6987
# command_out_topic: /scaled_joint_trajectory_controller/joint_trajectory # Publish outgoing commands here
7088
command_out_topic: /forward_position_controller/commands
89+
# command_out_topic: /forward_velocity_controller/commands
7190
# command_out_topic: /ur_controller/joint_trajectory # Publish outgoing commands here
7291
monitored_planning_scene_topic: /monitored_planning_scene
7392

@@ -84,4 +103,4 @@ self_collision_proximity_threshold: 0.01 # Start decelerating when a self-collis
84103
scene_collision_proximity_threshold: 0.01 # Start decelerating when a scene collision is this far [m]
85104
# Parameters for "stop_distance"-type collision checking
86105
collision_distance_safety_factor: 1000.0 # Must be >= 1. A large safety factor is recommended to account for latency
87-
min_allowable_collision_distance: 0.01 # Stop if a collision is closer than this [m]
106+
min_allowable_collision_distance: 0.007 # Stop if a collision is closer than this [m]

0 commit comments

Comments
 (0)