refactoring repo

This commit is contained in:
Ilya Uraev 2023-07-26 14:20:06 +03:00
parent 6fa469be36
commit f76340d78a
68 changed files with 5 additions and 6275 deletions

View file

@ -1,34 +0,0 @@
cmake_minimum_required(VERSION 3.5)
project(rasmt_moveit_config)
# Default to C99
if(NOT CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 99)
endif()
# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
# the following line skips the linter which checks for copyrights
# uncomment the line when a copyright and license is not present in all source files
#set(ament_cmake_copyright_FOUND TRUE)
# the following line skips cpplint (only works in a git repo)
# uncomment the line when this package is not in a git repo
#set(ament_cmake_cpplint_FOUND TRUE)
ament_lint_auto_find_test_dependencies()
endif()
install(DIRECTORY launch config DESTINATION share/${PROJECT_NAME})
ament_package()

View file

@ -1,20 +0,0 @@
# Robossembler MoveIt2 package
This package contains the basic robot configuration files for MoveIt2
```
.
├── CMakeLists.txt
├── config
│ ├── cartesian_limits.yaml
│ ├── chomp_planning.yaml
│ ├── joint_limits.yaml
│ ├── kinematics.yaml
│ ├── ompl_planning.yaml
│ ├── rasmt_moveit_controllers.yaml
│ ├── rasmt_moveit.rviz
│ └── rasmt.srdf
├── launch
│ └── rasmt_moveit.launch.py
├── package.xml
└── README.md
```

View file

@ -1,5 +0,0 @@
cartesian_limits:
max_trans_vel: 1
max_trans_acc: 2.25
max_trans_dec: -5
max_rot_vel: 1.57

View file

@ -1,18 +0,0 @@
planning_time_limit: 10.0
max_iterations: 200
max_iterations_after_collision_free: 5
smoothness_cost_weight: 0.1
obstacle_cost_weight: 1.0
learning_rate: 0.01
smoothness_cost_velocity: 0.0
smoothness_cost_acceleration: 1.0
smoothness_cost_jerk: 0.0
ridge_factor: 0.01
use_pseudo_inverse: false
pseudo_inverse_ridge_factor: 1e-4
joint_update_limit: 0.1
collision_clearance: 0.2
collision_threshold: 0.07
use_stochastic_descent: true
enable_failure_recovery: true
max_recovery_attempts: 5

View file

@ -1,50 +0,0 @@
# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed
# For beginners, we downscale velocity and acceleration limits.
# You can always specify higher scaling factors (<= 1.0) in your motion requests. # Increase the values below to 1.0 to always move at maximum speed.
default_velocity_scaling_factor: 1
default_acceleration_scaling_factor: 1
# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration]
# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits]
joint_limits:
rasmt_Rot_Y_1:
has_velocity_limits: true
max_velocity: 0.99903
has_acceleration_limits: false
max_acceleration: 0
rasmt_Rot_Y_2:
has_velocity_limits: true
max_velocity: 0.99903
has_acceleration_limits: false
max_acceleration: 0
rasmt_Rot_Y_4:
has_velocity_limits: true
max_velocity: 0.99903
has_acceleration_limits: false
max_acceleration: 0
rasmt_Rot_Z_1:
has_velocity_limits: true
max_velocity: 0.99903
has_acceleration_limits: false
max_acceleration: 0
rasmt_Rot_Z_2:
has_velocity_limits: true
max_velocity: 0.99903
has_acceleration_limits: false
max_acceleration: 0
rasmt_Rot_Z_3:
has_velocity_limits: true
max_velocity: 0.99903
has_acceleration_limits: false
max_acceleration: 0
rasmt_Slide_1:
has_velocity_limits: true
max_velocity: 0.2
has_acceleration_limits: false
max_acceleration: 0
rasmt_Slide_2:
has_velocity_limits: true
max_velocity: 0.2
has_acceleration_limits: false
max_acceleration: 0

View file

@ -1,4 +0,0 @@
rasmt_arm_group:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005

View file

@ -1,183 +0,0 @@
planner_configs:
AnytimePathShortening:
type: geometric::AnytimePathShortening
shortcut: true # Attempt to shortcut all new solution paths
hybridize: true # Compute hybrid solution trajectories
max_hybrid_paths: 24 # Number of hybrid paths generated per iteration
num_planners: 4 # The number of default planners to use for planning
planners: "" # A comma-separated list of planner types (e.g., "PRM,EST,RRTConnect"Optionally, planner parameters can be passed to change the default:"PRM[max_nearest_neighbors=5],EST[goal_bias=.5],RRT[range=10. goal_bias=.1]"
SBL:
type: geometric::SBL
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
EST:
type: geometric::EST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
LBKPIECE:
type: geometric::LBKPIECE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
BKPIECE:
type: geometric::BKPIECE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
KPIECE:
type: geometric::KPIECE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 (0.0,1.]
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
RRT:
type: geometric::RRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
RRTConnect:
type: geometric::RRTConnect
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
RRTstar:
type: geometric::RRTstar
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1
TRRT:
type: geometric::TRRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
max_states_failed: 10 # when to start increasing temp. default: 10
temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0
min_temperature: 10e-10 # lower limit of temp change. default: 10e-10
init_temperature: 10e-6 # initial temperature. default: 10e-6
frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
k_constant: 0.0 # value used to normalize expresssion. default: 0.0 set in setup()
PRM:
type: geometric::PRM
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
PRMstar:
type: geometric::PRMstar
FMT:
type: geometric::FMT
num_samples: 1000 # number of states that the planner should sample. default: 1000
radius_multiplier: 1.1 # multiplier used for the nearest neighbors search radius. default: 1.1
nearest_k: 1 # use Knearest strategy. default: 1
cache_cc: 1 # use collision checking cache. default: 1
heuristics: 0 # activate cost to go heuristics. default: 0
extended_fmt: 1 # activate the extended FMT*: adding new samples if planner does not finish successfully. default: 1
BFMT:
type: geometric::BFMT
num_samples: 1000 # number of states that the planner should sample. default: 1000
radius_multiplier: 1.0 # multiplier used for the nearest neighbors search radius. default: 1.0
nearest_k: 1 # use the Knearest strategy. default: 1
balanced: 0 # exploration strategy: balanced true expands one tree every iteration. False will select the tree with lowest maximum cost to go. default: 1
optimality: 1 # termination strategy: optimality true finishes when the best possible path is found. Otherwise, the algorithm will finish when the first feasible path is found. default: 1
heuristics: 1 # activates cost to go heuristics. default: 1
cache_cc: 1 # use the collision checking cache. default: 1
extended_fmt: 1 # Activates the extended FMT*: adding new samples if planner does not finish successfully. default: 1
PDST:
type: geometric::PDST
STRIDE:
type: geometric::STRIDE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
use_projected_distance: 0 # whether nearest neighbors are computed based on distances in a projection of the state rather distances in the state space itself. default: 0
degree: 16 # desired degree of a node in the Geometric Near-neightbor Access Tree (GNAT). default: 16
max_degree: 18 # max degree of a node in the GNAT. default: 12
min_degree: 12 # min degree of a node in the GNAT. default: 12
max_pts_per_leaf: 6 # max points per leaf in the GNAT. default: 6
estimated_dimension: 0.0 # estimated dimension of the free space. default: 0.0
min_valid_path_fraction: 0.2 # Accept partially valid moves above fraction. default: 0.2
BiTRRT:
type: geometric::BiTRRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
temp_change_factor: 0.1 # how much to increase or decrease temp. default: 0.1
init_temperature: 100 # initial temperature. default: 100
frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
frountier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
cost_threshold: 1e300 # the cost threshold. Any motion cost that is not better will not be expanded. default: inf
LBTRRT:
type: geometric::LBTRRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
epsilon: 0.4 # optimality approximation factor. default: 0.4
BiEST:
type: geometric::BiEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ProjEST:
type: geometric::ProjEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
LazyPRM:
type: geometric::LazyPRM
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
LazyPRMstar:
type: geometric::LazyPRMstar
SPARS:
type: geometric::SPARS
stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0
sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25
dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001
max_failures: 1000 # maximum consecutive failure limit. default: 1000
SPARStwo:
type: geometric::SPARStwo
stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0
sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25
dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001
max_failures: 5000 # maximum consecutive failure limit. default: 5000
rasmt_arm_group:
default_planner_config: RRTConnect
planner_configs:
- AnytimePathShortening
- SBL
- EST
- LBKPIECE
- BKPIECE
- KPIECE
- RRT
- RRTConnect
- RRTstar
- TRRT
- PRM
- PRMstar
- FMT
- BFMT
- PDST
- STRIDE
- BiTRRT
- LBTRRT
- BiEST
- ProjEST
- LazyPRM
- LazyPRMstar
- SPARS
- SPARStwo
rasmt_hand_arm_group:
planner_configs:
- AnytimePathShortening
- SBL
- EST
- LBKPIECE
- BKPIECE
- KPIECE
- RRT
- RRTConnect
- RRTstar
- TRRT
- PRM
- PRMstar
- FMT
- BFMT
- PDST
- STRIDE
- BiTRRT
- LBTRRT
- BiEST
- ProjEST
- LazyPRM
- LazyPRMstar
- SPARS
- SPARStwo

View file

@ -1,96 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--This does not replace URDF, and is not an extension of URDF.
This is a format for representing semantic information about the robot structure.
A URDF file must exist for this robot as well, where the joints and the links that are referenced are defined
-->
<robot name="rasmt">
<!--GROUPS: Representation of a set of joints and links. This can be useful for specifying DOF to plan for, defining arms, end effectors, etc-->
<!--LINKS: When a link is specified, the parent joint of that link (if it exists) is automatically included-->
<!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included-->
<!--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-->
<!--SUBGROUPS: Groups can also be formed by referencing to already defined group names-->
<group name="rasmt_arm_group">
<chain base_link="rasmt_Base_Link" tip_link="rasmt_tool0"/>
</group>
<!--group name="rasmt_hand_arm_group">
<link name="rasmt_Grip_Body"/>
<link name="rasmt_Grip_L"/>
<link name="rasmt_Grip_R"/>
<joint name="rasmt_Slide_1"/>
<joint name="rasmt_Slide_2"/>
</group-->
<!--GROUP STATES: Purpose: Define a named state for a particular group, in terms of joint values. This is useful to define states like 'folded arms'-->
<group_state name="home_position" group="rasmt_arm_group">
<joint name="rasmt_Rot_Y_1" value="0"/>
<joint name="rasmt_Rot_Y_2" value="0"/>
<joint name="rasmt_Rot_Y_4" value="0"/>
<joint name="rasmt_Rot_Z_1" value="0"/>
<joint name="rasmt_Rot_Z_2" value="0"/>
<joint name="rasmt_Rot_Z_3" value="0"/>
</group_state>
<group_state name="ready_to_work" group="rasmt_arm_group">
<joint name="rasmt_Rot_Y_1" value="-0.8462"/>
<joint name="rasmt_Rot_Y_2" value="1.6257"/>
<joint name="rasmt_Rot_Y_4" value="1.647"/>
<joint name="rasmt_Rot_Z_1" value="0"/>
<joint name="rasmt_Rot_Z_2" value="0"/>
<joint name="rasmt_Rot_Z_3" value="0"/>
</group_state>
<group_state name="ready_to_work_v2" group="rasmt_arm_group">
<joint name="rasmt_Rot_Y_1" value="0"/>
<joint name="rasmt_Rot_Y_2" value="1.2634"/>
<joint name="rasmt_Rot_Y_4" value="1.5618"/>
<joint name="rasmt_Rot_Z_1" value="0"/>
<joint name="rasmt_Rot_Z_2" value="3.1416"/>
<joint name="rasmt_Rot_Z_3" value="0.0521"/>
</group_state>
<!--group_state name="home_hand" group="rasmt_hand_arm_group">
<joint name="rasmt_Slide_1" value="0.02"/>
<joint name="rasmt_Slide_2" value="0.02"/>
</group_state>
<group_state name="full_open" group="rasmt_hand_arm_group">
<joint name="rasmt_Slide_1" value="0.06"/>
<joint name="rasmt_Slide_2" value="0.06"/>
</group_state>
<group_state name="full_close" group="rasmt_hand_arm_group">
<joint name="rasmt_Slide_1" value="0.0"/>
<joint name="rasmt_Slide_2" value="0.0"/>
</group_state-->
<!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<!--end_effector name="rasmt_hand" parent_link="rasmt_Dock_Link" group="rasmt_hand_arm_group" parent_group="rasmt_arm_group"/-->
<!--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. -->
<disable_collisions link1="rasmt_Base_Link" link2="rasmt_Fork_1" reason="Adjacent"/>
<disable_collisions link1="rasmt_Base_Link" link2="rasmt_Fork_2" reason="Never"/>
<disable_collisions link1="rasmt_Base_Link" link2="rasmt_Grip_R" reason="Never"/>
<disable_collisions link1="rasmt_Base_Link" link2="rasmt_Link_1" reason="Never"/>
<disable_collisions link1="rasmt_Dock_Link" link2="rasmt_Fork_2" reason="Never"/>
<disable_collisions link1="rasmt_Dock_Link" link2="rasmt_Fork_3" reason="Adjacent"/>
<disable_collisions link1="rasmt_Dock_Link" link2="rasmt_Grip_Body" reason="Adjacent"/>
<disable_collisions link1="rasmt_Dock_Link" link2="rasmt_Grip_L" reason="Never"/>
<disable_collisions link1="rasmt_Dock_Link" link2="rasmt_Grip_R" reason="Never"/>
<disable_collisions link1="rasmt_Dock_Link" link2="rasmt_Link_2" reason="Never"/>
<disable_collisions link1="rasmt_Fork_1" link2="rasmt_Fork_2" reason="Never"/>
<disable_collisions link1="rasmt_Fork_1" link2="rasmt_Fork_3" reason="Never"/>
<disable_collisions link1="rasmt_Fork_1" link2="rasmt_Grip_R" reason="Never"/>
<disable_collisions link1="rasmt_Fork_1" link2="rasmt_Link_1" reason="Adjacent"/>
<disable_collisions link1="rasmt_Fork_1" link2="rasmt_Link_2" reason="Never"/>
<disable_collisions link1="rasmt_Fork_2" link2="rasmt_Fork_3" reason="Never"/>
<disable_collisions link1="rasmt_Fork_2" link2="rasmt_Grip_Body" reason="Never"/>
<disable_collisions link1="rasmt_Fork_2" link2="rasmt_Grip_L" reason="Never"/>
<disable_collisions link1="rasmt_Fork_2" link2="rasmt_Grip_R" reason="Never"/>
<disable_collisions link1="rasmt_Fork_2" link2="rasmt_Link_1" reason="Adjacent"/>
<disable_collisions link1="rasmt_Fork_2" link2="rasmt_Link_2" reason="Adjacent"/>
<disable_collisions link1="rasmt_Fork_3" link2="rasmt_Grip_Body" reason="Never"/>
<disable_collisions link1="rasmt_Fork_3" link2="rasmt_Grip_L" reason="Never"/>
<disable_collisions link1="rasmt_Fork_3" link2="rasmt_Grip_R" reason="Never"/>
<disable_collisions link1="rasmt_Fork_3" link2="rasmt_Link_1" reason="Never"/>
<disable_collisions link1="rasmt_Fork_3" link2="rasmt_Link_2" reason="Adjacent"/>
<disable_collisions link1="rasmt_Grip_Body" link2="rasmt_Grip_L" reason="Adjacent"/>
<disable_collisions link1="rasmt_Grip_Body" link2="rasmt_Grip_R" reason="Adjacent"/>
<disable_collisions link1="rasmt_Grip_Body" link2="rasmt_Link_2" reason="Never"/>
<disable_collisions link1="rasmt_Grip_L" link2="rasmt_Grip_R" reason="Never"/>
<disable_collisions link1="rasmt_Grip_L" link2="rasmt_Link_2" reason="Never"/>
<disable_collisions link1="rasmt_Grip_R" link2="rasmt_Link_1" reason="Never"/>
<disable_collisions link1="rasmt_Grip_R" link2="rasmt_Link_2" reason="Never"/>
<disable_collisions link1="rasmt_Link_1" link2="rasmt_Link_2" reason="Never"/>
</robot>

