别人克隆后没有 install,source 会直接失败。把展开后的 install 放进仓库,符号链接和指向本机 build 的 egg-link 收成真实文件,Python 入口改走当前环境的解释器,这样不用先 colcon build 也能启动。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
arm_dev
2026-10-15 11:04:43 +08:00
parent 3c86441fb0
commit 926a7f9796
1492 changed files with 1302154 additions and 2 deletions
@@ -0,0 +1 @@
robot_state_publisher;joint_state_publisher;joint_state_publisher_gui;joint_state_broadcaster;moveit_ros_move_group;moveit_kinematics;moveit_planners_ompl;moveit_ros_visualization;moveit_servo;moveit_simple_controller_manager;rviz2;flexiv_description;urdf;warehouse_ros_sqlite;xacro
@@ -0,0 +1 @@
/home/cc/ros2/install/flexiv_bringup:/home/cc/ros2/install/flexiv_test_nodes:/home/cc/ros2/install/flexiv_robot_states_broadcaster:/home/cc/ros2/install/flexiv_gripper:/home/cc/ros2/install/flexiv_msgs:/home/cc/ros2/install/flexiv_hardware:/home/cc/ros2/install/arm_bringup:/home/cc/ros2/install/arm_moveit_config:/home/cc/ros2/install/arm_description:/home/cc/ros2/install/flexiv_description:/home/cc/ros2/install/arm_driver_flexiv:/home/cc/ros2/install/arm_control:/home/cc/ros2/install/arm_application:/home/cc/ros2/install/arm_msgs:/home/cc/ros2/install/arm_kinematics:/home/cc/ros2/install/arm_interfaces:/home/cc/anaconda3/envs/ros_flexiv
@@ -0,0 +1 @@
flexiv_description:joint_state_broadcaster:joint_state_publisher:joint_state_publisher_gui:moveit_kinematics:moveit_planners_ompl:moveit_ros_move_group:moveit_ros_visualization:moveit_servo:moveit_simple_controller_manager:robot_state_publisher:rviz2:urdf:warehouse_ros_sqlite:xacro
@@ -0,0 +1,14 @@
# generated from ament/cmake/core/templates/nameConfig-version.cmake.in
set(PACKAGE_VERSION "1.9.1")
set(PACKAGE_VERSION_EXACT False)
set(PACKAGE_VERSION_COMPATIBLE False)
if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}")
set(PACKAGE_VERSION_EXACT True)
set(PACKAGE_VERSION_COMPATIBLE True)
endif()
if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE True)
endif()
@@ -0,0 +1,42 @@
# generated from ament/cmake/core/templates/nameConfig.cmake.in
# prevent multiple inclusion
if(_flexiv_moveit_config_CONFIG_INCLUDED)
# ensure to keep the found flag the same
if(NOT DEFINED flexiv_moveit_config_FOUND)
# explicitly set it to FALSE, otherwise CMake will set it to TRUE
set(flexiv_moveit_config_FOUND FALSE)
elseif(NOT flexiv_moveit_config_FOUND)
# use separate condition to avoid uninitialized variable warning
set(flexiv_moveit_config_FOUND FALSE)
endif()
return()
endif()
set(_flexiv_moveit_config_CONFIG_INCLUDED TRUE)
# output package information
if(NOT flexiv_moveit_config_FIND_QUIETLY)
message(STATUS "Found flexiv_moveit_config: 1.9.1 (${flexiv_moveit_config_DIR})")
endif()
# warn when using a deprecated package
if(NOT "" STREQUAL "")
set(_msg "Package 'flexiv_moveit_config' is deprecated")
# append custom deprecation text if available
if(NOT "" STREQUAL "TRUE")
set(_msg "${_msg} ()")
endif()
# optionally quiet the deprecation message
if(NOT ${flexiv_moveit_config_DEPRECATED_QUIET})
message(DEPRECATION "${_msg}")
endif()
endif()
# flag package as ament-based to distinguish it after being find_package()-ed
set(flexiv_moveit_config_FOUND_AMENT_PACKAGE TRUE)
# include all config extra files
set(_extras "")
foreach(_extra ${_extras})
include("${flexiv_moveit_config_DIR}/${_extra}")
endforeach()
@@ -0,0 +1,24 @@
controller_names:
- rizon_arm_controller
- flexiv_gripper_node
rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var external_axis_prefix)aico1_4_v1_joint2
- $(var prefix)joint1
- $(var prefix)joint2
- $(var prefix)joint3
- $(var prefix)joint4
- $(var prefix)joint5
- $(var prefix)joint6
- $(var prefix)joint7
flexiv_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix)finger_width_joint
@@ -0,0 +1,26 @@
controller_names:
- rizon_arm_controller
- flexiv_gripper_node
rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var external_axis_prefix)aico1_4_v2_joint1
- $(var external_axis_prefix)aico1_4_v2_joint2
- $(var external_axis_prefix)aico1_4_v2_joint_head
- $(var prefix)joint1
- $(var prefix)joint2
- $(var prefix)joint3
- $(var prefix)joint4
- $(var prefix)joint5
- $(var prefix)joint6
- $(var prefix)joint7
flexiv_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix)finger_width_joint
@@ -0,0 +1,4 @@
$(var prefix)arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.05
@@ -0,0 +1,176 @@
planner_configs:
SBLkConfigDefault:
type: geometric::SBL
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ESTkConfigDefault:
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
LBKPIECEkConfigDefault:
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
BKPIECEkConfigDefault:
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
KPIECEkConfigDefault:
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
RRTkConfigDefault:
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
RRTConnectkConfigDefault:
type: geometric::RRTConnect
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
RRTstarkConfigDefault:
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
TRRTkConfigDefault:
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 expression. default: 0.0 set in setup()
PRMkConfigDefault:
type: geometric::PRM
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
PRMstarkConfigDefault:
type: geometric::PRMstar
FMTkConfigDefault:
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
BFMTkConfigDefault:
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
PDSTkConfigDefault:
type: geometric::PDST
STRIDEkConfigDefault:
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
BiTRRTkConfigDefault:
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
LBTRRTkConfigDefault:
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
BiESTkConfigDefault:
type: geometric::BiEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ProjESTkConfigDefault:
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
LazyPRMkConfigDefault:
type: geometric::LazyPRM
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
LazyPRMstarkConfigDefault:
type: geometric::LazyPRMstar
SPARSkConfigDefault:
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
SPARStwokConfigDefault:
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
TrajOptDefault:
type: geometric::TrajOpt
$(var prefix)arm:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var prefix)grav_gripper:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
@@ -0,0 +1,47 @@
controller_names:
- left_rizon_arm_controller
- right_rizon_arm_controller
- left_gripper_node
- right_gripper_node
left_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var external_axis_prefix)aico2_10_v1_joint1
- $(var external_axis_prefix)aico2_10_v1_joint2
- $(var prefix_left)joint1
- $(var prefix_left)joint2
- $(var prefix_left)joint3
- $(var prefix_left)joint4
- $(var prefix_left)joint5
- $(var prefix_left)joint6
- $(var prefix_left)joint7
right_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var prefix_right)joint1
- $(var prefix_right)joint2
- $(var prefix_right)joint3
- $(var prefix_right)joint4
- $(var prefix_right)joint5
- $(var prefix_right)joint6
- $(var prefix_right)joint7
left_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_left)finger_width_joint
right_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_right)finger_width_joint
@@ -0,0 +1,47 @@
controller_names:
- left_rizon_arm_controller
- right_rizon_arm_controller
- left_gripper_node
- right_gripper_node
left_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var external_axis_prefix)aico2_4_v1_joint1
- $(var external_axis_prefix)aico2_4_v1_joint2
- $(var prefix_left)joint1
- $(var prefix_left)joint2
- $(var prefix_left)joint3
- $(var prefix_left)joint4
- $(var prefix_left)joint5
- $(var prefix_left)joint6
- $(var prefix_left)joint7
right_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var prefix_right)joint1
- $(var prefix_right)joint2
- $(var prefix_right)joint3
- $(var prefix_right)joint4
- $(var prefix_right)joint5
- $(var prefix_right)joint6
- $(var prefix_right)joint7
left_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_left)finger_width_joint
right_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_right)finger_width_joint
@@ -0,0 +1,47 @@
controller_names:
- left_rizon_arm_controller
- right_rizon_arm_controller
- left_gripper_node
- right_gripper_node
left_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var external_axis_prefix)aico2_4_v2_joint1
- $(var external_axis_prefix)aico2_4_v2_joint2
- $(var prefix_left)joint1
- $(var prefix_left)joint2
- $(var prefix_left)joint3
- $(var prefix_left)joint4
- $(var prefix_left)joint5
- $(var prefix_left)joint6
- $(var prefix_left)joint7
right_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var prefix_right)joint1
- $(var prefix_right)joint2
- $(var prefix_right)joint3
- $(var prefix_right)joint4
- $(var prefix_right)joint5
- $(var prefix_right)joint6
- $(var prefix_right)joint7
left_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_left)finger_width_joint
right_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_right)finger_width_joint
@@ -0,0 +1,8 @@
$(var prefix_left)arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.05
$(var prefix_right)arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.05
@@ -0,0 +1,228 @@
planner_configs:
SBLkConfigDefault:
type: geometric::SBL
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ESTkConfigDefault:
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
LBKPIECEkConfigDefault:
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
BKPIECEkConfigDefault:
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
KPIECEkConfigDefault:
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
RRTkConfigDefault:
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
RRTConnectkConfigDefault:
type: geometric::RRTConnect
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
RRTstarkConfigDefault:
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
TRRTkConfigDefault:
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 expression. default: 0.0 set in setup()
PRMkConfigDefault:
type: geometric::PRM
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
PRMstarkConfigDefault:
type: geometric::PRMstar
FMTkConfigDefault:
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
BFMTkConfigDefault:
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
PDSTkConfigDefault:
type: geometric::PDST
STRIDEkConfigDefault:
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
BiTRRTkConfigDefault:
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
LBTRRTkConfigDefault:
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
BiESTkConfigDefault:
type: geometric::BiEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ProjESTkConfigDefault:
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
LazyPRMkConfigDefault:
type: geometric::LazyPRM
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
LazyPRMstarkConfigDefault:
type: geometric::LazyPRMstar
SPARSkConfigDefault:
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
SPARStwokConfigDefault:
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
TrajOptDefault:
type: geometric::TrajOpt
$(var prefix_left)arm:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var prefix_right)arm:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var prefix_left)grav_gripper:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var prefix_right)grav_gripper:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
@@ -0,0 +1,51 @@
joint_limits:
$(var external_axis_prefix)aico1_4_v1_joint2:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico1_4_v2_joint1:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico1_4_v2_joint2:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico1_4_v2_joint_head:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico2_4_v1_joint1:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico2_4_v1_joint2:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico2_4_v2_joint1:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico2_4_v2_joint2:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico2_10_v1_joint1:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
$(var external_axis_prefix)aico2_10_v1_joint2:
has_velocity_limits: true
max_velocity: 1.0
has_acceleration_limits: true
max_acceleration: 1.0
@@ -0,0 +1,8 @@
$(var prefix_left)arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.05
$(var prefix_right)arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.05
@@ -0,0 +1,45 @@
controller_names:
- left_rizon_arm_controller
- right_rizon_arm_controller
- left_gripper_node
- right_gripper_node
left_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var prefix_left)joint1
- $(var prefix_left)joint2
- $(var prefix_left)joint3
- $(var prefix_left)joint4
- $(var prefix_left)joint5
- $(var prefix_left)joint6
- $(var prefix_left)joint7
right_rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var prefix_right)joint1
- $(var prefix_right)joint2
- $(var prefix_right)joint3
- $(var prefix_right)joint4
- $(var prefix_right)joint5
- $(var prefix_right)joint6
- $(var prefix_right)joint7
left_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_left)finger_width_joint
right_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var prefix_right)finger_width_joint
@@ -0,0 +1,228 @@
planner_configs:
SBLkConfigDefault:
type: geometric::SBL
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ESTkConfigDefault:
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
LBKPIECEkConfigDefault:
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
BKPIECEkConfigDefault:
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
KPIECEkConfigDefault:
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
RRTkConfigDefault:
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
RRTConnectkConfigDefault:
type: geometric::RRTConnect
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
RRTstarkConfigDefault:
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
TRRTkConfigDefault:
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 expression. default: 0.0 set in setup()
PRMkConfigDefault:
type: geometric::PRM
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
PRMstarkConfigDefault:
type: geometric::PRMstar
FMTkConfigDefault:
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
BFMTkConfigDefault:
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
PDSTkConfigDefault:
type: geometric::PDST
STRIDEkConfigDefault:
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
BiTRRTkConfigDefault:
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
LBTRRTkConfigDefault:
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
BiESTkConfigDefault:
type: geometric::BiEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ProjESTkConfigDefault:
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
LazyPRMkConfigDefault:
type: geometric::LazyPRM
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
LazyPRMstarkConfigDefault:
type: geometric::LazyPRMstar
SPARSkConfigDefault:
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
SPARStwokConfigDefault:
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
TrajOptDefault:
type: geometric::TrajOpt
$(var prefix_left)arm:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var prefix_right)arm:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var prefix_left)grav_gripper:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var prefix_right)grav_gripper:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
@@ -0,0 +1,57 @@
# 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: 0.1
default_acceleration_scaling_factor: 0.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:
$(var robot_sn)_joint1:
has_velocity_limits: true
max_velocity: 2.0944 # Rizon 4
# max_velocity: 1.7453 # Rizon 10
has_acceleration_limits: false
max_acceleration: 0
$(var robot_sn)_joint2:
has_velocity_limits: true
max_velocity: 2.0944 # Rizon 4
# max_velocity: 1.7453 # Rizon 10
has_acceleration_limits: false
max_acceleration: 0
$(var robot_sn)_joint3:
has_velocity_limits: true
max_velocity: 2.4435 # Rizon 4
# max_velocity: 2.0944 # Rizon 10
has_acceleration_limits: false
max_acceleration: 0
$(var robot_sn)_joint4:
has_velocity_limits: true
max_velocity: 2.4435 # Rizon 4
# max_velocity: 2.0944 # Rizon 10
has_acceleration_limits: false
max_acceleration: 0
$(var robot_sn)_joint5:
has_velocity_limits: true
max_velocity: 4.8869 # Rizon 4
# max_velocity: 3.8397 # Rizon 10
has_acceleration_limits: false
max_acceleration: 0
$(var robot_sn)_joint6:
has_velocity_limits: true
max_velocity: 4.8869 # Rizon 4
# max_velocity: 3.8397 # Rizon 10
has_acceleration_limits: false
max_acceleration: 0
$(var robot_sn)_joint7:
has_velocity_limits: true
max_velocity: 4.8869 # Rizon 4
# max_velocity: 3.8397 # Rizon 10
has_acceleration_limits: false
max_acceleration: 0
$(var robot_sn)_finger_width_joint:
has_velocity_limits: true
max_velocity: 0.5
has_acceleration_limits: false
max_acceleration: 0
@@ -0,0 +1,4 @@
$(var robot_sn)_arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.05
@@ -0,0 +1,23 @@
controller_names:
- rizon_arm_controller
- flexiv_gripper_node
rizon_arm_controller:
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- $(var robot_sn)_joint1
- $(var robot_sn)_joint2
- $(var robot_sn)_joint3
- $(var robot_sn)_joint4
- $(var robot_sn)_joint5
- $(var robot_sn)_joint6
- $(var robot_sn)_joint7
flexiv_gripper_node:
action_ns: gripper_action
type: GripperCommand
default: true
joints:
- $(var robot_sn)_finger_width_joint
@@ -0,0 +1,176 @@
planner_configs:
SBLkConfigDefault:
type: geometric::SBL
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ESTkConfigDefault:
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
LBKPIECEkConfigDefault:
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
BKPIECEkConfigDefault:
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
KPIECEkConfigDefault:
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
RRTkConfigDefault:
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
RRTConnectkConfigDefault:
type: geometric::RRTConnect
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
RRTstarkConfigDefault:
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
TRRTkConfigDefault:
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 expression. default: 0.0 set in setup()
PRMkConfigDefault:
type: geometric::PRM
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
PRMstarkConfigDefault:
type: geometric::PRMstar
FMTkConfigDefault:
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
BFMTkConfigDefault:
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
PDSTkConfigDefault:
type: geometric::PDST
STRIDEkConfigDefault:
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
BiTRRTkConfigDefault:
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
LBTRRTkConfigDefault:
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
BiESTkConfigDefault:
type: geometric::BiEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ProjESTkConfigDefault:
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
LazyPRMkConfigDefault:
type: geometric::LazyPRM
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
LazyPRMstarkConfigDefault:
type: geometric::LazyPRMstar
SPARSkConfigDefault:
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
SPARStwokConfigDefault:
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
TrajOptDefault:
type: geometric::TrajOpt
$(var robot_sn)_arm:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
$(var robot_sn)_grav_gripper:
planner_configs:
- SBLkConfigDefault
- ESTkConfigDefault
- LBKPIECEkConfigDefault
- BKPIECEkConfigDefault
- KPIECEkConfigDefault
- RRTkConfigDefault
- RRTConnectkConfigDefault
- RRTstarkConfigDefault
- TRRTkConfigDefault
- PRMkConfigDefault
- PRMstarkConfigDefault
- FMTkConfigDefault
- BFMTkConfigDefault
- PDSTkConfigDefault
- STRIDEkConfigDefault
- BiTRRTkConfigDefault
- LBTRRTkConfigDefault
- BiESTkConfigDefault
- ProjESTkConfigDefault
- LazyPRMkConfigDefault
- LazyPRMstarkConfigDefault
- SPARSkConfigDefault
- SPARStwokConfigDefault
- TrajOptDefault
@@ -0,0 +1,71 @@
###############################################
# Modify all parameters related to servoing here
###############################################
use_gazebo: false # Whether the robot is started in a Gazebo simulation environment
## Properties of incoming commands
command_in_type: "unitless" # "unitless"> in the range [-1:1], as if from joystick. "speed_units"> cmds are in m/s and rad/s
scale:
# Scale parameters are only used if command_in_type=="unitless"
linear: 0.4 # Max linear velocity. Unit is [m/s]. Only used for Cartesian commands.
rotational: 0.8 # Max angular velocity. Unit is [rad/s]. Only used for Cartesian commands.
# Max joint angular/linear velocity. Only used for joint commands on joint_command_in_topic.
joint: 0.5
# Optionally override Servo's internal velocity scaling when near singularity or collision (0.0 = use internal velocity scaling)
# override_velocity_scaling_factor = 0.0 # valid range [0.0:1.0]
## Properties of outgoing commands
publish_period: 0.034 # 1/Nominal publish rate [seconds]
low_latency_mode: false # Set this to true to publish as soon as an incoming Twist command is received (publish_period is ignored)
# What type of topic does your robot driver expect?
# Currently supported are std_msgs/Float64MultiArray or trajectory_msgs/JointTrajectory
command_out_type: trajectory_msgs/JointTrajectory
# What to publish? Can save some bandwidth as most robots only require positions or velocities
publish_joint_positions: true
publish_joint_velocities: true
publish_joint_accelerations: false
## Plugins for smoothing outgoing commands
smoothing_filter_plugin_name: "online_signal_smoothing::ButterworthFilterPlugin"
# If is_primary_planning_scene_monitor is set to true, the Servo server's PlanningScene advertises the /get_planning_scene service,
# which other nodes can use as a source for information about the planning environment.
# NOTE: If a different node in your system is responsible for the "primary" planning scene instance (e.g. the MoveGroup node),
# then is_primary_planning_scene_monitor needs to be set to false.
is_primary_planning_scene_monitor: true
## MoveIt properties
move_group_name: $(var robot_sn)_arm # Often 'manipulator' or 'arm'
planning_frame: $(var robot_sn)_base_link # The MoveIt planning frame. Often 'base_link' or 'world'
## Other frames
ee_frame_name: $(var robot_sn)_flange # The name of the end effector link, used to return the EE pose
robot_link_command_frame: $(var robot_sn)_flange # commands must be given in the frame of a robot link. Usually either the base or end effector
## Stopping behaviour
incoming_command_timeout: 0.1 # Stop servoing if X seconds elapse without a new command
# If 0, republish commands forever even if the robot is stationary. Otherwise, specify num. to publish.
# Important because ROS may drop some messages and we need the robot to halt reliably.
num_outgoing_halt_msgs_to_publish: 4
## Configure handling of singularities and joint limits
lower_singularity_threshold: 17.0 # Start decelerating when the condition number hits this (close to singularity)
hard_stop_singularity_threshold: 30.0 # Stop when the condition number hits this
joint_limit_margin: 0.1 # added as a buffer to joint limits [radians]. If moving quickly, make this larger.
leaving_singularity_threshold_multiplier: 2.0 # Multiply the hard stop limit by this when leaving singularity (see https://github.com/ros-planning/moveit2/pull/620)
## Topic names
cartesian_command_in_topic: ~/delta_twist_cmds # Topic for incoming Cartesian twist commands
joint_command_in_topic: ~/delta_joint_cmds # Topic for incoming joint angle commands
joint_topic: /joint_states
status_topic: ~/status # Publish status to this topic
command_out_topic: /rizon_arm_controller/joint_trajectory # Publish outgoing commands here
## Collision checking for the entire robot body
check_collisions: true # Check collisions?
collision_check_rate: 10.0 # [Hz] Collision-checking can easily bog down a CPU if done too often.
self_collision_proximity_threshold: 0.01 # Start decelerating when a self-collision is this far [m]
scene_collision_proximity_threshold: 0.02 # Start decelerating when a scene collision is this far [m]
@@ -0,0 +1 @@
prepend-non-duplicate;AMENT_PREFIX_PATH;
@@ -0,0 +1,4 @@
# copied from
# ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh
ament_prepend_unique_value AMENT_PREFIX_PATH "$AMENT_CURRENT_PREFIX"
@@ -0,0 +1 @@
prepend-non-duplicate-if-exists;PATH;bin
@@ -0,0 +1,5 @@
# copied from ament_cmake_core/cmake/environment_hooks/environment/path.sh
if [ -d "$AMENT_CURRENT_PREFIX/bin" ]; then
ament_prepend_unique_value PATH "$AMENT_CURRENT_PREFIX/bin"
fi
@@ -0,0 +1 @@
prepend-non-duplicate;CMAKE_PREFIX_PATH;
@@ -0,0 +1,3 @@
# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
colcon_prepend_unique_value CMAKE_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX"
@@ -0,0 +1,3 @@
# generated from colcon_core/shell/template/hook_prepend_value.sh.em
_colcon_prepend_unique_value CMAKE_PREFIX_PATH "$COLCON_CURRENT_PREFIX"
@@ -0,0 +1,46 @@
# generated from ament_package/template/package_level/local_setup.bash.in
# source local_setup.sh from same directory as this file
_this_path=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" && pwd)
# provide AMENT_CURRENT_PREFIX to shell script
AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd)
# store AMENT_CURRENT_PREFIX to restore it before each environment hook
_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX
# trace output
if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
echo "# . \"$_this_path/local_setup.sh\""
fi
. "$_this_path/local_setup.sh"
unset _this_path
# unset AMENT_ENVIRONMENT_HOOKS
# if not appending to them for return
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
unset AMENT_ENVIRONMENT_HOOKS
fi
# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
# list all environment hooks of this package
# source all shell-specific environment hooks of this package
# if not returning them
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
_package_local_setup_IFS=$IFS
IFS=":"
for _hook in $AMENT_ENVIRONMENT_HOOKS; do
# restore AMENT_CURRENT_PREFIX for each environment hook
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
# restore IFS before sourcing other files
IFS=$_package_local_setup_IFS
. "$_hook"
done
unset _hook
IFS=$_package_local_setup_IFS
unset _package_local_setup_IFS
unset AMENT_ENVIRONMENT_HOOKS
fi
unset _package_local_setup_AMENT_CURRENT_PREFIX
unset AMENT_CURRENT_PREFIX
@@ -0,0 +1,2 @@
source;share/flexiv_moveit_config/environment/ament_prefix_path.sh
source;share/flexiv_moveit_config/environment/path.sh
@@ -0,0 +1,184 @@
# generated from ament_package/template/package_level/local_setup.sh.in
# since this file is sourced use either the provided AMENT_CURRENT_PREFIX
# or fall back to the destination set at configure time
: ${AMENT_CURRENT_PREFIX:="/home/cc/ros2/install/flexiv_moveit_config"}
if [ ! -d "$AMENT_CURRENT_PREFIX" ]; then
if [ -z "$COLCON_CURRENT_PREFIX" ]; then
echo "The compile time prefix path '$AMENT_CURRENT_PREFIX' doesn't " \
"exist. Consider sourcing a different extension than '.sh'." 1>&2
else
AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
fi
fi
# function to append values to environment variables
# using colons as separators and avoiding leading separators
ament_append_value() {
# arguments
_listname="$1"
_value="$2"
#echo "listname $_listname"
#eval echo "list value \$$_listname"
#echo "value $_value"
# avoid leading separator
eval _values=\"\$$_listname\"
if [ -z "$_values" ]; then
eval export $_listname=\"$_value\"
#eval echo "set list \$$_listname"
else
# field separator must not be a colon
_ament_append_value_IFS=$IFS
unset IFS
eval export $_listname=\"\$$_listname:$_value\"
#eval echo "append list \$$_listname"
IFS=$_ament_append_value_IFS
unset _ament_append_value_IFS
fi
unset _values
unset _value
unset _listname
}
# function to append non-duplicate values to environment variables
# using colons as separators and avoiding leading separators
ament_append_unique_value() {
# arguments
_listname=$1
_value=$2
#echo "listname $_listname"
#eval echo "list value \$$_listname"
#echo "value $_value"
# check if the list contains the value
eval _values=\$$_listname
_duplicate=
_ament_append_unique_value_IFS=$IFS
IFS=":"
if [ "$AMENT_SHELL" = "zsh" ]; then
ament_zsh_to_array _values
fi
for _item in $_values; do
# ignore empty strings
if [ -z "$_item" ]; then
continue
fi
if [ $_item = $_value ]; then
_duplicate=1
fi
done
unset _item
# append only non-duplicates
if [ -z "$_duplicate" ]; then
# avoid leading separator
if [ -z "$_values" ]; then
eval $_listname=\"$_value\"
#eval echo "set list \$$_listname"
else
# field separator must not be a colon
unset IFS
eval $_listname=\"\$$_listname:$_value\"
#eval echo "append list \$$_listname"
fi
fi
IFS=$_ament_append_unique_value_IFS
unset _ament_append_unique_value_IFS
unset _duplicate
unset _values
unset _value
unset _listname
}
# function to prepend non-duplicate values to environment variables
# using colons as separators and avoiding trailing separators
ament_prepend_unique_value() {
# arguments
_listname="$1"
_value="$2"
#echo "listname $_listname"
#eval echo "list value \$$_listname"
#echo "value $_value"
# check if the list contains the value
eval _values=\"\$$_listname\"
_duplicate=
_ament_prepend_unique_value_IFS=$IFS
IFS=":"
if [ "$AMENT_SHELL" = "zsh" ]; then
ament_zsh_to_array _values
fi
for _item in $_values; do
# ignore empty strings
if [ -z "$_item" ]; then
continue
fi
if [ "$_item" = "$_value" ]; then
_duplicate=1
fi
done
unset _item
# prepend only non-duplicates
if [ -z "$_duplicate" ]; then
# avoid trailing separator
if [ -z "$_values" ]; then
eval export $_listname=\"$_value\"
#eval echo "set list \$$_listname"
else
# field separator must not be a colon
unset IFS
eval export $_listname=\"$_value:\$$_listname\"
#eval echo "prepend list \$$_listname"
fi
fi
IFS=$_ament_prepend_unique_value_IFS
unset _ament_prepend_unique_value_IFS
unset _duplicate
unset _values
unset _value
unset _listname
}
# unset AMENT_ENVIRONMENT_HOOKS
# if not appending to them for return
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
unset AMENT_ENVIRONMENT_HOOKS
fi
# list all environment hooks of this package
ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/flexiv_moveit_config/environment/ament_prefix_path.sh"
ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/flexiv_moveit_config/environment/path.sh"
# source all shell-specific environment hooks of this package
# if not returning them
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
_package_local_setup_IFS=$IFS
IFS=":"
if [ "$AMENT_SHELL" = "zsh" ]; then
ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS
fi
for _hook in $AMENT_ENVIRONMENT_HOOKS; do
if [ -f "$_hook" ]; then
# restore IFS before sourcing other files
IFS=$_package_local_setup_IFS
# trace output
if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
echo "# . \"$_hook\""
fi
. "$_hook"
fi
done
unset _hook
IFS=$_package_local_setup_IFS
unset _package_local_setup_IFS
unset AMENT_ENVIRONMENT_HOOKS
fi
# reset AMENT_CURRENT_PREFIX after each package
# allowing to source multiple package-level setup files
unset AMENT_CURRENT_PREFIX
@@ -0,0 +1,59 @@
# generated from ament_package/template/package_level/local_setup.zsh.in
AMENT_SHELL=zsh
# source local_setup.sh from same directory as this file
_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)
# provide AMENT_CURRENT_PREFIX to shell script
AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)
# store AMENT_CURRENT_PREFIX to restore it before each environment hook
_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX
# function to convert array-like strings into arrays
# to wordaround SH_WORD_SPLIT not being set
ament_zsh_to_array() {
local _listname=$1
local _dollar="$"
local _split="{="
local _to_array="(\"$_dollar$_split$_listname}\")"
eval $_listname=$_to_array
}
# trace output
if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then
echo "# . \"$_this_path/local_setup.sh\""
fi
# the package-level local_setup file unsets AMENT_CURRENT_PREFIX
. "$_this_path/local_setup.sh"
unset _this_path
# unset AMENT_ENVIRONMENT_HOOKS
# if not appending to them for return
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
unset AMENT_ENVIRONMENT_HOOKS
fi
# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
# list all environment hooks of this package
# source all shell-specific environment hooks of this package
# if not returning them
if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then
_package_local_setup_IFS=$IFS
IFS=":"
for _hook in $AMENT_ENVIRONMENT_HOOKS; do
# restore AMENT_CURRENT_PREFIX for each environment hook
AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX
# restore IFS before sourcing other files
IFS=$_package_local_setup_IFS
. "$_hook"
done
unset _hook
IFS=$_package_local_setup_IFS
unset _package_local_setup_IFS
unset AMENT_ENVIRONMENT_HOOKS
fi
unset _package_local_setup_AMENT_CURRENT_PREFIX
unset AMENT_CURRENT_PREFIX
@@ -0,0 +1,39 @@
# generated from colcon_bash/shell/template/package.bash.em
# This script extends the environment for this package.
# a bash script is able to determine its own path if necessary
if [ -z "$COLCON_CURRENT_PREFIX" ]; then
# the prefix is two levels up from the package specific share directory
_colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)"
else
_colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
fi
# function to source another script with conditional trace output
# first argument: the path of the script
# additional arguments: arguments to the script
_colcon_package_bash_source_script() {
if [ -f "$1" ]; then
if [ -n "$COLCON_TRACE" ]; then
echo "# . \"$1\""
fi
. "$@"
else
echo "not found: \"$1\"" 1>&2
fi
}
# source sh script of this package
_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/package.sh"
# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts
COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX"
# source bash hooks
_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/local_setup.bash"
unset COLCON_CURRENT_PREFIX
unset _colcon_package_bash_source_script
unset _colcon_package_bash_COLCON_CURRENT_PREFIX
@@ -0,0 +1,8 @@
source;share/flexiv_moveit_config/hook/cmake_prefix_path.ps1
source;share/flexiv_moveit_config/hook/cmake_prefix_path.dsv
source;share/flexiv_moveit_config/hook/cmake_prefix_path.sh
source;share/flexiv_moveit_config/local_setup.bash
source;share/flexiv_moveit_config/local_setup.dsv
source;share/flexiv_moveit_config/local_setup.ps1
source;share/flexiv_moveit_config/local_setup.sh
source;share/flexiv_moveit_config/local_setup.zsh
@@ -0,0 +1,116 @@
# generated from colcon_powershell/shell/template/package.ps1.em
# function to append a value to a variable
# which uses colons as separators
# duplicates as well as leading separators are avoided
# first argument: the name of the result variable
# second argument: the value to be prepended
function colcon_append_unique_value {
param (
$_listname,
$_value
)
# get values from variable
if (Test-Path Env:$_listname) {
$_values=(Get-Item env:$_listname).Value
} else {
$_values=""
}
$_duplicate=""
# start with no values
$_all_values=""
# iterate over existing values in the variable
if ($_values) {
$_values.Split(":") | ForEach {
# not an empty string
if ($_) {
# not a duplicate of _value
if ($_ -eq $_value) {
$_duplicate="1"
}
if ($_all_values) {
$_all_values="${_all_values}:$_"
} else {
$_all_values="$_"
}
}
}
}
# append only non-duplicates
if (!$_duplicate) {
# avoid leading separator
if ($_all_values) {
$_all_values="${_all_values}:${_value}"
} else {
$_all_values="${_value}"
}
}
# export the updated variable
Set-Item env:\$_listname -Value "$_all_values"
}
# function to prepend a value to a variable
# which uses colons as separators
# duplicates as well as trailing separators are avoided
# first argument: the name of the result variable
# second argument: the value to be prepended
function colcon_prepend_unique_value {
param (
$_listname,
$_value
)
# get values from variable
if (Test-Path Env:$_listname) {
$_values=(Get-Item env:$_listname).Value
} else {
$_values=""
}
# start with the new value
$_all_values="$_value"
# iterate over existing values in the variable
if ($_values) {
$_values.Split(":") | ForEach {
# not an empty string
if ($_) {
# not a duplicate of _value
if ($_ -ne $_value) {
# keep non-duplicate values
$_all_values="${_all_values}:$_"
}
}
}
}
# export the updated variable
Set-Item env:\$_listname -Value "$_all_values"
}
# function to source another script with conditional trace output
# first argument: the path of the script
# additional arguments: arguments to the script
function colcon_package_source_powershell_script {
param (
$_colcon_package_source_powershell_script
)
# source script with conditional trace output
if (Test-Path $_colcon_package_source_powershell_script) {
if ($env:COLCON_TRACE) {
echo ". '$_colcon_package_source_powershell_script'"
}
. "$_colcon_package_source_powershell_script"
} else {
Write-Error "not found: '$_colcon_package_source_powershell_script'"
}
}
# a powershell script is able to determine its own path
# the prefix is two levels up from the package specific share directory
$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName
colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/hook/cmake_prefix_path.ps1"
colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/local_setup.ps1"
Remove-Item Env:\COLCON_CURRENT_PREFIX
@@ -0,0 +1,87 @@
# generated from colcon_core/shell/template/package.sh.em
# This script extends the environment for this package.
# function to prepend a value to a variable
# which uses colons as separators
# duplicates as well as trailing separators are avoided
# first argument: the name of the result variable
# second argument: the value to be prepended
_colcon_prepend_unique_value() {
# arguments
_listname="$1"
_value="$2"
# get values from variable
eval _values=\"\$$_listname\"
# backup the field separator
_colcon_prepend_unique_value_IFS=$IFS
IFS=":"
# start with the new value
_all_values="$_value"
# workaround SH_WORD_SPLIT not being set in zsh
if [ "$(command -v colcon_zsh_convert_to_array)" ]; then
colcon_zsh_convert_to_array _values
fi
# iterate over existing values in the variable
for _item in $_values; do
# ignore empty strings
if [ -z "$_item" ]; then
continue
fi
# ignore duplicates of _value
if [ "$_item" = "$_value" ]; then
continue
fi
# keep non-duplicate values
_all_values="$_all_values:$_item"
done
unset _item
# restore the field separator
IFS=$_colcon_prepend_unique_value_IFS
unset _colcon_prepend_unique_value_IFS
# export the updated variable
eval export $_listname=\"$_all_values\"
unset _all_values
unset _values
unset _value
unset _listname
}
# since a plain shell script can't determine its own path when being sourced
# either use the provided COLCON_CURRENT_PREFIX
# or fall back to the build time prefix (if it exists)
_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/cc/ros2/install/flexiv_moveit_config"
if [ -z "$COLCON_CURRENT_PREFIX" ]; then
if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then
echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2
unset _colcon_package_sh_COLCON_CURRENT_PREFIX
return 1
fi
COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX"
fi
unset _colcon_package_sh_COLCON_CURRENT_PREFIX
# function to source another script with conditional trace output
# first argument: the path of the script
# additional arguments: arguments to the script
_colcon_package_sh_source_script() {
if [ -f "$1" ]; then
if [ -n "$COLCON_TRACE" ]; then
echo "# . \"$1\""
fi
. "$@"
else
echo "not found: \"$1\"" 1>&2
fi
}
# source sh hooks
_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/hook/cmake_prefix_path.sh"
_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/local_setup.sh"
unset _colcon_package_sh_source_script
unset COLCON_CURRENT_PREFIX
# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks
@@ -0,0 +1,32 @@
<?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>flexiv_moveit_config</name>
<version>1.9.1</version>
<description>MoveIt2 configuration and launch files for Flexiv Rizon robots</description>
<maintainer email="munseng.phoon@flexiv.com">Mun Seng Phoon</maintainer>
<license>Apache 2.0</license>
<author email="munseng.phoon@flexiv.com">Mun Seng Phoon</author>
<buildtool_depend>ament_cmake</buildtool_depend>
<exec_depend>robot_state_publisher</exec_depend>
<exec_depend>joint_state_publisher</exec_depend>
<exec_depend>joint_state_publisher_gui</exec_depend>
<exec_depend>joint_state_broadcaster</exec_depend>
<exec_depend>moveit_ros_move_group</exec_depend>
<exec_depend>moveit_kinematics</exec_depend>
<exec_depend>moveit_planners_ompl</exec_depend>
<exec_depend>moveit_ros_visualization</exec_depend>
<exec_depend>moveit_servo</exec_depend>
<exec_depend>moveit_simple_controller_manager</exec_depend>
<exec_depend>rviz2</exec_depend>
<exec_depend>flexiv_description</exec_depend>
<exec_depend>urdf</exec_depend>
<exec_depend>warehouse_ros_sqlite</exec_depend>
<exec_depend>xacro</exec_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
@@ -0,0 +1,50 @@
# generated from colcon_zsh/shell/template/package.zsh.em
# This script extends the environment for this package.
# a zsh script is able to determine its own path if necessary
if [ -z "$COLCON_CURRENT_PREFIX" ]; then
# the prefix is two levels up from the package specific share directory
_colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)"
else
_colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
fi
# function to source another script with conditional trace output
# first argument: the path of the script
# additional arguments: arguments to the script
_colcon_package_zsh_source_script() {
if [ -f "$1" ]; then
if [ -n "$COLCON_TRACE" ]; then
echo "# . \"$1\""
fi
. "$@"
else
echo "not found: \"$1\"" 1>&2
fi
}
# function to convert array-like strings into arrays
# to workaround SH_WORD_SPLIT not being set
colcon_zsh_convert_to_array() {
local _listname=$1
local _dollar="$"
local _split="{="
local _to_array="(\"$_dollar$_split$_listname}\")"
eval $_listname=$_to_array
}
# source sh script of this package
_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/package.sh"
unset convert_zsh_to_array
# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts
COLCON_CURRENT_PREFIX="$_colcon_package_zsh_COLCON_CURRENT_PREFIX"
# source zsh hooks
_colcon_package_zsh_source_script "$COLCON_CURRENT_PREFIX/share/flexiv_moveit_config/local_setup.zsh"
unset COLCON_CURRENT_PREFIX
unset _colcon_package_zsh_source_script
unset _colcon_package_zsh_COLCON_CURRENT_PREFIX
@@ -0,0 +1,359 @@
Panels:
- Class: rviz_common/Displays
Help Height: 78
Name: Displays
Property Tree Widget:
Expanded: ~
Splitter Ratio: 0.5
Tree Height: 814
- 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: rviz_default_plugins/MarkerArray
Enabled: true
Name: MarkerArray
Namespaces:
{}
Topic:
Depth: 100
Durability Policy: Volatile
History Policy: Keep Last
Reliability Policy: Reliable
Value: /rviz_visual_tools
Value: true
- Class: moveit_rviz_plugin/Trajectory
Color Enabled: false
Enabled: true
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
base_link:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
flange:
Alpha: 1
Show Axes: false
Show Trail: false
link1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link4:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link5:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link7:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
world:
Alpha: 1
Show Axes: false
Show Trail: false
Loop Animation: false
Name: Trajectory
Robot Alpha: 0.5
Robot Color: 150; 50; 150
Robot Description: robot_description
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
Value: true
- Class: moveit_rviz_plugin/PlanningScene
Enabled: true
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
base_link:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
flange:
Alpha: 1
Show Axes: false
Show Trail: false
link1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link4:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link5:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
link7:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
world:
Alpha: 1
Show Axes: false
Show Trail: false
Robot Alpha: 1
Show Robot Collision: false
Show Robot Visual: true
Value: true
- Acceleration_Scaling_Factor: 0.1
Class: moveit_rviz_plugin/MotionPlanning
Enabled: false
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
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: rizon_arm
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
Robot Alpha: 1
Show Robot Collision: false
Show Robot Visual: true
Value: false
Velocity_Scaling_Factor: 0.1
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.4956274032592773
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Focal Point:
X: -0.10040300339460373
Y: 0.27989906072616577
Z: 0.3314317762851715
Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
Pitch: 0.7053980827331543
Target Frame: <Fixed Frame>
Value: Orbit (rviz)
Yaw: 5.313577651977539
Saved: ~
Window Geometry:
Displays:
collapsed: false
Height: 863
Hide Left Dock: false
Hide Right Dock: false
QMainWindow State: 000000ff00000000fd00000004000000000000015600000305fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d00000305000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000305fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000305000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000003cf0000030500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Selection:
collapsed: false
Tool Properties:
collapsed: false
Views:
collapsed: false
Width: 1600
X: 1920
Y: 0
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="aico1">
<!-- parameters -->
<xacro:arg name="external_axis_type" default="aico1_4_v1" />
<xacro:arg name="external_axis_prefix" default="" />
<xacro:arg name="arm_prefix" default="" />
<xacro:arg name="robot_sn" default="" />
<xacro:arg name="load_gripper" default="false" />
<xacro:arg name="load_mounted_ft_sensor" default="false" />
<xacro:include filename="$(find flexiv_moveit_config)/srdf/rizon_macro.srdf.xacro" />
<!-- Arm -->
<xacro:rizon_srdf arm_prefix="$(arg arm_prefix)" robot_sn="$(arg robot_sn)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor)" use_virtual_joint="false" />
<!-- Prefixes -->
<xacro:property name="prefix" value="$(arg arm_prefix)$(arg robot_sn)_" />
<xacro:property name="external_axis_prefix" value="$(arg external_axis_prefix)" />
<!-- Virtual Joint and Platform Group -->
<xacro:if value="${'$(arg external_axis_type)' == 'aico1_4_v1'}">
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world"
child_link="${external_axis_prefix}aico1_4_v1_base_link" />
<group name="${external_axis_prefix}aico1_4_v1_platform_${prefix}arm">
<chain base_link="${external_axis_prefix}aico1_4_v1_base_link" tip_link="${prefix}flange" />
</group>
</xacro:if>
<xacro:if value="${'$(arg external_axis_type)' == 'aico1_4_v2'}">
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world"
child_link="${external_axis_prefix}aico1_4_v2_base_link" />
<group name="${external_axis_prefix}aico1_4_v2_platform_${prefix}arm">
<chain base_link="${external_axis_prefix}aico1_4_v2_base_link" tip_link="${prefix}flange" />
</group>
</xacro:if>
<!-- Platform Collisions -->
<xacro:if value="${'$(arg external_axis_type)' == 'aico1_4_v1'}">
<disable_collisions link1="${prefix}base_link" link2="${external_axis_prefix}aico1_4_v1_link2" reason="Adjacent" />
<disable_collisions link1="${prefix}base_link" link2="${external_axis_prefix}aico1_4_v1_link1" reason="Never" />
<disable_collisions link1="${prefix}base_link" link2="${external_axis_prefix}aico1_4_v1_base_link" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${external_axis_prefix}aico1_4_v1_link2" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${external_axis_prefix}aico1_4_v1_link1" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${external_axis_prefix}aico1_4_v1_base_link" reason="Never" />
<disable_collisions link1="${external_axis_prefix}aico1_4_v1_base_link" link2="${external_axis_prefix}aico1_4_v1_link1" reason="Adjacent" />
<disable_collisions link1="${external_axis_prefix}aico1_4_v1_base_link" link2="${external_axis_prefix}aico1_4_v1_link2" reason="Never" />
<disable_collisions link1="${external_axis_prefix}aico1_4_v1_link1" link2="${external_axis_prefix}aico1_4_v1_link2" reason="Adjacent" />
</xacro:if>
<xacro:if value="${'$(arg external_axis_type)' == 'aico1_4_v2'}">
<disable_collisions link1="${prefix}base_link" link2="${external_axis_prefix}aico1_4_v2_link1" reason="Adjacent" />
<disable_collisions link1="${prefix}base_link" link2="${external_axis_prefix}aico1_4_v2_base_link" reason="Never" />
<disable_collisions link1="${prefix}base_link" link2="${external_axis_prefix}aico1_4_v2_neck_link" reason="Never" />
<disable_collisions link1="${prefix}base_link" link2="${external_axis_prefix}aico1_4_v2_head_link" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${external_axis_prefix}aico1_4_v2_link1" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${external_axis_prefix}aico1_4_v2_base_link" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${external_axis_prefix}aico1_4_v2_neck_link" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${external_axis_prefix}aico1_4_v2_head_link" reason="Never" />
<disable_collisions link1="${external_axis_prefix}aico1_4_v2_base_link" link2="${external_axis_prefix}aico1_4_v2_link1" reason="Adjacent" />
<disable_collisions link1="${external_axis_prefix}aico1_4_v2_base_link" link2="${external_axis_prefix}aico1_4_v2_neck_link" reason="Never" />
<disable_collisions link1="${external_axis_prefix}aico1_4_v2_link1" link2="${external_axis_prefix}aico1_4_v2_neck_link" reason="Adjacent" />
<disable_collisions link1="${external_axis_prefix}aico1_4_v2_neck_link" link2="${external_axis_prefix}aico1_4_v2_head_link" reason="Adjacent" />
</xacro:if>
<!-- Load gripper -->
<xacro:if value="$(arg load_gripper)">
<xacro:include filename="$(find flexiv_moveit_config)/srdf/grav.srdf.xacro" />
<xacro:grav_srdf arm_prefix="$(arg arm_prefix)" robot_sn="$(arg robot_sn)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor)" />
</xacro:if>
</robot>
@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="aico2">
<!-- parameters -->
<xacro:arg name="external_axis_type" default="aico2_4_v1" />
<xacro:arg name="external_axis_prefix" default="" />
<xacro:arg name="robot_sn_left" default="" />
<xacro:arg name="robot_sn_right" default="" />
<xacro:arg name="load_gripper_left" default="false" />
<xacro:arg name="load_gripper_right" default="false" />
<xacro:arg name="load_mounted_ft_sensor_left" default="false" />
<xacro:arg name="load_mounted_ft_sensor_right" default="false" />
<xacro:arg name="arm_prefix_left" default="left_" />
<xacro:arg name="arm_prefix_right" default="right_" />
<xacro:include filename="$(find flexiv_moveit_config)/srdf/rizon_macro.srdf.xacro" />
<!-- Left Arm -->
<xacro:rizon_srdf arm_prefix="$(arg arm_prefix_left)" robot_sn="$(arg robot_sn_left)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_left)" use_virtual_joint="false" />
<!-- Right Arm -->
<xacro:rizon_srdf arm_prefix="$(arg arm_prefix_right)" robot_sn="$(arg robot_sn_right)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_right)" use_virtual_joint="false" />
<!-- Prefixes -->
<xacro:property name="prefix_left" value="$(arg arm_prefix_left)$(arg robot_sn_left)_" />
<xacro:property name="prefix_right" value="$(arg arm_prefix_right)$(arg robot_sn_right)_" />
<xacro:property name="external_axis_prefix" value="$(arg external_axis_prefix)" />
<!-- Virtual Joint and External Axis Group -->
<xacro:if value="${'$(arg external_axis_type)' == 'aico2_4_v1'}">
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world"
child_link="${external_axis_prefix}aico2_4_v1_base_link" />
<group name="${external_axis_prefix}aico2_4_v1_platform_${prefix_left}arm">
<chain base_link="${external_axis_prefix}aico2_4_v1_base_link" tip_link="${prefix_left}flange" />
</group>
</xacro:if>
<xacro:if value="${'$(arg external_axis_type)' == 'aico2_4_v2'}">
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world"
child_link="${external_axis_prefix}aico2_4_v2_base_link" />
<group name="${external_axis_prefix}aico2_4_v2_platform_${prefix_left}arm">
<chain base_link="${external_axis_prefix}aico2_4_v2_base_link" tip_link="${prefix_left}flange" />
</group>
</xacro:if>
<xacro:if value="${'$(arg external_axis_type)' == 'aico2_10_v1'}">
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world"
child_link="${external_axis_prefix}aico2_10_v1_base_link" />
<group name="${external_axis_prefix}aico2_10_v1_platform_${prefix_left}arm">
<chain base_link="${external_axis_prefix}aico2_10_v1_base_link" tip_link="${prefix_left}flange" />
</group>
</xacro:if>
<!-- External Axis Collisions -->
<xacro:if value="${'$(arg external_axis_type)' == 'aico2_4_v1'}">
<!-- Left Arm -->
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_4_v1_link2" reason="Adjacent" />
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_4_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_4_v1_base_link" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_4_v1_link2" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_4_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_4_v1_base_link" reason="Never" />
<!-- Right Arm -->
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_4_v1_link2" reason="Adjacent" />
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_4_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_4_v1_base_link" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_4_v1_link2" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_4_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_4_v1_base_link" reason="Never" />
<!-- Left and Right Arms -->
<disable_collisions link1="${prefix_left}base_link" link2="${prefix_right}base_link" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${prefix_right}link1" reason="Never" />
<!-- External Axis internal -->
<disable_collisions link1="${external_axis_prefix}aico2_4_v1_base_link" link2="${external_axis_prefix}aico2_4_v1_link1" reason="Adjacent" />
<disable_collisions link1="${external_axis_prefix}aico2_4_v1_base_link" link2="${external_axis_prefix}aico2_4_v1_link2" reason="Never" />
<disable_collisions link1="${external_axis_prefix}aico2_4_v1_link1" link2="${external_axis_prefix}aico2_4_v1_link2" reason="Adjacent" />
</xacro:if>
<xacro:if value="${'$(arg external_axis_type)' == 'aico2_4_v2'}">
<!-- Left Arm -->
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_4_v2_link2" reason="Adjacent" />
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_4_v2_link1" reason="Never" />
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_4_v2_base_link" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_4_v2_link2" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_4_v2_link1" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_4_v2_base_link" reason="Never" />
<!-- Right Arm -->
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_4_v2_link2" reason="Adjacent" />
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_4_v2_link1" reason="Never" />
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_4_v2_base_link" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_4_v2_link2" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_4_v2_link1" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_4_v2_base_link" reason="Never" />
<!-- Left and Right Arms -->
<disable_collisions link1="${prefix_left}base_link" link2="${prefix_right}base_link" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${prefix_right}link1" reason="Never" />
<!-- External Axis internal -->
<disable_collisions link1="${external_axis_prefix}aico2_4_v2_base_link" link2="${external_axis_prefix}aico2_4_v2_link1" reason="Adjacent" />
<disable_collisions link1="${external_axis_prefix}aico2_4_v2_base_link" link2="${external_axis_prefix}aico2_4_v2_link2" reason="Never" />
<disable_collisions link1="${external_axis_prefix}aico2_4_v2_link1" link2="${external_axis_prefix}aico2_4_v2_link2" reason="Adjacent" />
</xacro:if>
<xacro:if value="${'$(arg external_axis_type)' == 'aico2_10_v1'}">
<!-- Left Arm -->
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_10_v1_link2" reason="Adjacent" />
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_10_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_left}base_link" link2="${external_axis_prefix}aico2_10_v1_base_link" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_10_v1_link2" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_10_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${external_axis_prefix}aico2_10_v1_base_link" reason="Never" />
<!-- Right Arm -->
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_10_v1_link2" reason="Adjacent" />
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_10_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_right}base_link" link2="${external_axis_prefix}aico2_10_v1_base_link" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_10_v1_link2" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_10_v1_link1" reason="Never" />
<disable_collisions link1="${prefix_right}link1" link2="${external_axis_prefix}aico2_10_v1_base_link" reason="Never" />
<!-- Left and Right Arms -->
<disable_collisions link1="${prefix_left}base_link" link2="${prefix_right}base_link" reason="Never" />
<disable_collisions link1="${prefix_left}link1" link2="${prefix_right}link1" reason="Never" />
<!-- External Axis internal -->
<disable_collisions link1="${external_axis_prefix}aico2_10_v1_base_link" link2="${external_axis_prefix}aico2_10_v1_link1" reason="Adjacent" />
<disable_collisions link1="${external_axis_prefix}aico2_10_v1_base_link" link2="${external_axis_prefix}aico2_10_v1_link2" reason="Never" />
<disable_collisions link1="${external_axis_prefix}aico2_10_v1_link1" link2="${external_axis_prefix}aico2_10_v1_link2" reason="Adjacent" />
</xacro:if>
<!-- Load grippers -->
<xacro:if value="$(arg load_gripper_left)">
<xacro:include filename="$(find flexiv_moveit_config)/srdf/grav.srdf.xacro" />
<xacro:grav_srdf arm_prefix="$(arg prefix_left)" robot_sn="$(arg robot_sn_left)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_left)" />
</xacro:if>
<xacro:if value="$(arg load_gripper_right)">
<xacro:include filename="$(find flexiv_moveit_config)/srdf/grav.srdf.xacro" />
<xacro:grav_srdf arm_prefix="$(arg prefix_right)" robot_sn="$(arg robot_sn_right)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_right)" />
</xacro:if>
</robot>
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="grav_srdf" params="arm_prefix robot_sn load_mounted_ft_sensor">
<!-- Prefix defaults to 'arm_prefix_robot_sn' -->
<xacro:property name="prefix" value="${arm_prefix + robot_sn + '_'}" />
<group name="${prefix}grav_gripper">
<joint name="${prefix}gripper_base_joint" />
<joint name="${prefix}open_fingers_tcp_joint" />
<joint name="${prefix}closed_fingers_tcp_joint" />
<joint name="${prefix}left_outer_knuckle_joint" />
<joint name="${prefix}left_inner_knuckle_joint" />
<joint name="${prefix}left_inner_finger_joint" />
<joint name="${prefix}left_inner_finger_pad_joint" />
<joint name="${prefix}left_finger_tcp_joint" />
<joint name="${prefix}right_outer_knuckle_joint" />
<joint name="${prefix}right_inner_knuckle_joint" />
<joint name="${prefix}right_inner_finger_joint" />
<joint name="${prefix}right_inner_finger_pad_joint" />
<joint name="${prefix}right_finger_tcp_joint" />
<joint name="${prefix}finger_width_joint" />
</group>
<passive_joint name="${prefix}left_outer_knuckle_joint" />
<passive_joint name="${prefix}left_inner_knuckle_joint" />
<passive_joint name="${prefix}left_inner_finger_joint" />
<passive_joint name="${prefix}right_outer_knuckle_joint" />
<passive_joint name="${prefix}right_inner_knuckle_joint" />
<passive_joint name="${prefix}right_inner_finger_joint" />
<group_state name="${prefix}open" group="${prefix}grav_gripper">
<joint name="${prefix}finger_width_joint" value="0.1" />
</group_state>
<group_state name="${prefix}closed" group="${prefix}grav_gripper">
<joint name="${prefix}finger_width_joint" value="0.0" />
</group_state>
<end_effector name="${prefix}grav_gripper" parent_link="${prefix}flange"
group="${prefix}grav_gripper" parent_group="${prefix}arm" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}grav_tcp" reason="Never" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}closed_fingers_tcp"
reason="Never" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}right_finger_tcp"
reason="Never" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}left_finger_tcp"
reason="Never" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}left_outer_bar"
reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}left_inner_bar"
reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}right_outer_bar"
reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}right_inner_bar"
reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}left_finger_mount"
reason="Never" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}left_finger_tip"
reason="Never" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}right_finger_mount"
reason="Never" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}right_finger_tip"
reason="Never" />
<disable_collisions link1="${prefix}left_outer_bar" link2="${prefix}left_finger_mount"
reason="Adjacent" />
<disable_collisions link1="${prefix}left_inner_bar" link2="${prefix}left_finger_mount"
reason="Adjacent" />
<disable_collisions link1="${prefix}left_outer_bar" link2="${prefix}left_finger_tip"
reason="Never" />
<disable_collisions link1="${prefix}left_inner_bar" link2="${prefix}left_finger_tip"
reason="Never" />
<disable_collisions link1="${prefix}left_finger_mount" link2="${prefix}left_finger_tip"
reason="Adjacent" />
<disable_collisions link1="${prefix}right_outer_bar" link2="${prefix}right_finger_mount"
reason="Adjacent" />
<disable_collisions link1="${prefix}right_inner_bar" link2="${prefix}right_finger_mount"
reason="Adjacent" />
<disable_collisions link1="${prefix}right_outer_bar" link2="${prefix}right_finger_tip"
reason="Never" />
<disable_collisions link1="${prefix}right_inner_bar" link2="${prefix}right_finger_tip"
reason="Never" />
<disable_collisions link1="${prefix}right_finger_mount" link2="${prefix}right_finger_tip"
reason="Adjacent" />
<disable_collisions link1="${prefix}left_finger_tip" link2="${prefix}closed_fingers_tcp"
reason="Adjacent" />
<disable_collisions link1="${prefix}right_finger_tip" link2="${prefix}closed_fingers_tcp"
reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}link7" reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link" link2="${prefix}flange"
reason="Adjacent" />
<disable_collisions link1="${prefix}closed_fingers_tcp" link2="${prefix}link7"
reason="Adjacent" />
<disable_collisions link1="${prefix}closed_fingers_tcp" link2="${prefix}flange"
reason="Adjacent" />
<xacro:if value="${load_mounted_ft_sensor}">
<disable_collisions link1="${prefix}grav_base_link"
link2="${prefix}wrist-sensor.base_link"
reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link"
link2="${prefix}wrist-sensor.proximal_link" reason="Adjacent" />
<disable_collisions link1="${prefix}grav_base_link"
link2="${prefix}wrist-sensor.distal_link" reason="Adjacent" />
<disable_collisions link1="${prefix}closed_fingers_tcp" link2="${prefix}link7"
reason="Adjacent" />
<disable_collisions link1="${prefix}closed_fingers_tcp" link2="${prefix}flange"
reason="Adjacent" />
<disable_collisions link1="${prefix}closed_fingers_tcp"
link2="${prefix}wrist-sensor.base_link" reason="Adjacent" />
<disable_collisions link1="${prefix}closed_fingers_tcp"
link2="${prefix}wrist-sensor.proximal_link" reason="Adjacent" />
<disable_collisions link1="${prefix}closed_fingers_tcp"
link2="${prefix}wrist-sensor.distal_link" reason="Adjacent" />
</xacro:if>
</xacro:macro>
</robot>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="$(arg rizon_type)">
<!-- parameters -->
<xacro:arg name="rizon_type" default="Rizon4" />
<xacro:arg name="arm_prefix" default="" />
<xacro:arg name="robot_sn" default="" />
<xacro:arg name="load_gripper" default="false" />
<xacro:arg name="load_mounted_ft_sensor" default="false" />
<xacro:include filename="$(find flexiv_moveit_config)/srdf/rizon_macro.srdf.xacro" />
<xacro:rizon_srdf arm_prefix="$(arg arm_prefix)" robot_sn="$(arg robot_sn)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor)" />
<!-- Load gripper -->
<xacro:if value="$(arg load_gripper)">
<xacro:include filename="$(find flexiv_moveit_config)/srdf/grav.srdf.xacro" />
<xacro:grav_srdf arm_prefix="$(arg arm_prefix)" robot_sn="$(arg robot_sn)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor)" />
</xacro:if>
</robot>
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="rizon_dual">
<!-- parameters -->
<xacro:arg name="robot_sn_left" default="" />
<xacro:arg name="robot_sn_right" default="" />
<xacro:arg name="load_gripper_left" default="false" />
<xacro:arg name="load_gripper_right" default="false" />
<xacro:arg name="load_mounted_ft_sensor_left" default="false" />
<xacro:arg name="load_mounted_ft_sensor_right" default="false" />
<xacro:arg name="prefix_left" default="left_" />
<xacro:arg name="prefix_right" default="right_" />
<xacro:include filename="$(find flexiv_moveit_config)/srdf/rizon_macro.srdf.xacro" />
<!-- Left Arm -->
<xacro:rizon_srdf arm_prefix="$(arg prefix_left)" robot_sn="$(arg robot_sn_left)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_left)" />
<!-- Right Arm -->
<xacro:rizon_srdf arm_prefix="$(arg prefix_right)" robot_sn="$(arg robot_sn_right)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_right)" />
<!-- Arm Prefixes -->
<xacro:property name="left_arm_prefix" value="$(arg prefix_left)$(arg robot_sn_left)_" />
<xacro:property name="right_arm_prefix" value="$(arg prefix_right)$(arg robot_sn_right)_" />
<!-- Left and Right Arms Collisions -->
<disable_collisions link1="${left_arm_prefix}base_link" link2="${right_arm_prefix}base_link" reason="Never" />
<disable_collisions link1="${left_arm_prefix}link1" link2="${right_arm_prefix}link1" reason="Never" />
<!-- Load grippers -->
<xacro:if value="$(arg load_gripper_left)">
<xacro:include filename="$(find flexiv_moveit_config)/srdf/grav.srdf.xacro" />
<xacro:grav_srdf arm_prefix="$(arg prefix_left)" robot_sn="$(arg robot_sn_left)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_left)" />
</xacro:if>
<xacro:if value="$(arg load_gripper_right)">
<xacro:include filename="$(find flexiv_moveit_config)/srdf/grav.srdf.xacro" />
<xacro:grav_srdf arm_prefix="$(arg prefix_right)" robot_sn="$(arg robot_sn_right)"
load_mounted_ft_sensor="$(arg load_mounted_ft_sensor_right)" />
</xacro:if>
</robot>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="rizon_srdf" params="arm_prefix robot_sn load_mounted_ft_sensor use_virtual_joint:=true">
<!-- Prefix defaults to 'arm_prefix_robot_sn' -->
<xacro:property name="prefix" value="${arm_prefix + robot_sn + '_'}" />
<group name="${prefix}arm">
<chain base_link="${prefix}base_link" tip_link="${prefix}flange" />
</group>
<group_state name="${prefix}home" group="${prefix}arm">
<joint name="${prefix}joint1" value="0" />
<joint name="${prefix}joint2" value="${-2*pi/9}" />
<joint name="${prefix}joint3" value="0" />
<joint name="${prefix}joint4" value="${pi/2}" />
<joint name="${prefix}joint5" value="0" />
<joint name="${prefix}joint6" value="${2*pi/9}" />
<joint name="${prefix}joint7" value="0" />
</group_state>
<xacro:if value="${use_virtual_joint}">
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world"
child_link="${prefix}base_link" />
</xacro:if>
<disable_collisions link1="${prefix}base_link" link2="${prefix}link1" reason="Adjacent" />
<disable_collisions link1="${prefix}base_link" link2="${prefix}link2" reason="Never" />
<disable_collisions link1="${prefix}base_link" link2="${prefix}link3" reason="Never" />
<disable_collisions link1="${prefix}base_link" link2="${prefix}link4" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${prefix}link2" reason="Adjacent" />
<disable_collisions link1="${prefix}link1" link2="${prefix}link3" reason="Never" />
<disable_collisions link1="${prefix}link1" link2="${prefix}link4" reason="Never" />
<disable_collisions link1="${prefix}link2" link2="${prefix}link3" reason="Adjacent" />
<disable_collisions link1="${prefix}link2" link2="${prefix}link4" reason="Never" />
<disable_collisions link1="${prefix}link2" link2="${prefix}link5" reason="Never" />
<disable_collisions link1="${prefix}link3" link2="${prefix}link4" reason="Adjacent" />
<disable_collisions link1="${prefix}link3" link2="${prefix}link5" reason="Never" />
<disable_collisions link1="${prefix}link3" link2="${prefix}link6" reason="Never" />
<disable_collisions link1="${prefix}link3" link2="${prefix}link7" reason="Never" />
<disable_collisions link1="${prefix}link4" link2="${prefix}link5" reason="Adjacent" />
<disable_collisions link1="${prefix}link4" link2="${prefix}link6" reason="Never" />
<disable_collisions link1="${prefix}link4" link2="${prefix}link7" reason="Never" />
<disable_collisions link1="${prefix}link5" link2="${prefix}link6" reason="Adjacent" />
<disable_collisions link1="${prefix}link6" link2="${prefix}link7" reason="Adjacent" />
<disable_collisions link1="${prefix}link7" link2="${prefix}flange" reason="Adjacent" />
<xacro:if value="${load_mounted_ft_sensor}">
<!-- Disable collisions for FT sensor fixed-link chain -->
<disable_collisions link1="${prefix}link7" link2="${prefix}wrist-sensor.base_link" reason="Adjacent" />
<disable_collisions link1="${prefix}wrist-sensor.base_link" link2="${prefix}wrist-sensor.proximal_link" reason="Adjacent" />
<disable_collisions link1="${prefix}wrist-sensor.proximal_link" link2="${prefix}wrist-sensor.distal_link" reason="Adjacent" />
<disable_collisions link1="${prefix}wrist-sensor.distal_link" link2="${prefix}flange" reason="Adjacent" />
<disable_collisions link1="${prefix}link7" link2="${prefix}wrist-sensor.proximal_link" reason="Adjacent" />
<disable_collisions link1="${prefix}link7" link2="${prefix}wrist-sensor.distal_link" reason="Adjacent" />
</xacro:if>
</xacro:macro>
</robot>