View file

@ -1,401 +0,0 @@
Panels:
- Class: rviz_common/Displays
Help Height: 78
Name: Displays
Property Tree Widget:
Expanded: ~
Splitter Ratio: 0.5
Tree Height: 393
- Class: rviz_common/Selection
Name: Selection
- Class: rviz_common/Tool Properties
Expanded:
- /2D Goal Pose1
- /Publish Point1
Name: Tool Properties
Splitter Ratio: 0.5886790156364441
- Class: rviz_common/Views
Expanded:
- /Current View1
Name: Views
Splitter Ratio: 0.5
Visualization Manager:
Class: ""
Displays:
- Alpha: 0.5
Cell Size: 1
Class: rviz_default_plugins/Grid
Color: 160; 160; 164
Enabled: true
Line Style:
Line Width: 0.029999999329447746
Value: Lines
Name: Grid
Normal Cell Count: 0
Offset:
X: 0
Y: 0
Z: 0
Plane: XY
Plane Cell Count: 10
Reference Frame: <Fixed Frame>
Value: true
- Class: moveit_rviz_plugin/PlanningScene
Enabled: false
Move Group Namespace: ""
Name: PlanningScene
Planning Scene Topic: /monitored_planning_scene
Robot Description: robot_description
Scene Geometry:
Scene Alpha: 0.8999999761581421
Scene Color: 50; 230; 50
Scene Display Time: 0.009999999776482582
Show Scene Geometry: true
Voxel Coloring: Z-Axis
Voxel Rendering: Occupied Voxels
Scene Robot:
Attached Body Color: 150; 50; 150
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
Robot Alpha: 1
Show Robot Collision: false
Show Robot Visual: true
Value: false
- Acceleration_Scaling_Factor: 1
Class: moveit_rviz_plugin/MotionPlanning
Enabled: true
Move Group Namespace: ""
MoveIt_Allow_Approximate_IK: false
MoveIt_Allow_External_Program: false
MoveIt_Allow_Replanning: false
MoveIt_Allow_Sensor_Positioning: false
MoveIt_Planning_Attempts: 10
MoveIt_Planning_Time: 5
MoveIt_Use_Cartesian_Path: false
MoveIt_Use_Constraint_Aware_IK: false
MoveIt_Warehouse_Host: 127.0.0.1
MoveIt_Warehouse_Port: 33829
MoveIt_Workspace:
Center:
X: 0
Y: 0
Z: 0
Size:
X: 2
Y: 2
Z: 2
Name: MotionPlanning
Planned Path:
Color Enabled: false
Interrupt Display: false
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
rasmt_Base_Link:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Dock_Link:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Fork_1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Fork_2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Fork_3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Grip_Body:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Grip_L:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Grip_R:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Link_1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Link_2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_tool0:
Alpha: 1
Show Axes: false
Show Trail: false
world:
Alpha: 1
Show Axes: false
Show Trail: false
Loop Animation: false
Robot Alpha: 0.5
Robot Color: 150; 50; 150
Show Robot Collision: false
Show Robot Visual: true
Show Trail: false
State Display Time: 0.05 s
Trail Step Size: 1
Trajectory Topic: /display_planned_path
Planning Metrics:
Payload: 1
Show Joint Torques: false
Show Manipulability: false
Show Manipulability Index: false
Show Weight Limit: false
TextHeight: 0.07999999821186066
Planning Request:
Colliding Link Color: 255; 0; 0
Goal State Alpha: 1
Goal State Color: 250; 128; 0
Interactive Marker Size: 0
Joint Violation Color: 255; 0; 255
Planning Group: rasmt_arm_group
Query Goal State: true
Query Start State: false
Show Workspace: false
Start State Alpha: 1
Start State Color: 0; 255; 0
Planning Scene Topic: /monitored_planning_scene
Robot Description: robot_description
Scene Geometry:
Scene Alpha: 0.8999999761581421
Scene Color: 50; 230; 50
Scene Display Time: 0.009999999776482582
Show Scene Geometry: true
Voxel Coloring: Z-Axis
Voxel Rendering: Occupied Voxels
Scene Robot:
Attached Body Color: 150; 50; 150
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
rasmt_Base_Link:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Dock_Link:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Fork_1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Fork_2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Fork_3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Grip_Body:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Grip_L:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Grip_R:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Link_1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_Link_2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
rasmt_tool0:
Alpha: 1
Show Axes: false
Show Trail: false
world:
Alpha: 1
Show Axes: false
Show Trail: false
Robot Alpha: 1
Show Robot Collision: false
Show Robot Visual: true
Value: true
Velocity_Scaling_Factor: 1
- Class: rviz_default_plugins/TF
Enabled: true
Frame Timeout: 15
Frames:
All Enabled: true
rasmt_Base_Link:
Value: true
rasmt_Dock_Link:
Value: true
rasmt_Fork_1:
Value: true
rasmt_Fork_2:
Value: true
rasmt_Fork_3:
Value: true
rasmt_Grip_Body:
Value: true
rasmt_Grip_L:
Value: true
rasmt_Grip_R:
Value: true
rasmt_Link_1:
Value: true
rasmt_Link_2:
Value: true
rasmt_tool0:
Value: true
world:
Value: true
Marker Scale: 1
Name: TF
Show Arrows: true
Show Axes: true
Show Names: false
Tree:
world:
rasmt_Base_Link:
rasmt_Fork_1:
rasmt_Link_1:
rasmt_Fork_2:
rasmt_Link_2:
rasmt_Fork_3:
rasmt_Dock_Link:
rasmt_Grip_Body:
rasmt_Grip_L:
{}
rasmt_Grip_R:
{}
rasmt_tool0:
{}
Update Interval: 0
Value: true
Enabled: true
Global Options:
Background Color: 48; 48; 48
Fixed Frame: world
Frame Rate: 30
Name: root
Tools:
- Class: rviz_default_plugins/Interact
Hide Inactive Objects: true
- Class: rviz_default_plugins/MoveCamera
- Class: rviz_default_plugins/Select
- Class: rviz_default_plugins/FocusCamera
- Class: rviz_default_plugins/Measure
Line color: 128; 128; 0
- Class: rviz_default_plugins/SetInitialPose
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /initialpose
- Class: rviz_default_plugins/SetGoal
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /goal_pose
- Class: rviz_default_plugins/PublishPoint
Single click: true
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /clicked_point
Transformation:
Current:
Class: rviz_default_plugins/TF
Value: true
Views:
Current:
Class: rviz_default_plugins/Orbit
Distance: 2.575685977935791
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Focal Point:
X: 0.35113412141799927
Y: 0.04733692854642868
Z: 0.32357215881347656
Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
Pitch: 0.4853982627391815
Target Frame: <Fixed Frame>
Value: Orbit (rviz)
Yaw: 5.343599319458008
Saved: ~
Window Geometry:
Displays:
collapsed: false
Height: 1016
Hide Left Dock: false
Hide Right Dock: true
MotionPlanning:
collapsed: false
MotionPlanning - Trajectory Slider:
collapsed: false
QMainWindow State: 000000ff00000000fd0000000400000000000001f3000003a2fc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b00000212000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000003f00fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002530000018a0000016900fffffffb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000000000010000010f0000039efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d0000039e000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d006501000000000000045000000000000000000000053f000003a200000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Selection:
collapsed: false
Tool Properties:
collapsed: false
Views:
collapsed: true
Width: 1848
X: 72
Y: 27

View file

@ -1,23 +0,0 @@
controller_names:
- rasmt_arm_controller
- rasmt_hand_controller
rasmt_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- rasmt_Rot_Z_1
- rasmt_Rot_Y_1
- rasmt_Rot_Z_2
- rasmt_Rot_Y_2
- rasmt_Rot_Z_3
- rasmt_Rot_Y_4
rasmt_hand_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- rasmt_Slide_1
- rasmt_Slide_2

View file

@ -1,208 +0,0 @@
import os
import yaml
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument, OpaqueFunction
from launch.substitutions import LaunchConfiguration, PathJoinSubstitution
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare
from ament_index_python import get_package_share_directory
def load_yaml(package_name: str, file_path: str):
package_path = get_package_share_directory(package_name)
absolute_file_path = os.path.join(package_path, file_path)
try:
with open(absolute_file_path, "r") as f:
return yaml.safe_load(f)
except EnvironmentError:
return None
def load_file(package_name: str, file_path: str) -> str:
package_path = get_package_share_directory(package_name)
absolut_file_path = os.path.join(package_path, file_path)
try:
with open(absolut_file_path, "r") as f:
return f.read()
except EnvironmentError:
return None
def generate_launch_description():
# Launch arguments
launch_args = []
launch_args.append(
DeclareLaunchArgument(
name="robot_description",
description="Robot description XML file."
)
)
"""launch_args.append(
DeclareLaunchArgument(
name="robot_name",
default_value="rasmt",
description=""
)
)"""
launch_args.append(
DeclareLaunchArgument(
name="sim",
default_value="true",
description="Launch robot in simulation or on real setup."
)
)
# Evaluate frequently used variables
#robot_name = LaunchConfiguration("robot_name").perform()
# Configure robot_description
robot_description = {"robot_description": LaunchConfiguration("robot_description")}
# Robot semantics SRDF
robot_description_semantic = {
"robot_description_semantic": load_file("rasmt_moveit_config", "config/rasmt.srdf")
}
# Kinematics
kinematics_yaml = load_yaml("rasmt_moveit_config", "config/kinematics.yaml")
# Update group name
# Joint limits
robot_description_planning = {
"robot_description_planning": PathJoinSubstitution(
[
FindPackageShare("rasmt_moveit_config"),
"config/joint_limits.yaml"
]
)
}
# Planning
ompl_yaml = load_yaml("rasmt_moveit_config", "config/ompl_planning.yaml")
planning = {
"move_group": {
"planning_plugin": "ompl_interface/OMPLPlanner",
"request_adapters": "default_planner_request_adapters/AddTimeParameterization default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateCollision default_planner_request_adapters/FixStartStatePathConstraints",
"start_state_max_bounds_error": 0.1
}
}
# Trajectory execution
trajectory_execution = {
"moveit_manage_controllers": True,
"trajectory_execution.allowed_execution_duration_scaling": 1.2,
"trajectory_execution.allowed_goal_duration_margin": 0.5,
"trajectory_execution.allowed_start_tolerance": 0.01,
}
# Controllers
controllers_yaml = load_yaml(
"rasmt_moveit_config",
"config/rasmt_moveit_controllers.yaml"
)
moveit_controllers = {"moveit_simple_controller_manager": controllers_yaml,
"moveit_controller_manager": "moveit_simple_controller_manager/MoveItSimpleControllerManager"}
# Planning scene
planning_scene_monitor_parameters = {"publish_planning_scene": True,
"publish_geometry_updates": True,
"publish_state_updates": True,
"publish_transforms_updates": True}
# Time configuration
use_sim_time = {"use_sime_time": LaunchConfiguration("sim")}
# Prepare move group node
move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
arguments=["--ros-args"],
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
robot_description_planning,
ompl_yaml,
planning,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
use_sim_time
]
)
# RViz
rviz_config = PathJoinSubstitution([FindPackageShare("rasmt_moveit_config"), "config/rasmt_moveit.rviz"])
rviz = Node(
package="rviz2",
executable="rviz2",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
planning,
use_sim_time
],
arguments=[
'-d', rviz_config
]
)
# move_topose_action_server = Node(
# package="robossembler_servers",
# executable="move_topose_action_server",
# name="move_to_pose_moveit",
# parameters=[
# robot_description,
# robot_description_semantic,
# kinematics_yaml,
# robot_description_planning,
# ompl_yaml,
# planning,
# trajectory_execution,
# moveit_controllers,
# planning_scene_monitor_parameters,
# use_sim_time
# ]
# )
# move_cartesian_path_action_server = Node(
# package="robossembler_servers",
# executable="move_cartesian_path_action_server",
# name="move_cartesian_path_action_server",
# parameters=[
# robot_description,
# robot_description_semantic,
# kinematics_yaml,
# robot_description_planning,
# ompl_yaml,
# planning,
# trajectory_execution,
# moveit_controllers,
# planning_scene_monitor_parameters,
# use_sim_time
# ]
# )
launch_nodes = []
launch_nodes.append(rviz)
launch_nodes.append(move_group_node)
# launch_nodes.append(move_topose_action_server)
# launch_nodes.append(move_cartesian_path_action_server)
# launch_nodes.append(move_to_joint_state_action_server)
return LaunchDescription(launch_args + launch_nodes)

View file

@ -1,19 +0,0 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>rasmt_moveit_config</name>
<version>0.0.0</version>
<description>robossembler moveit configuration for rasmt robot.</description>
<maintainer email="ur.narmak@gmail.com">bill-finger</maintainer>
<license>BCD</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<!--exec_depend>rviz2</exec_depend>
<exec_depend>moveit_ros_move_group</exec_depend>
<exec_depend>moveit_planners</exec_depend-->
<export>
<build_type>ament_cmake</build_type>
</export>
</package>

View file

@ -1,40 +0,0 @@
cmake_minimum_required(VERSION 3.5)
project(rasmt_support)
# Default to C99
if(NOT CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 99)
endif()
# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
find_package(urdf REQUIRED)
find_package(xacro REQUIRED)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
# the following line skips the linter which checks for copyrights
# uncomment the line when a copyright and license is not present in all source files
#set(ament_cmake_copyright_FOUND TRUE)
# the following line skips cpplint (only works in a git repo)
# uncomment the line when this package is not in a git repo
#set(ament_cmake_cpplint_FOUND TRUE)
ament_lint_auto_find_test_dependencies()
endif()
install(DIRECTORY urdf DESTINATION share/${PROJECT_NAME})
install(DIRECTORY meshes DESTINATION share/${PROJECT_NAME})
install(DIRECTORY config DESTINATION share/${PROJECT_NAME})
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})
install(DIRECTORY world DESTINATION share/${PROJECT_NAME})
ament_package()

View file

@ -1,42 +0,0 @@
# Robossembler package for description of robot2
This package consists of files describing the AQUA model of the robot, the entire scene and the gripper device. It also contains startup files for launching robot controllers and simulations in gazebo.
```
.
├── CMakeLists.txt
├── config
│ ├── rasmt_effort_controllers.yaml # File describing the robot controllers
│ └── rasmt.rviz
├── launch
│ ├── rasmt_control.launch.py # Launch file for running robot controlles
│ ├── rasmt_gazebo.launch.py # File for running gazebo simulation
│ └── rviz.launch.py # File for running RViz visualisation
├── meshes
│ ├── collision
│ │ ├── Base_Link.stl
│ │ ├── cube5x.stl
│ │ ├── Dock_Link.stl
│ │ ├── Fork_1.stl
│ │ ├── Fork_2.stl
│ │ ├── Fork_3.stl
│ │ ├── Grip_Body.stl
│ │ ├── Grip_L.stl
│ │ ├── Grip_R.stl
│ │ ├── Link_1.stl
│ │ └── Link_2.stl
│ └── visual
├── package.xml
├── README.md
└── urdf
├── cube5x.sdf # The cube inside which the robot works
├── rasmt.xacro # Main Robot scene description file
├── robot # Single robot description files
│ ├── rasmt_single_control.xacro
│ ├── rasmt_single_gazebo.xacro
│ └── rasmt_single_macro.xacro
└── tools # Robot tool description files
├── rasmt_hand_control.xacro
├── rasmt_hand_gazebo.xacro
└── rasmt_hand_macro.xacro
```

View file

@ -1,146 +0,0 @@
Panels:
- Class: rviz_common/Displays
Help Height: 78
Name: Displays
Property Tree Widget:
Expanded:
- /Global Options1
- /Status1
Splitter Ratio: 0.5
Tree Height: 787
- Class: rviz_common/Selection
Name: Selection
- Class: rviz_common/Tool Properties
Expanded:
- /2D Goal Pose1
- /Publish Point1
Name: Tool Properties
Splitter Ratio: 0.5886790156364441
- Class: rviz_common/Views
Expanded:
- /Current View1
Name: Views
Splitter Ratio: 0.5
Visualization Manager:
Class: ""
Displays:
- Alpha: 0.5
Cell Size: 1
Class: rviz_default_plugins/Grid
Color: 160; 160; 164
Enabled: true
Line Style:
Line Width: 0.029999999329447746
Value: Lines
Name: Grid
Normal Cell Count: 0
Offset:
X: 0
Y: 0
Z: 0
Plane: XY
Plane Cell Count: 10
Reference Frame: <Fixed Frame>
Value: true
- Alpha: 1
Class: rviz_default_plugins/RobotModel
Collision Enabled: false
Description File: ""
Description Source: Topic
Description Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /robot_description
Enabled: true
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: ""
Name: RobotModel
TF Prefix: ""
Update Interval: 0
Value: true
Visual Enabled: true
Enabled: true
Global Options:
Background Color: 48; 48; 48
Fixed Frame: world
Frame Rate: 30
Name: root
Tools:
- Class: rviz_default_plugins/Interact
Hide Inactive Objects: true
- Class: rviz_default_plugins/MoveCamera
- Class: rviz_default_plugins/Select
- Class: rviz_default_plugins/FocusCamera
- Class: rviz_default_plugins/Measure
Line color: 128; 128; 0
- Class: rviz_default_plugins/SetInitialPose
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /initialpose
- Class: rviz_default_plugins/SetGoal
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /goal_pose
- Class: rviz_default_plugins/PublishPoint
Single click: true
Topic:
Depth: 5
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /clicked_point
Transformation:
Current:
Class: rviz_default_plugins/TF
Value: true
Views:
Current:
Class: rviz_default_plugins/Orbit
Distance: 2.053321123123169
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Focal Point:
X: 0.35200047492980957
Y: 0.026240859180688858
Z: 0.2903156876564026
Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
Pitch: 0.680398166179657
Target Frame: <Fixed Frame>
Value: Orbit (rviz)
Yaw: 5.493580341339111
Saved: ~
Window Geometry:
Displays:
collapsed: false
Height: 1016
Hide Left Dock: false
Hide Right Dock: false
QMainWindow State: 000000ff00000000fd0000000400000000000001560000039efc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000039e000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000039efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d0000039e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000004c70000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Selection:
collapsed: false
Tool Properties:
collapsed: false
Views:
collapsed: false
Width: 1848
X: 72
Y: 27

View file

@ -1,80 +0,0 @@
controller_manager:
ros__parameters:
update_rate: 250
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
rasmt_arm_controller:
type: effort_controllers/JointGroupEffortController
rasmt_hand_controller:
type: effort_controllers/JointGroupEffortController
rasmt_arm_controller:
ros__parameters:
joints:
- rasmt_Rot_Z_1
- rasmt_Rot_Y_1
- rasmt_Rot_Z_2
- rasmt_Rot_Y_2
- rasmt_Rot_Z_3
- rasmt_Rot_Y_4
command_interfaces:
- effort
state_interfaces:
- position
- velocity
gains:
rasmt_Rot_Z_1:
p: 4000.0
d: 10.0
i: 250.0
i_clamp: 15.0
rasmt_Rot_Y_1:
p: 10000.0
d: 25.0
i: 600.0
i_clamp: 45.0
rasmt_Rot_Z_2:
p: 8000.0
d: 20.0
i: 450.0
i_clamp: 30.0
rasmt_Rot_Y_2:
p: 6000.0
d: 15.0
i: 300.0
i_clamp: 30.0
rasmt_Rot_Z_3:
p: 3000.0
d: 5.0
i: 175.0
i_clamp: 7.0
rasmt_Rot_Y_4:
p: 2500.0
d: 3.0
i: 150.0
i_clamp: 6.0
rasmt_hand_controller:
ros__parameters:
joints:
- rasmt_Slide_1
- rasmt_Slide_2
command_interfaces:
- effort
state_interfaces:
- position
- velocity
gains:
rasmt_Slide_1:
p: 225.0
d: 0.001
i: 0.4
i_clamp: 4.0
rasmt_Slide_2:
p: 225.0
d: 0.001
i: 0.4
i_clamp: 4.0

View file

@ -1,39 +0,0 @@
controller_manager:
ros__parameters:
update_rate: 1000 # Hz
rasmt_arm_controller:
type: joint_trajectory_controller/JointTrajectoryController
rasmt_hand_controller:
type: joint_trajectory_controller/JointTrajectoryController
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
rasmt_arm_controller:
ros__parameters:
joints:
- rasmt_Rot_Z_1
- rasmt_Rot_Y_1
- rasmt_Rot_Z_2
- rasmt_Rot_Y_2
- rasmt_Rot_Z_3
- rasmt_Rot_Y_4
command_interfaces:
- position
state_interfaces:
- position
- velocity
rasmt_hand_controller:
ros__parameters:
joints:
- rasmt_Slide_1
- rasmt_Slide_2
command_interfaces:
- position
state_interfaces:
- position
- velocity

View file

@ -1,41 +0,0 @@
controller_manager:
ros__parameters:
update_rate: 1000 # Hz
rasmt_arm_controller:
type: joint_trajectory_controller/JointTrajectoryController
rasmt_hand_controller:
type: joint_trajectory_controller/JointTrajectoryController
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
rasmt_arm_controller:
ros__parameters:
joints:
- rasmt_Rot_Z_1
- rasmt_Rot_Y_1
- rasmt_Rot_Z_2
- rasmt_Rot_Y_2
- rasmt_Rot_Z_3
- rasmt_Rot_Y_4
command_interfaces:
- position
- velocity
state_interfaces:
- position
- velocity
rasmt_hand_controller:
ros__parameters:
joints:
- rasmt_Slide_1
- rasmt_Slide_2
command_interfaces:
- position
- velocity
state_interfaces:
- position
- velocity

View file

@ -1,84 +0,0 @@
from numpy import load
from launch.launch_description import LaunchDescription
from launch.actions import DeclareLaunchArgument, ExecuteProcess
from launch.conditions import UnlessCondition, IfCondition
from launch.substitutions import PathJoinSubstitution, LaunchConfiguration
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare
def generate_launch_description():
# Launch arguments
launch_args = []
launch_args.append(
DeclareLaunchArgument(
name="robot_description",
description="Robot description XML file."
)
)
launch_args.append(
DeclareLaunchArgument(
name="sim",
default_value="true",
description="Launch robot in simulation or on real setup."
)
)
# Configure robot_description
robot_description = {"robot_description": LaunchConfiguration("robot_description")}
# Load controllers from YAML configuration file
controller_configurations = PathJoinSubstitution([
FindPackageShare("rasmt_support"),
"config",
"rasmt_position_velocity_controllers.yaml"
])
# Prepare controller manager and other required nodes
# ros2_control_node = Node(
# package="controller_manager",
# executable="ros2_control_node",
# parameters=[robot_description, controller_configurations],
# output={
# "stdout": "screen",
# "stderr": "screen",
# },
# )
robot_state_publisher = Node(
package="robot_state_publisher",
executable="robot_state_publisher",
output="screen",
parameters=[robot_description]
)
# action_server_controller_hand_node = Node(
# package="robossembler_servers",
# executable="gripper_cmd_node"
# )
# Load controllers
load_controllers = []
for controller in [
"rasmt_arm_controller",
"rasmt_hand_controller",
"joint_state_broadcaster",
]:
load_controllers += [
ExecuteProcess(
cmd=["ros2 control load_controller --set-state start {}".format(controller)],
shell=True,
output="screen",
)
]
return LaunchDescription(
[
robot_state_publisher
]
+ load_controllers
+ launch_args
)

View file

@ -1,73 +0,0 @@
from launch.launch_description import LaunchDescription
from launch.actions import IncludeLaunchDescription, DeclareLaunchArgument
from launch.substitutions import PathJoinSubstitution, LaunchConfiguration, FindExecutable, Command
from launch_ros.substitutions import FindPackageShare
from launch_ros.actions import Node
from launch.launch_description_sources import PythonLaunchDescriptionSource
import xacro
import os
from ament_index_python import get_package_share_directory
def generate_launch_description():
launch_args = []
launch_args.append(DeclareLaunchArgument(
name="robot_name",
default_value="rasmt",
description="Set robot name in gazebo env"
))
world_file = os.path.join(get_package_share_directory("rasmt_support"), "world", "robossembler.world")
#test_world_file = "/home/bill-finger/gazebo_pkgs_ws/gazebo-pkgs/gazebo_grasp_plugin/test_world/test_world_full.world"
# gzserver = IncludeLaunchDescription(
# PythonLaunchDescriptionSource(
# os.path.join(get_package_share_directory("gazebo_ros"), 'launch', 'gzserver.launch.py'),
# ), launch_arguments={'world':world_file}.items()
# )
# gzclient = IncludeLaunchDescription(
# PythonLaunchDescriptionSource(
# os.path.join(get_package_share_directory("gazebo_ros"), 'launch', 'gzclient.launch.py'),
# )
# )
gazebo = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
os.path.join(get_package_share_directory("gazebo_ros"), 'launch', 'gazebo.launch.py'),
)
)
"""xacro_file = os.path.join(get_package_share_directory("rasmt_support"),"urdf/","rasmt.xacro")
# get error if xacro file if missing
assert os.path.exists(xacro_file), "The xacro file of rasmt.xacro doesnt exist"+str(xacro_file)"""
#sdf_file = os.path.join(get_package_share_directory("rasmt_support"),"urdf/","cube5x.sdf")
spawn_entity = Node(
package="gazebo_ros",
executable="spawn_entity.py",
arguments=[
"-topic", "/robot_description",
"-entity", LaunchConfiguration("robot_name")
],
output="screen"
)
"""cube_spawn = Node(
package="gazebo_ros",
executable="spawn_entity.py",
arguments=[
"-file", sdf_file,
"-entity", "cube_station"
]
)"""
launch_nodes = []
launch_nodes.append(gazebo)
#launch_nodes.append(gzserver)
#launch_nodes.append(gzclient)
launch_nodes.append(spawn_entity)
#launch_nodes.append(cube_spawn)
return LaunchDescription(launch_args + launch_nodes)

View file

@ -1,71 +0,0 @@
from launch import LaunchDescription
from launch.actions import (
DeclareLaunchArgument,
IncludeLaunchDescription,
OpaqueFunction,
RegisterEventHandler,
)
from launch.conditions import IfCondition, UnlessCondition
from launch.event_handlers import OnProcessExit
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare
import xacro
import os
from ament_index_python import get_package_share_directory
def generate_launch_description():
launch_args = []
launch_args.append(DeclareLaunchArgument(
name="robot_name",
default_value="rasmt",
description="Set robot name in gazebo env"
)
)
launch_args.append(DeclareLaunchArgument(
name="robot_description_content",
description="Robot XML file"
)
)
#robot_description_content = {"robot_description":LaunchConfiguration("robot_description_content")}
robot_description_content = LaunchConfiguration("robot_description_content")
# launch Ignition Gazebo
pkg_ros_ign_gazebo = get_package_share_directory('ros_ign_gazebo')
gazebo = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
os.path.join(pkg_ros_ign_gazebo, 'launch', 'ign_gazebo.launch.py')),
launch_arguments={'ign_args': '-r empty.sdf'}.items(),
)
ros2_ign_bridge = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
PathJoinSubstitution(
[
FindPackageShare("rasmt_support"),
"launch",
"rasmt_ignition_bridge.launch.py"
]
)
)
)
# Spawn
spawn = Node(package='ros_ign_gazebo', executable='create',
arguments=[
'-string', robot_description_content,
'-name', 'rasmt',
'-allow_renaming', 'true'],
output='screen')
launch_nodes = []
launch_nodes.append(gazebo)
launch_nodes.append(spawn)
launch_nodes.append(ros2_ign_bridge)
return LaunchDescription(launch_args + launch_nodes)

View file

@ -1,62 +0,0 @@
from launch.launch_description import LaunchDescription
from launch.actions import IncludeLaunchDescription, DeclareLaunchArgument
from launch.substitutions import PathJoinSubstitution, LaunchConfiguration, FindExecutable, Command
from launch_ros.substitutions import FindPackageShare
from launch_ros.actions import Node
from launch.launch_description_sources import PythonLaunchDescriptionSource
import xacro
import os
from ament_index_python import get_package_share_directory
def generate_launch_description():
use_sim_time = LaunchConfiguration('use_sim_time', default=True)
log_level = LaunchConfiguration('log_level', default='fatal')
launch_args = []
launch_args.append(
DeclareLaunchArgument(
name='use_sim_time',
default_value=use_sim_time,
description="If true, use simulated clock"
)
)
launch_args.append(
DeclareLaunchArgument(
name='log_level',
default_value=log_level,
description="Log level of all nodes launched by this script"
)
)
# JointTrajectory bridge for gripper (ROS2 -> IGN)
joint_trajectory_controller_bridge = Node(package='ros_ign_bridge',
executable='parameter_bridge',
name='parameter_bridge_gripper_trajectory',
output='screen',
arguments=['/gripper_trajectory@trajectory_msgs/msg/JointTrajectory]ignition.msgs.JointTrajectory',
'--ros-args', '--log-level', log_level],
parameters=[{'use_sim_time': use_sim_time}])
# ros_ign_bridge (clock -> ROS 2)
ros2_ign_clock_bridge = Node(
package="ros_ign_bridge",
executable="parameter_bridge",
output="log",
arguments=[
"/clock@rosgraph_msgs/msg/Clock[ignition.msgs.Clock",
"--ros-args",
"--log-level",
log_level,
],
parameters=[{"use_sim_time": use_sim_time}],
)
launch_nodes = []
#launch_nodes.append(joint_trajectory_controller_bridge)
launch_nodes.append(ros2_ign_clock_bridge)
return LaunchDescription(launch_nodes + launch_args)

View file

@ -1,77 +0,0 @@
from multiprocessing import context
from webbrowser import get
from launch.actions.declare_launch_argument import DeclareLaunchArgument
from launch.launch_description import LaunchDescription
#from launch.substitutions.launch_configuration import LaunchConfiguration
from launch_ros.actions import Node
import xacro
import os
from ament_index_python import get_package_share_directory
def generate_launch_description():
launch_args = []
launch_args.append(
DeclareLaunchArgument(
name="grip",
default_value="true",
description="On or OFF gripper for launch"
)
)
launch_args.append(
DeclareLaunchArgument(
name="sim",
default_value="true",
description="On or OFF simulation"
)
)
launch_args.append(
DeclareLaunchArgument(
name="robot_name",
default_value="rasmt",
description="Robot name"
)
)
# For convert LaunchConfiguration to string
# grip = LaunchConfiguration("grip").perform(context)
# get xacro file path
xacro_file = os.path.join(get_package_share_directory("rasmt_support"),"urdf/","rasmt.xacro")
# get error if xacro file if missing
assert os.path.exists(xacro_file), "The xacro file of neptun_description doesnt exist"+str(xacro_file)
# parse xacro file from file with arguments
robot_description = xacro.process_file(xacro_file, mappings={'grip':"true",'sim':"false",'robot_name':"rasmt"})
# convert file to xml format
robot_description_content = robot_description.toxml()
rviz_config_file = os.path.join(get_package_share_directory("rasmt_support"),"config/","rasmt.rviz")
rviz = Node(
package="rviz2",
executable="rviz2",
parameters=[{'robot_description': robot_description_content}],
arguments=[
'-d', rviz_config_file
]
)
robot_state_publisher = Node(
package="robot_state_publisher",
executable="robot_state_publisher",
output="screen",
parameters=[{'robot_description': robot_description_content}]
)
joint_state_publisher =Node(
package="joint_state_publisher_gui",
executable="joint_state_publisher_gui",
output="log",
arguments=["--ros-args"],
)
launch_nodes = []
launch_nodes.append(rviz)
launch_nodes.append(robot_state_publisher)
launch_nodes.append(joint_state_publisher)
#launch_nodes.add_action(launch_args)
return LaunchDescription(launch_nodes)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,24 +0,0 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>rasmt_support</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="ur.narmak@gmail.com">bill-finger</maintainer>
<license>TODO: License declaration</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<depend>urdf</depend>
<depend>xacro</depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
<!-- <gazebo_ros gazebo_plugin_path="lib"/>
<gazebo_ros gazebo_model_path="${prefix}"/> -->
<!-- <gazebo_ros gazebo_media_path="${prefix}"/> -->
</export>
</package>

View file

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<sdf version='1.7'>
<model name='cube_model'>
<static>1</static>
<link name='cube'>
<inertial>
<pose>0.004475 0 0.577443 0 0 0</pose>
<mass>229.703</mass>
<inertia>
<ixx>0.861062</ixx>
<ixy>2.44052e-16</ixy>
<ixz>-7.22504e-17</ixz>
<iyy>0.861062</iyy>
<iyz>3.40174e-17</iyz>
<izz>1.16487</izz>
</inertia>
</inertial>
<collision name='cube_5x5x5_collision'>
<pose>0 0 0 0 0 1.5707</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://neptun_description/meshes/cube5x.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='cube_5x5x5_visual'>
<pose>0 0 0 0 0 1.5707</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://neptun_description/meshes/cube5x.STL</uri>
</mesh>
</geometry>
</visual>
</link>
</model>
</sdf>

View file

@ -1,89 +0,0 @@
<sdf version='1.9'>
<world name='empty'>
<physics name='1ms' type='ignored'>
<max_step_size>0.001</max_step_size>
<real_time_factor>1.0</real_time_factor>
<real_time_update_rate>1000</real_time_update_rate>
</physics>
<plugin name='ignition::gazebo::systems::Physics' filename='ignition-gazebo-physics-system'/>
<plugin name='ignition::gazebo::systems::UserCommands' filename='ignition-gazebo-user-commands-system'/>
<plugin name='ignition::gazebo::systems::SceneBroadcaster' filename='ignition-gazebo-scene-broadcaster-system'/>
<plugin name='ignition::gazebo::systems::Contact' filename='ignition-gazebo-contact-system'/>
<gravity>0 0 -9.8</gravity>
<magnetic_field>5.5645e-6 22.8758e-6 -42.3884e-6</magnetic_field>
<atmosphere type='adiabatic'/>
<scene>
<ambient>0.4 0.4 0.4 1.0</ambient>
<background>.7 .7 .7 1</background>
<shadows>true</shadows>
</scene>
<model name='ground_plane'>
<static>1</static>
<link name='link'>
<collision name='collision'>
<geometry>
<plane>
<normal>0 0 1</normal>
<size>100 100</size>
</plane>
</geometry>
<surface>
<friction>
<ode/>
</friction>
<bounce/>
<contact/>
</surface>
</collision>
<visual name='visual'>
<geometry>
<plane>
<normal>0 0 1</normal>
<size>100 100</size>
</plane>
</geometry>
<material>
<ambient>0.8 0.8 0.8 1</ambient>
<diffuse>0.8 0.8 0.8 1</diffuse>
<specular>0.8 0.8 0.8 1</specular>
</material>
</visual>
<pose>0 0 0 0 -0 0</pose>
<inertial>
<pose>0 0 0 0 -0 0</pose>
<mass>1</mass>
<inertia>
<ixx>1</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>1</iyy>
<iyz>0</iyz>
<izz>1</izz>
</inertia>
</inertial>
<enable_wind>0</enable_wind>
</link>
<pose>0 0 0 0 -0 0</pose>
<self_collide>0</self_collide>
</model>
<light name='sun' type='directional'>
<pose>0 0 10 0 -0 0</pose>
<cast_shadows>1</cast_shadows>
<intensity>1</intensity>
<direction>-0.5 0.1 -0.9</direction>
<diffuse>0.8 0.8 0.8 1</diffuse>
<specular>0.2 0.2 0.2 1</specular>
<attenuation>
<range>1000</range>
<linear>0.01</linear>
<constant>0.9</constant>
<quadratic>0.001</quadratic>
</attenuation>
<spot>
<inner_angle>0</inner_angle>
<outer_angle>0</outer_angle>
<falloff>0</falloff>
</spot>
</light>
</world>
</sdf>

View file

@ -1,512 +0,0 @@
<sdf version='1.9'>
<model name='rasmt'>
<joint name='to_world' type='fixed'>
<pose relative_to='__model__'>0 0 0 0 0 0</pose>
<parent>world</parent>
<child>rasmt_Base_Link</child>
</joint>
<link name='rasmt_Base_Link'>
<pose relative_to='to_world'>0 0 0 0 0 0</pose>
<inertial>
<pose>-0.0030651 -3.2739e-05 0.082353 0 0 0</pose>
<mass>5.2929</mass>
<inertia>
<ixx>0.0076169</ixx>
<ixy>1.0121e-05</ixy>
<ixz>-0.00010622</ixz>
<iyy>0.0076597</iyy>
<iyz>6.511699999999999e-05</iyz>
<izz>0.01165</izz>
</inertia>
</inertial>
<collision name='rasmt_Base_Link_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Base_Link.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Base_Link_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Base_Link.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</diffuse>
<ambient>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Rot_Z_1' type='revolute'>
<pose relative_to='rasmt_Base_Link'>0 0 0.2533 3.141585307179587 0 0</pose>
<parent>rasmt_Base_Link</parent>
<child>rasmt_Fork_1</child>
<axis>
<xyz>0 0 1</xyz>
<limit>
<lower>-3.1416</lower>
<upper>3.1416</upper>
<effort>5.149</effort>
<velocity>0.99903</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Fork_1'>
<pose relative_to='rasmt_Rot_Z_1'>0 0 0 0 0 0</pose>
<inertial>
<pose>0.043764 -0.0066984 -0.032285 0 0 0</pose>
<mass>0.67797</mass>
<inertia>
<ixx>0.0014091</ixx>
<ixy>-6.2674e-05</ixy>
<ixz>0.00057897</ixz>
<iyy>0.0017329</iyy>
<iyz>4.7826e-05</iyz>
<izz>0.0019056</izz>
</inertia>
</inertial>
<collision name='rasmt_Fork_1_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Fork_1.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Fork_1_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Fork_1.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</diffuse>
<ambient>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Rot_Y_1' type='revolute'>
<pose relative_to='rasmt_Fork_1'>0.1045 0 -0.0795 -3.141585307179587 0 0</pose>
<parent>rasmt_Fork_1</parent>
<child>rasmt_Link_1</child>
<axis>
<xyz>0 1 0</xyz>
<limit>
<lower>-1.5707</lower>
<upper>2.2863</upper>
<effort>5.149</effort>
<velocity>0.99903</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Link_1'>
<pose relative_to='rasmt_Rot_Y_1'>0 0 0 0 0 0</pose>
<inertial>
<pose>-0.00042264 0 0.075171 0 0 0</pose>
<mass>1.8959</mass>
<inertia>
<ixx>0.0029317</ixx>
<ixy>-9.417e-06</ixy>
<ixz>5.5248e-05</ixz>
<iyy>0.0031666</iyy>
<iyz>-9.3067e-05</iyz>
<izz>0.0015477</izz>
</inertia>
</inertial>
<collision name='rasmt_Link_1_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Link_1.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Link_1_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Link_1.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</diffuse>
<ambient>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Rot_Z_2' type='revolute'>
<pose relative_to='rasmt_Link_1'>0 0 0.17502 0 0 0</pose>
<parent>rasmt_Link_1</parent>
<child>rasmt_Fork_2</child>
<axis>
<xyz>0 0 1</xyz>
<limit>
<lower>-3.1416</lower>
<upper>3.1416</upper>
<effort>5.149</effort>
<velocity>0.99903</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Fork_2'>
<pose relative_to='rasmt_Rot_Z_2'>0 0 0 0 0 0</pose>
<inertial>
<pose>0.043764 0.0066984 0.032285 0 0 0</pose>
<mass>0.67797</mass>
<inertia>
<ixx>0.0014091</ixx>
<ixy>6.2674e-05</ixy>
<ixz>-0.00057897</ixz>
<iyy>0.0017329</iyy>
<iyz>4.7826e-05</iyz>
<izz>0.0019056</izz>
</inertia>
</inertial>
<collision name='rasmt_Fork_2_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Fork_2.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Fork_2_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Fork_2.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</diffuse>
<ambient>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Rot_Y_2' type='revolute'>
<pose relative_to='rasmt_Fork_2'>0.1045 0 0.0795 0 0 0</pose>
<parent>rasmt_Fork_2</parent>
<child>rasmt_Link_2</child>
<axis>
<xyz>0 1 0</xyz>
<limit>
<lower>-1.5707</lower>
<upper>2.2863</upper>
<effort>5.149</effort>
<velocity>0.99903</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Link_2'>
<pose relative_to='rasmt_Rot_Y_2'>0 0 0 0 0 0</pose>
<inertial>
<pose>-0.00042264 0 0.075171 0 0 0</pose>
<mass>1.8959</mass>
<inertia>
<ixx>0.0029317</ixx>
<ixy>-9.4171e-06</ixy>
<ixz>5.5248e-05</ixz>
<iyy>0.0031666</iyy>
<iyz>-9.3067e-05</iyz>
<izz>0.0015477</izz>
</inertia>
</inertial>
<collision name='rasmt_Link_2_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Link_2.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Link_2_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Link_2.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</diffuse>
<ambient>0.9411749988794327 0.9411749988794327 0.9411749988794327 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Rot_Z_3' type='revolute'>
<pose relative_to='rasmt_Link_2'>0 0 0.175 0 0 0</pose>
<parent>rasmt_Link_2</parent>
<child>rasmt_Fork_3</child>
<axis>
<xyz>0 0 1</xyz>
<limit>
<lower>-3.14159</lower>
<upper>3.14159</upper>
<effort>5.149</effort>
<velocity>0.99903</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Fork_3'>
<pose relative_to='rasmt_Rot_Z_3'>0 0 0 0 0 0</pose>
<inertial>
<pose>0.0437644555284691 0.00669835350471771 0.0322846229336455 0 0 0</pose>
<mass>0.677972982551887</mass>
<inertia>
<ixx>0.00140908677953665</ixx>
<ixy>6.267434924451639e-05</ixy>
<ixz>-0.000578970009504215</ixz>
<iyy>0.00173285340301686</iyy>
<iyz>4.78263030621606e-05</iyz>
<izz>0.00190561919128035</izz>
</inertia>
</inertial>
<collision name='rasmt_Fork_3_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Fork_3.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Fork_3_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Fork_3.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411764889955521 0.9411764889955521 0.9411764889955521 1</diffuse>
<ambient>0.9411764889955521 0.9411764889955521 0.9411764889955521 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Rot_Y_4' type='revolute'>
<pose relative_to='rasmt_Fork_3'>0.1045 0 0.0795 0 0 0</pose>
<parent>rasmt_Fork_3</parent>
<child>rasmt_Dock_Link</child>
<axis>
<xyz>0 1 0</xyz>
<limit>
<lower>-1.5707</lower>
<upper>2.2863</upper>
<effort>5.149</effort>
<velocity>0.99903</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Dock_Link'>
<pose relative_to='rasmt_Rot_Y_4'>0 0 0 0 0 0</pose>
<inertial>
<pose>0.000487278098416338 0.0001516907797566372 0.08254557371325712 0 0 0</pose>
<mass>2.53391750781824</mass>
<inertia>
<ixx>0.006064508328644976</ixx>
<ixy>-2.015356731520154e-06</ixy>
<ixz>-7.294101423638933e-05</ixz>
<iyy>0.006094829365861896</iyy>
<iyz>-0.0001246350455024134</iyz>
<izz>0.002069011842474237</izz>
</inertia>
</inertial>
<collision name='rasmt_Dock_Link_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Dock_Link.STL</uri>
</mesh>
</geometry>
</collision>
<collision name='rasmt_Dock_Link_fixed_joint_lump__rasmt_Grip_Body_collision_1'>
<pose>0 0 0.12324 -3.14159265358979 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Grip_Body.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Dock_Link_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Dock_Link.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411764889955521 0.9411764889955521 0.9411764889955521 1</diffuse>
<ambient>0.9411764889955521 0.9411764889955521 0.9411764889955521 1</ambient>
</material>
</visual>
<visual name='rasmt_Dock_Link_fixed_joint_lump__rasmt_Grip_Body_visual_1'>
<pose>0 0 0.12324 -3.14159265358979 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Grip_Body.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.6274499744176865 1 0.6274499744176865 1</diffuse>
<ambient>0.6274499744176865 1 0.6274499744176865 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Slide_1' type='prismatic'>
<pose relative_to='rasmt_Dock_Link'>0 -3.006528453019044e-16 0.21629 7.346410206709656e-06 -3.231089339497412e-15 1.5708</pose>
<parent>rasmt_Dock_Link</parent>
<child>rasmt_Grip_L</child>
<axis>
<xyz>1 0 0</xyz>
<limit>
<lower>0</lower>
<upper>0.06</upper>
<effort>20</effort>
<velocity>0.2</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Grip_L'>
<pose relative_to='rasmt_Slide_1'>0 0 0 0 0 0</pose>
<inertial>
<pose>-0.010118 0.010281 -0.0038252 0 0 0</pose>
<mass>0.021223</mass>
<inertia>
<ixx>6.5436e-06</ixx>
<ixy>-3.114e-06</ixy>
<ixz>2.8479e-06</ixz>
<iyy>1.9726e-05</iyy>
<iyz>1.6432e-06</iyz>
<izz>1.6355e-05</izz>
</inertia>
</inertial>
<collision name='rasmt_Grip_L_collision'>
<pose>-0.02 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Grip_L.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Grip_L_visual'>
<pose>-0.02 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Grip_L.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411749988794327 1 1 1</diffuse>
<ambient>0.9411749988794327 1 1 1</ambient>
</material>
</visual>
</link>
<joint name='rasmt_Slide_2' type='prismatic'>
<pose relative_to='rasmt_Dock_Link'>0 -3.006528453019044e-16 0.21629 7.346410206709656e-06 3.231089339497412e-15 -1.5708</pose>
<parent>rasmt_Dock_Link</parent>
<child>rasmt_Grip_R</child>
<axis>
<xyz>1 0 0</xyz>
<limit>
<lower>0</lower>
<upper>0.06</upper>
<effort>20</effort>
<velocity>0.2</velocity>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
</axis>
</joint>
<link name='rasmt_Grip_R'>
<pose relative_to='rasmt_Slide_2'>0 0 0 0 0 0</pose>
<inertial>
<pose>-0.010118 0.010281 -0.0038252 0 0 0</pose>
<mass>0.021223</mass>
<inertia>
<ixx>6.5436e-06</ixx>
<ixy>-3.114e-06</ixy>
<ixz>2.8479e-06</ixz>
<iyy>1.9726e-05</iyy>
<iyz>1.6432e-06</iyz>
<izz>1.6355e-05</izz>
</inertia>
</inertial>
<collision name='rasmt_Grip_R_collision'>
<pose>-0.02 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/collision/Grip_R.STL</uri>
</mesh>
</geometry>
</collision>
<visual name='rasmt_Grip_R_visual'>
<pose>-0.02 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://rasmt_support/meshes/visual/Grip_R.dae</uri>
</mesh>
</geometry>
<material>
<diffuse>0.9411749988794327 1 1 1</diffuse>
<ambient>0.9411749988794327 1 1 1</ambient>
</material>
</visual>
</link>
<static>false</static>
<plugin name='ign_ros2_control' filename='libign_ros2_control-system.so'>
<parameters>/home/bill-finger/rasms_ws/install/share/rasmt_support/config/rasmt_effort_controllers.yaml</parameters>
</plugin>
</model>
</sdf>

View file

@ -1,486 +0,0 @@
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- | This document was autogenerated by xacro from rasmt.xacro | -->
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
<!-- =================================================================================== -->
<robot name="rasmt">
<mujoco>
<compiler balanceinertia="true" discardvisual="true" fusestatic="true" meshdir="../meshes_mjcf/" strippath="true"/>
</mujoco>
<link name="world"/>
<joint name="to_world" type="fixed">
<parent link="world"/>
<child link="rasmt_Base_Link"/>
<!--origin xyz="0 0 1.15" rpy="3.14159 0 3.14159"/-->
<origin rpy="0 0 0" xyz="0 0 0"/>
<axis xyz="0 0 0"/>
</joint>
<link name="rasmt_Base_Link">
<inertial>
<origin rpy="0 0 0" xyz="-0.0030651 -3.2739E-05 0.082353"/>
<mass value="5.2929"/>
<inertia ixx="0.0076169" ixy="1.0121E-05" ixz="-0.00010622" iyy="0.0076597" iyz="6.5117E-05" izz="0.01165"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Base_Link.dae"/>
</geometry>
<material name="">
<color rgba="0.75294 0.75294 0.75294 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Base_Link.STL"/>
</geometry>
</collision>
</link>
<link name="rasmt_Fork_1">
<inertial>
<origin rpy="0 0 0" xyz="0.043764 -0.0066984 -0.032285"/>
<mass value="0.67797"/>
<inertia ixx="0.0014091" ixy="-6.2674E-05" ixz="0.00057897" iyy="0.0017329" iyz="4.7826E-05" izz="0.0019056"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Fork_1.dae"/>
</geometry>
<material name="">
<color rgba="0.75294 0.75294 0.75294 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Fork_1.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Rot_Z_1" type="revolute">
<origin rpy="-3.1416 0 0" xyz="0 0 0.2533"/>
<parent link="rasmt_Base_Link"/>
<child link="rasmt_Fork_1"/>
<axis xyz="0 0 1"/>
<limit effort="5.149" lower="-3.1416" upper="3.1416" velocity="0.99903"/>
</joint>
<link name="rasmt_Link_1">
<inertial>
<origin rpy="0 0 0" xyz="-0.00042264 0.0 0.075171"/>
<mass value="1.8959"/>
<inertia ixx="0.0029317" ixy="-9.417E-06" ixz="5.5248E-05" iyy="0.0031666" iyz="-9.3067E-05" izz="0.0015477"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Link_1.dae"/>
</geometry>
<material name="">
<color rgba="0.75294 0.75294 0.75294 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Link_1.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Rot_Y_1" type="revolute">
<origin rpy="3.1416 0 0" xyz="0.1045 0.0 -0.0795"/>
<parent link="rasmt_Fork_1"/>
<child link="rasmt_Link_1"/>
<axis xyz="0 1 0"/>
<limit effort="5.149" lower="-1.5707" upper="2.2863" velocity="0.99903"/>
</joint>
<link name="rasmt_Fork_2">
<inertial>
<origin rpy="0 0 0" xyz="0.043764 0.0066984 0.032285"/>
<mass value="0.67797"/>
<inertia ixx="0.0014091" ixy="6.2674E-05" ixz="-0.00057897" iyy="0.0017329" iyz="4.7826E-05" izz="0.0019056"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Fork_2.dae"/>
</geometry>
<material name="">
<color rgba="0.75294 0.75294 0.75294 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Fork_2.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Rot_Z_2" type="revolute">
<origin rpy="0 0 0" xyz="0 0.0 0.17502"/>
<parent link="rasmt_Link_1"/>
<child link="rasmt_Fork_2"/>
<axis xyz="0 0 1"/>
<limit effort="5.149" lower="-3.1416" upper="3.1416" velocity="0.99903"/>
</joint>
<link name="rasmt_Link_2">
<inertial>
<origin rpy="0 0 0" xyz="-0.00042264 0.0 0.075171"/>
<mass value="1.8959"/>
<inertia ixx="0.0029317" ixy="-9.4171E-06" ixz="5.5248E-05" iyy="0.0031666" iyz="-9.3067E-05" izz="0.0015477"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Link_2.dae"/>
</geometry>
<material name="">
<color rgba="0.75294 0.75294 0.75294 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Link_2.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Rot_Y_2" type="revolute">
<origin rpy="0 0 0" xyz="0.1045 0.0 0.0795"/>
<parent link="rasmt_Fork_2"/>
<child link="rasmt_Link_2"/>
<axis xyz="0 1 0"/>
<limit effort="5.149" lower="-1.5707" upper="2.2863" velocity="0.99903"/>
</joint>
<link name="rasmt_Fork_3">
<inertial>
<origin rpy="0 0 0" xyz="0.0437644555284691 0.00669835350471771 0.0322846229336455"/>
<mass value="0.677972982551887"/>
<inertia ixx="0.00140908677953665" ixy="6.26743492445164E-05" ixz="-0.000578970009504215" iyy="0.00173285340301686" iyz="4.78263030621606E-05" izz="0.00190561919128035"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Fork_3.dae"/>
</geometry>
<material name="">
<color rgba="0.752941176470588 0.752941176470588 0.752941176470588 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Fork_3.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Rot_Z_3" type="revolute">
<origin rpy="0 0 0" xyz="0 0.0 0.175"/>
<parent link="rasmt_Link_2"/>
<child link="rasmt_Fork_3"/>
<axis xyz="0 0 1"/>
<limit effort="5.149" lower="-3.14159" upper="3.14159" velocity="0.99903"/>
</joint>
<link name="rasmt_Dock_Link">
<inertial>
<origin rpy="0 0 0" xyz="1.08992929317431E-05 0.0 0.0566747528784688"/>
<mass value="1.81040750781824"/>
<inertia ixx="0.00136087225665183" ixy="-1.57915998142718E-06" ixz="-1.31398366941724E-06" iyy="0.00136397029450427" iyz="-0.00010058418524025" izz="0.00124273705160787"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Dock_Link.dae"/>
</geometry>
<material name="">
<color rgba="0.752941176470588 0.752941176470588 0.752941176470588 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Dock_Link.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Rot_Y_4" type="revolute">
<origin rpy="0 0 0" xyz="0.1045 0.0 0.0795"/>
<parent link="rasmt_Fork_3"/>
<child link="rasmt_Dock_Link"/>
<axis xyz="0 1 0"/>
<limit effort="5.149" lower="-1.5707" upper="2.2863" velocity="0.99903"/>
</joint>
<!-- ros_control-plugin -->
<!-- <xacro:if value="${sim == 'gazebo'}">
<gazebo>
<plugin name="gazebo_ros2_control" filename="libgazebo_ros2_control.so">
<parameters>$(find rasmt_support)/config/rasmt_effort_controllers.yaml</parameters>
<robotNamespace>/${prefix}</robotNamespace>
</plugin>
</gazebo>
</xacro:if> -->
<gazebo>
<plugin filename="ign_ros2_control-system" name="ign_ros2_control::IgnitionROS2ControlPlugin">
<parameters>/home/bill-finger/rasms_ws/install/share/rasmt_support/config/rasmt_effort_controllers.yaml</parameters>
</plugin>
</gazebo>
<!-- <gazebo reference="${prefix}_Base_Link">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Fork_1">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Link_1">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Fork_2">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Link_2">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Fork_3">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Dock_Link">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo> -->
<!-- arg for control mode -->
<ros2_control name="rasmt_single_hi" type="system">
<hardware>
<plugin>ign_ros2_control/IgnitionSystem</plugin>
</hardware>
<joint name="rasmt_Rot_Z_1">
<command_interface name="position">
<!-- better to use radians as min max first -->
<param name="min">-1</param>
<param name="max"> 1</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="rasmt_Rot_Y_1">
<command_interface name="position">
<param name="min">-1</param>
<param name="max"> 1</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="rasmt_Rot_Z_2">
<command_interface name="position">
<param name="min">-1</param>
<param name="max"> 1</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="rasmt_Rot_Y_2">
<command_interface name="position">
<param name="min">-1</param>
<param name="max"> 1</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="rasmt_Rot_Z_3">
<command_interface name="position">
<param name="min">-1</param>
<param name="max"> 1</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="rasmt_Rot_Y_4">
<command_interface name="position">
<param name="min">-1</param>
<param name="max"> 1</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
</ros2_control>
<link name="rasmt_tool0"/>
<joint name="rasmt_tool0_fixed" type="fixed">
<parent link="rasmt_Dock_Link"/>
<child link="rasmt_tool0"/>
<origin rpy="0 0 0" xyz="0 0 0.12324"/>
<axis xyz="0 0 0"/>
</joint>
<!--link name="${prefix}_tool_end_point"/>
<joint name="${prefix}_tool_end_point_to_tool0" type="fixed">
<parent link="${prefix}_Dock_Link"/>
<child link="${prefix}_tool_end_point"/>
<origin xyz="0 0 ${gripper_length+0.12324}" rpy="0 0 0"/>
<axis xyz="0 0 0"/>
</joint-->
<link name="rasmt_Grip_Body">
<inertial>
<origin rpy="0 0 0" xyz="0.0016793 -0.00053126 -0.024041"/>
<mass value="0.72351"/>
<inertia ixx="0.00045979" ixy="-2.1983E-08" ixz="-6.5154E-06" iyy="0.00048572" iyz="8.3162E-07" izz="0.00082469"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Grip_Body.dae"/>
</geometry>
<material name="">
<color rgba="0.50196 1 0.50196 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Grip_Body.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Fix" type="fixed">
<origin rpy="-3.14159265358979 0 0" xyz="0 0.0 0.12324"/>
<parent link="rasmt_Dock_Link"/>
<child link="rasmt_Grip_Body"/>
<axis xyz="0 0 0"/>
</joint>
<link name="rasmt_Grip_L">
<inertial>
<origin rpy="0 0 0" xyz="-0.010118 0.010281 -0.0038252"/>
<mass value="0.021223"/>
<inertia ixx="6.5436E-06" ixy="-3.114E-06" ixz="2.8479E-06" iyy="1.9726E-05" iyz="1.6432E-06" izz="1.6355E-05"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="-0.02 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Grip_L.dae"/>
</geometry>
<material name="">
<color rgba="0.75294 1 1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.02 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Grip_L.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Slide_1" type="prismatic">
<origin rpy="3.1416 0 -1.5708" xyz="0 0 -0.09305"/>
<parent link="rasmt_Grip_Body"/>
<child link="rasmt_Grip_L"/>
<axis xyz="1 0 0"/>
<limit effort="20" lower="0.0" upper="0.06" velocity="0.2"/>
</joint>
<link name="rasmt_Grip_R">
<inertial>
<origin rpy="0 0 0" xyz="-0.010118 0.010281 -0.0038252"/>
<mass value="0.021223"/>
<inertia ixx="6.5436E-06" ixy="-3.114E-06" ixz="2.8479E-06" iyy="1.9726E-05" iyz="1.6432E-06" izz="1.6355E-05"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="-0.02 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Grip_R.dae"/>
</geometry>
<material name="">
<color rgba="0.75294 1 1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.02 0 0"/>
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Grip_R.STL"/>
</geometry>
</collision>
</link>
<joint name="rasmt_Slide_2" type="prismatic">
<origin rpy="3.1416 0 1.5708" xyz="0 0 -0.09305"/>
<parent link="rasmt_Grip_Body"/>
<child link="rasmt_Grip_R"/>
<axis xyz="1 0 0"/>
<limit effort="20" lower="0.0" upper="0.06" velocity="0.2"/>
<!--mimic joint="${prefix}_Slide_1"/-->
</joint>
<!-- arg for control mode -->
<ros2_control name="rasmt_hand_hi" type="system">
<hardware>
<plugin>ign_ros2_control/IgnitionSystem</plugin>
</hardware>
<joint name="rasmt_Slide_1">
<command_interface name="position">
<!-- better to use radians as min max first -->
<param name="min">0</param>
<param name="max">10</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="rasmt_Slide_2">
<!-- <param name="mimic">${prefix}_Slide_1</param>
<param name="multiplier">1</param> -->
<command_interface name="position">
<param name="min">0</param>
<param name="max">10</param>
</command_interface>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
</ros2_control>
<!-- ros_control-plugin -->
<!--gazebo>
<plugin name="gazebo_ros2_control" filename="libgazebo_ros2_control.so">
<robot_sim_type>gazebo_ros2_control/GazeboSystem</robot_sim_type>
<parameters>$(find rasmt_support)/config/rasmt_hand_controllers.yaml</parameters>
<robotNamespace>/${prefix}</robotNamespace>
</plugin>
</gazebo-->
<!-- <gazebo reference="${prefix}_Grip_Body">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Grip_L">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Grip_R">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo> -->
</robot>

View file

@ -1,26 +0,0 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="rasmt">
<xacro:arg name="grip" default="true"/>
<xacro:arg name="sim" default="ignition"/>
<xacro:arg name="robot_name" default="rasmt"/>
<xacro:include filename="$(find rasmt_support)/urdf/robot/rasmt_single_macro.xacro"/>
<xacro:if value="$(arg grip)">
<xacro:property name="gripper_length" value="0.12224"/>
</xacro:if>
<link name="world"/>
<xacro:unless value="$(arg grip)">
<xacro:rasmt_single prefix="$(arg robot_name)" parent="world" sim="$(arg sim)" xyz="0 0 0"/>
</xacro:unless>
<!-- <xacro:rasmt_single prefix="$(arg robot_name)" parent="world" sim="$(arg sim)" xyz="0 0 0" gripper_length="${gripper_length}"/> -->
<xacro:if value="$(arg grip)">
<xacro:include filename="$(find rasmt_support)/urdf/tools/rasmt_hand_macro.xacro"/>
<xacro:rasmt_single prefix="$(arg robot_name)" parent="world" sim="$(arg sim)" xyz="0 0 0" gripper_length="${gripper_length}"/>
<xacro:rasmt_hand prefix="$(arg robot_name)" sim="$(arg sim)"/>
</xacro:if>
</robot>

View file

@ -1,68 +0,0 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="rasmt_single_control" params="prefix sim">
<!-- arg for control mode -->
<ros2_control name="rasmt_single_hi" type="system">
<!-- <xacro:if value="${sim == 'gazebo'}">
<hardware>
<plugin>gazebo_ros2_control/GazeboSystem</plugin>
</hardware>
</xacro:if> -->
<xacro:if value="${sim == 'ignition'}">
<hardware>
<plugin>ign_ros2_control/IgnitionSystem</plugin>
</hardware>
</xacro:if>
<xacro:if value="${sim == 'fake'}">
<hardware>
<plugin>fake_components/GenericSystem</plugin>
</hardware>
</xacro:if>
<joint name="${prefix}_Rot_Z_1">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="${prefix}_Rot_Y_1">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="${prefix}_Rot_Z_2">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="${prefix}_Rot_Y_2">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="${prefix}_Rot_Z_3">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="${prefix}_Rot_Y_4">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
</ros2_control>
</xacro:macro>
</robot>

View file

@ -1,26 +0,0 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="rasmt_single_gazebo" params="prefix sim">
<!-- ros_control-plugin -->
<!-- <xacro:if value="${sim == 'gazebo'}">
<gazebo>
<plugin name="gazebo_ros2_control" filename="libgazebo_ros2_control.so">
<parameters>$(find rasmt_support)/config/rasmt_position_velocity_controllers.yaml</parameters>
<robotNamespace>/${prefix}</robotNamespace>
</plugin>
</gazebo>
</xacro:if> -->
<xacro:if value="${sim == 'ignition'}">
<gazebo reference="world"/>
<gazebo>
<plugin filename="ign_ros2_control-system" name="ign_ros2_control::IgnitionROS2ControlPlugin">
<parameters>$(find rasmt_support)/config/rasmt_effort_controllers.yaml</parameters>
<!--controller_manager_node_name>controller_manager</controller_manager_node_name-->
</plugin>
</gazebo>
</xacro:if>
</xacro:macro>
</robot>

View file

@ -1,421 +0,0 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:include filename="$(find rasmt_support)/urdf/robot/rasmt_single_control.xacro"/>
<xacro:include filename="$(find rasmt_support)/urdf/robot/rasmt_single_gazebo.xacro"/>
<xacro:macro name="rasmt_single" params="prefix parent sim xyz gripper_length">
<joint name="to_${parent}" type="fixed">
<parent link="${parent}"/>
<child link="${prefix}_Base_Link"/>
<!--origin xyz="0 0 1.15" rpy="3.14159 0 3.14159"/-->
<origin xyz="${xyz}" rpy="0 0 0"/>
<axis xyz="0 0 0"/>
</joint>
<link name="${prefix}_Base_Link">
<inertial>
<origin xyz="-0.0030651 -3.2739E-05 0.082353" rpy="0 0 0" />
<mass value="5.2929" />
<inertia
ixx="0.0076169"
ixy="1.0121E-05"
ixz="-0.00010622"
iyy="0.0076597"
iyz="6.5117E-05"
izz="0.01165" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Base_Link.dae" />
</geometry>
<material
name="">
<color rgba="0.75294 0.75294 0.75294 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://rasmt_support/meshes/collision/Base_Link.stl" />
</geometry>
</collision>
</link>
<link name="${prefix}_Fork_1">
<inertial>
<origin xyz="0.043764 -0.0066984 -0.032285" rpy="0 0 0" />
<mass value="0.67797" />
<inertia
ixx="0.0014091"
ixy="-6.2674E-05"
ixz="0.00057897"
iyy="0.0017329"
iyz="4.7826E-05"
izz="0.0019056" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://rasmt_support/meshes/visual/Fork_1.dae" />
</geometry>
<material
name="">
<color
rgba="0.75294 0.75294 0.75294 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Fork_1.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Rot_Z_1"
type="revolute">
<origin
xyz="0 0 0.2533"
rpy="-3.1416 0 0" />
<parent
link="${prefix}_Base_Link" />
<child
link="${prefix}_Fork_1" />
<axis
xyz="0 0 1" />
<limit
lower="-3.1416"
upper="3.1416"
effort="5.149"
velocity="0.99903" />
</joint>
<link
name="${prefix}_Link_1">
<inertial>
<origin
xyz="-0.00042264 0.0 0.075171"
rpy="0 0 0" />
<mass
value="1.8959" />
<inertia
ixx="0.0029317"
ixy="-9.417E-06"
ixz="5.5248E-05"
iyy="0.0031666"
iyz="-9.3067E-05"
izz="0.0015477" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Link_1.dae" />
</geometry>
<material
name="">
<color
rgba="0.75294 0.75294 0.75294 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Link_1.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Rot_Y_1"
type="revolute">
<origin
xyz="0.1045 0.0 -0.0795"
rpy="3.1416 0 0" />
<parent
link="${prefix}_Fork_1" />
<child
link="${prefix}_Link_1" />
<axis
xyz="0 1 0" />
<limit
lower="-1.5707"
upper="2.2863"
effort="5.149"
velocity="0.99903" />
</joint>
<link
name="${prefix}_Fork_2">
<inertial>
<origin
xyz="0.043764 0.0066984 0.032285"
rpy="0 0 0" />
<mass
value="0.67797" />
<inertia
ixx="0.0014091"
ixy="6.2674E-05"
ixz="-0.00057897"
iyy="0.0017329"
iyz="4.7826E-05"
izz="0.0019056" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Fork_2.dae" />
</geometry>
<material
name="">
<color
rgba="0.75294 0.75294 0.75294 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Fork_2.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Rot_Z_2"
type="revolute">
<origin
xyz="0 0.0 0.17502"
rpy="0 0 0" />
<parent
link="${prefix}_Link_1" />
<child
link="${prefix}_Fork_2" />
<axis
xyz="0 0 1" />
<limit
lower="-3.1416"
upper="3.1416"
effort="5.149"
velocity="0.99903" />
</joint>
<link
name="${prefix}_Link_2">
<inertial>
<origin
xyz="-0.00042264 0.0 0.075171"
rpy="0 0 0" />
<mass
value="1.8959" />
<inertia
ixx="0.0029317"
ixy="-9.4171E-06"
ixz="5.5248E-05"
iyy="0.0031666"
iyz="-9.3067E-05"
izz="0.0015477" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Link_2.dae" />
</geometry>
<material
name="">
<color
rgba="0.75294 0.75294 0.75294 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Link_2.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Rot_Y_2"
type="revolute">
<origin
xyz="0.1045 0.0 0.0795"
rpy="0 0 0" />
<parent
link="${prefix}_Fork_2" />
<child
link="${prefix}_Link_2" />
<axis
xyz="0 1 0" />
<limit
lower="-1.5707"
upper="2.2863"
effort="5.149"
velocity="0.99903" />
</joint>
<link
name="${prefix}_Fork_3">
<inertial>
<origin
xyz="0.0437644555284691 0.00669835350471771 0.0322846229336455"
rpy="0 0 0" />
<mass
value="0.677972982551887" />
<inertia
ixx="0.00140908677953665"
ixy="6.26743492445164E-05"
ixz="-0.000578970009504215"
iyy="0.00173285340301686"
iyz="4.78263030621606E-05"
izz="0.00190561919128035" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Fork_3.dae" />
</geometry>
<material
name="">
<color
rgba="0.752941176470588 0.752941176470588 0.752941176470588 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Fork_3.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Rot_Z_3"
type="revolute">
<origin
xyz="0 0.0 0.175"
rpy="0 0 0" />
<parent
link="${prefix}_Link_2" />
<child
link="${prefix}_Fork_3" />
<axis
xyz="0 0 1" />
<limit
lower="-3.14159"
upper="3.14159"
effort="5.149"
velocity="0.99903" />
</joint>
<link
name="${prefix}_Dock_Link">
<inertial>
<origin
xyz="1.08992929317431E-05 0.0 0.0566747528784688"
rpy="0 0 0" />
<mass
value="1.81040750781824" />
<inertia
ixx="0.00136087225665183"
ixy="-1.57915998142718E-06"
ixz="-1.31398366941724E-06"
iyy="0.00136397029450427"
iyz="-0.00010058418524025"
izz="0.00124273705160787" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Dock_Link.dae" />
</geometry>
<material
name="">
<color
rgba="0.752941176470588 0.752941176470588 0.752941176470588 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Dock_Link.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Rot_Y_4"
type="revolute">
<origin
xyz="0.1045 0.0 0.0795"
rpy="0 0 0" />
<parent
link="${prefix}_Fork_3" />
<child
link="${prefix}_Dock_Link" />
<axis
xyz="0 1 0" />
<limit
lower="-1.5707"
upper="2.2863"
effort="5.149"
velocity="0.99903" />
</joint>
<xacro:rasmt_single_gazebo prefix="${prefix}" sim="${sim}"/>
<xacro:rasmt_single_control prefix="${prefix}" sim="${sim}"/>
<link name="${prefix}_tool0"/>
<joint name="${prefix}_tool0_fixed" type="fixed">
<parent link="${prefix}_Dock_Link"/>
<child link="${prefix}_tool0"/>
<origin xyz="0 0 0.12324" rpy="0 0 0"/>
<axis xyz="0 0 0"/>
</joint>
<!--link name="${prefix}_tool_end_point"/>
<joint name="${prefix}_tool_end_point_to_tool0" type="fixed">
<parent link="${prefix}_Dock_Link"/>
<child link="${prefix}_tool_end_point"/>
<origin xyz="0 0 ${gripper_length+0.12324}" rpy="0 0 0"/>
<axis xyz="0 0 0"/>
</joint-->
</xacro:macro>
</robot>

View file

@ -1,40 +0,0 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="rasmt_hand_hi" params="prefix sim">
<!-- arg for control mode -->
<ros2_control name="rasmt_hand_hi" type="system">
<xacro:if value="${sim == 'gazebo'}">
<hardware>
<plugin>gazebo_ros2_control/GazeboSystem</plugin>
</hardware>
</xacro:if>
<xacro:if value="${sim == 'ignition'}">
<hardware>
<plugin>ign_ros2_control/IgnitionSystem</plugin>
</hardware>
</xacro:if>
<!-- <xacro:if value="${sim == 'fake'}">
<hardware>
<plugin>fake_components/GenericSystem</plugin>
</hardware>
</xacro:if> -->
<joint name="${prefix}_Slide_1">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="${prefix}_Slide_2">
<command_interface name="effort"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
</ros2_control>
</xacro:macro>
</robot>

View file

@ -1,33 +0,0 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="rasmt_hand_gazebo" params="prefix">
<!-- ros_control-plugin -->
<!--gazebo>
<plugin name="gazebo_ros2_control" filename="libgazebo_ros2_control.so">
<robot_sim_type>gazebo_ros2_control/GazeboSystem</robot_sim_type>
<parameters>$(find rasmt_support)/config/rasmt_hand_controllers.yaml</parameters>
<robotNamespace>/${prefix}</robotNamespace>
</plugin>
</gazebo-->
<!-- <gazebo reference="${prefix}_Grip_Body">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Grip_L">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo>
<gazebo reference="${prefix}_Grip_R">
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<turnGravityOff>true</turnGravityOff>
</gazebo> -->
</xacro:macro>
</robot>

View file

@ -1,189 +0,0 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:include filename="$(find rasmt_support)/urdf/tools/rasmt_hand_gazebo.xacro"/>
<xacro:include filename="$(find rasmt_support)/urdf/tools/rasmt_hand_control.xacro"/>
<xacro:macro name="rasmt_hand" params="prefix sim">
<link
name="${prefix}_Grip_Body">
<inertial>
<origin
xyz="0.0016793 -0.00053126 -0.024041"
rpy="0 0 0" />
<mass
value="0.72351" />
<inertia
ixx="0.00045979"
ixy="-2.1983E-08"
ixz="-6.5154E-06"
iyy="0.00048572"
iyz="8.3162E-07"
izz="0.00082469" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Grip_Body.dae" />
</geometry>
<material
name="">
<color
rgba="0.50196 1 0.50196 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Grip_Body.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Fix"
type="fixed">
<origin
xyz="0 0.0 0.12324"
rpy="-3.14159265358979 0 0" />
<parent
link="${prefix}_Dock_Link" />
<child
link="${prefix}_Grip_Body" />
<axis
xyz="0 0 0" />
</joint>
<link
name="${prefix}_Grip_L">
<inertial>
<origin
xyz="-0.010118 0.010281 -0.0038252"
rpy="0 0 0" />
<mass
value="0.021223" />
<inertia
ixx="6.5436E-06"
ixy="-3.114E-06"
ixz="2.8479E-06"
iyy="1.9726E-05"
iyz="1.6432E-06"
izz="1.6355E-05" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Grip_L.dae" />
</geometry>
<material
name="">
<color
rgba="0.75294 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Grip_L.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Slide_1"
type="prismatic">
<origin
xyz="0 -0.02 -0.09305"
rpy="3.1416 0 -1.5708" />
<parent
link="${prefix}_Grip_Body" />
<child
link="${prefix}_Grip_L" />
<axis
xyz="-1 0 0" />
<limit
effort="20"
lower="0.0"
upper="0.06"
velocity="0.2"/>
</joint>
<link
name="${prefix}_Grip_R">
<inertial>
<origin
xyz="-0.010118 0.010281 -0.0038252"
rpy="0 0 0" />
<mass
value="0.021223" />
<inertia
ixx="6.5436E-06"
ixy="-3.114E-06"
ixz="2.8479E-06"
iyy="1.9726E-05"
iyz="1.6432E-06"
izz="1.6355E-05" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/visual/Grip_R.dae" />
</geometry>
<material
name="">
<color
rgba="0.75294 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://rasmt_support/meshes/collision/Grip_R.stl" />
</geometry>
</collision>
</link>
<joint
name="${prefix}_Slide_2"
type="prismatic">
<origin
xyz="0 0.02 -0.09305"
rpy="3.1416 0 1.5708" />
<parent
link="${prefix}_Grip_Body" />
<child
link="${prefix}_Grip_R" />
<axis
xyz="-1 0 0" />
<limit
effort="20"
lower="0.0"
upper="0.06"
velocity="0.2"/>
<!--mimic joint="${prefix}_Slide_1"/-->
</joint>
<xacro:rasmt_hand_hi prefix="${prefix}" sim="${sim}"/>
<xacro:rasmt_hand_gazebo prefix="${prefix}"/>
</xacro:macro>
</robot>

View file

@ -1,120 +0,0 @@
<sdf version='1.7'>
<world name='default'>
<light name='sun' type='directional'>
<cast_shadows>1</cast_shadows>
<pose>0 0 10 0 -0 0</pose>
<diffuse>0.8 0.8 0.8 1</diffuse>
<specular>0.2 0.2 0.2 1</specular>
<attenuation>
<range>1000</range>
<constant>0.9</constant>
<linear>0.01</linear>
<quadratic>0.001</quadratic>
</attenuation>
<direction>-0.5 0.1 -0.9</direction>
<spot>
<inner_angle>0</inner_angle>
<outer_angle>0</outer_angle>
<falloff>0</falloff>
</spot>
</light>
<plugin name="gazebo_ros_state" filename="libgazebo_ros_state.so">
<update_rate>1.0</update_rate>
</plugin>
<plugin name="ros_link_attacher_plugin" filename="libgazebo_ros_link_attacher_plugin.so"/>
<model name='ground_plane'>
<static>1</static>
<link name='link'>
<collision name='collision'>
<geometry>
<plane>
<normal>0 0 1</normal>
<size>100 100</size>
</plane>
</geometry>
<surface>
<friction>
<ode>
<mu>100</mu>
<mu2>50</mu2>
</ode>
<torsional>
<ode/>
</torsional>
</friction>
<contact>
<ode/>
</contact>
<bounce/>
</surface>
<max_contacts>10</max_contacts>
</collision>
<visual name='visual'>
<cast_shadows>0</cast_shadows>
<geometry>
<plane>
<normal>0 0 1</normal>
<size>100 100</size>
</plane>
</geometry>
<material>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
</material>
</visual>
<self_collide>0</self_collide>
<enable_wind>0</enable_wind>
<kinematic>0</kinematic>
</link>
</model>
<gravity>0 0 -9.8</gravity>
<magnetic_field>6e-06 2.3e-05 -4.2e-05</magnetic_field>
<atmosphere type='adiabatic'/>
<physics type='ode'>
<max_step_size>0.001</max_step_size>
<real_time_factor>1</real_time_factor>
<real_time_update_rate>1000</real_time_update_rate>
</physics>
<scene>
<ambient>0.4 0.4 0.4 1</ambient>
<background>0.7 0.7 0.7 1</background>
<shadows>1</shadows>
</scene>
<wind/>
<spherical_coordinates>
<surface_model>EARTH_WGS84</surface_model>
<latitude_deg>0</latitude_deg>
<longitude_deg>0</longitude_deg>
<elevation>0</elevation>
<heading_deg>0</heading_deg>
</spherical_coordinates>
<state world_name='default'>
<sim_time>46 800000000</sim_time>
<real_time>46 908490360</real_time>
<wall_time>1642692487 464939457</wall_time>
<iterations>46800</iterations>
<model name='ground_plane'>
<pose>0 0 0 0 -0 0</pose>
<scale>1 1 1</scale>
<link name='link'>
<pose>0 0 0 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>
<light name='sun'>
<pose>0 0 10 0 -0 0</pose>
</light>
</state>
<gui fullscreen='0'>
<camera name='user_camera'>
<pose>9.78871 -9.25042 4.66792 0 0.399643 2.3322</pose>
<view_controller>orbit</view_controller>
<projection_type>perspective</projection_type>
</camera>
</gui>
</world>
</sdf>

View file

@ -281,7 +281,7 @@ def generate_launch_description():
control = IncludeLaunchDescription( control = IncludeLaunchDescription(
PythonLaunchDescriptionSource([ PythonLaunchDescriptionSource([
PathJoinSubstitution([ PathJoinSubstitution([
FindPackageShare('rbs_bringup'), FindPackageShare('ur_description'),
'launch', 'launch',
'control.launch.py' 'control.launch.py'
]) ])
@ -297,7 +297,7 @@ def generate_launch_description():
simulation = IncludeLaunchDescription( simulation = IncludeLaunchDescription(
PythonLaunchDescriptionSource([ PythonLaunchDescriptionSource([
PathJoinSubstitution([ PathJoinSubstitution([
FindPackageShare('rbs_bringup'), FindPackageShare('rbs_simulation'),
'launch', 'launch',
'simulation.launch.py' 'simulation.launch.py'
]) ])
@ -312,7 +312,7 @@ def generate_launch_description():
moveit = IncludeLaunchDescription( moveit = IncludeLaunchDescription(
PythonLaunchDescriptionSource([ PythonLaunchDescriptionSource([
PathJoinSubstitution([ PathJoinSubstitution([
FindPackageShare('rbs_bringup'), FindPackageShare('ur_moveit_config'),
'launch', 'launch',
'moveit.launch.py' 'moveit.launch.py'
]) ])
@ -344,7 +344,7 @@ def generate_launch_description():
perception = IncludeLaunchDescription( perception = IncludeLaunchDescription(
PythonLaunchDescriptionSource([ PythonLaunchDescriptionSource([
PathJoinSubstitution([ PathJoinSubstitution([
FindPackageShare('rbs_bringup'), FindPackageShare('rbs_perception'),
'launch', 'launch',
'perception.launch.py' 'perception.launch.py'
]) ])

View file

@ -1,125 +0,0 @@
from launch_ros.actions import Node
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument, ExecuteProcess
from launch_ros.substitutions import FindPackageShare
from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution
from launch.conditions import IfCondition, UnlessCondition
def generate_launch_description():
declared_arguments = []
declared_arguments.append(
DeclareLaunchArgument(
"with_gripper",
default_value="false",
description="With gripper or not?",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"robot_description",
default_value="",
description="robot description param",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"start_joint_controller",
default_value="false",
description="Enable headless mode for robot control",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"initial_joint_controller",
default_value="joint_trajectory_controller",
description="Robot controller to start.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"controllers_file",
default_value="ur_controllers.yaml",
description="YAML file with the controllers configuration.",
)
)
robot_description_content = LaunchConfiguration("robot_description")
runtime_config_package = LaunchConfiguration("runtime_config_package")
controllers_file = LaunchConfiguration("controllers_file")
start_joint_controller = LaunchConfiguration("start_joint_controller")
with_gripper_condition = LaunchConfiguration("with_gripper")
initial_joint_controller = LaunchConfiguration("initial_joint_controller")
initial_joint_controllers_file_path = PathJoinSubstitution(
[FindPackageShare(runtime_config_package), "config", controllers_file]
)
robot_description = {"robot_description": robot_description_content}
control_node = Node(
package="controller_manager",
executable="ros2_control_node",
parameters=[robot_description, initial_joint_controllers_file_path],
output="both",
remappings=[
('motion_control_handle/target_frame', 'target_frame'),
('cartesian_compliance_controller/target_frame', 'target_frame'),
('cartesian_compliance_controller/target_wrench', 'target_wrench'),
('cartesian_compliance_controller/ft_sensor_wrench', 'ft_sensor_wrench'),
]
)
joint_state_broadcaster_spawner = Node(
package="controller_manager",
executable="spawner",
arguments=["joint_state_broadcaster", "-c", "/controller_manager"],
)
# FIXME: Start controllers one controller by one launch or launch it all and switch by runtime?
initial_joint_controller_spawner_started = Node(
package="controller_manager",
executable="spawner",
arguments=[initial_joint_controller, "-c", "/controller_manager"],
condition=IfCondition(start_joint_controller),
)
initial_joint_controller_spawner_stopped = Node(
package="controller_manager",
executable="spawner",
arguments=[initial_joint_controller, "-c", "/controller_manager", "--inactive"],
condition=UnlessCondition(start_joint_controller),
)
gripper_controller = ExecuteProcess(
cmd=['ros2', 'control', 'load_controller', '--set-state', 'active',
"gripper_controller"],
output='screen',
condition=IfCondition(with_gripper_condition)
)
cartesian_motion_controller_spawner = Node(
package="controller_manager",
executable="spawner",
arguments=["cartesian_motion_controller", "--inactive", "-c", "/controller_manager"],
)
motion_control_handle_spawner = Node(
package="controller_manager",
executable="spawner",
arguments=["motion_control_handle", "--inactive", "-c", "/controller_manager"],
)
cartesian_compliance_controller_spawner = Node(
package="controller_manager",
executable="spawner",
arguments=["cartesian_compliance_controller", "--inactive", "-c", "/controller_manager"],
)
nodes_to_start = [
control_node,
joint_state_broadcaster_spawner,
initial_joint_controller_spawner_started,
initial_joint_controller_spawner_stopped,
gripper_controller,
cartesian_motion_controller_spawner,
motion_control_handle_spawner,
cartesian_compliance_controller_spawner
]
return LaunchDescription(declared_arguments + nodes_to_start)

View file

@ -1,198 +0,0 @@
import os
from launch_ros.actions import Node
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch_ros.substitutions import FindPackageShare
from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution
from launch.conditions import IfCondition
from ur_moveit_config.launch_common import load_yaml
def generate_launch_description():
declared_arguments = []
declared_arguments.append(
DeclareLaunchArgument(
"robot_description",
default_value="",
description="robot description string",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"robot_description_semantic",
default_value="",
description="robot description semantic string",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"moveit_config_package",
default_value="ur_moveit_config",
description="MoveIt config package with robot SRDF/XACRO files. Usually the argument \
is not set, it enables use of a custom moveit config.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"moveit_config_file",
default_value="ur.srdf.xacro",
description="MoveIt SRDF/XACRO description file with the robot.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"use_sim_time",
default_value="true",
description="Make MoveIt to use simulation time. This is needed for the trajectory planing in simulation.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"prefix",
default_value='""',
description="Prefix of the joint names, useful for \
multi-robot setup. If changed than also joint names in the controllers' configuration \
have to be updated.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"with_gripper",
default_value="false",
description="With gripper or not?",
)
)
prefix = LaunchConfiguration("prefix")
moveit_config_package = LaunchConfiguration("moveit_config_package")
moveit_config_file = LaunchConfiguration("moveit_config_file")
use_sim_time = LaunchConfiguration("use_sim_time")
with_gripper_condition = LaunchConfiguration("with_gripper")
robot_description_content = LaunchConfiguration("robot_description")
robot_description_semantic_content = LaunchConfiguration("robot_description_semantic")
robot_description = {"robot_description": robot_description_content}
robot_description_semantic = {"robot_description_semantic": robot_description_semantic_content}
use_sim_time = {"use_sim_time": use_sim_time}
world_config_file = PathJoinSubstitution(
[FindPackageShare("rbs_simulation"), "worlds", "mir.sdf"]
)
robot_description_kinematics = PathJoinSubstitution(
[FindPackageShare(moveit_config_package), "config", "kinematics.yaml"]
)
# Planning Configuration
ompl_planning_pipeline_config = {
"move_group": {
"planning_plugin": "ompl_interface/OMPLPlanner",
"request_adapters": """default_planner_request_adapters/AddTimeOptimalParameterization default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateCollision default_planner_request_adapters/FixStartStatePathConstraints""",
"start_state_max_bounds_error": 0.1,
}
}
ompl_planning_yaml = load_yaml("ur_moveit_config", "config/ompl_planning.yaml")
ompl_planning_pipeline_config["move_group"].update(ompl_planning_yaml)
controllers_yaml = load_yaml("ur_moveit_config", "config/controllers.yaml")
moveit_controllers = {
"moveit_simple_controller_manager": controllers_yaml,
"moveit_controller_manager": "moveit_simple_controller_manager/MoveItSimpleControllerManager",
}
trajectory_execution = {
"moveit_manage_controllers": True,
"trajectory_execution.allowed_execution_duration_scaling": 100.0,
"trajectory_execution.allowed_goal_duration_margin": 0.5,
"trajectory_execution.allowed_start_tolerance": 0.01,
}
planning_scene_monitor_parameters = {
"publish_planning_scene": True,
"publish_geometry_updates": True,
"publish_state_updates": True,
"publish_transforms_updates": True,
}
move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
use_sim_time,
],
)
move_topose_action_server = Node(
package="rbs_skill_servers",
executable="move_topose_action_server",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
use_sim_time,
]
)
gripper_control_node = Node(
package="rbs_skill_servers",
executable="gripper_control_action_server",
parameters= [
robot_description,
robot_description_semantic,
robot_description_kinematics,
use_sim_time,
],
condition=IfCondition(with_gripper_condition)
)
move_cartesian_path_action_server = Node(
package="rbs_skill_servers",
executable="move_cartesian_path_action_server",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
use_sim_time,
]
)
move_joint_state_action_server = Node(
package="rbs_skill_servers",
executable="move_to_joint_states_action_server",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
use_sim_time,
]
)
moveit_planning_scene_init = Node(
package="rbs_skill_servers",
executable="moveit_update_planning_scene_service_server",
output="screen",
parameters=[
{'init_scene': world_config_file},
{'models_paths': os.environ['IGN_GAZEBO_RESOURCE_PATH']}
]
)
nodes_to_start = [
move_group_node,
move_topose_action_server,
gripper_control_node,
move_cartesian_path_action_server,
move_joint_state_action_server,
moveit_planning_scene_init
]
return LaunchDescription(declared_arguments + nodes_to_start)

View file

@ -57,7 +57,7 @@ target_compile_definitions(pc_filter
target_link_libraries(pc_filter ${PCL_LIBRARIES}) target_link_libraries(pc_filter ${PCL_LIBRARIES})
install( install(
DIRECTORY config DIRECTORY config launch
DESTINATION share/${PROJECT_NAME} DESTINATION share/${PROJECT_NAME}
) )