Add overall structure to package

This commit is contained in:
Seungjae Ryan Lee
2019-02-03 17:16:55 +09:00
commit c7362ee828
37 changed files with 5002 additions and 0 deletions
+248
View File
@@ -0,0 +1,248 @@
################################################################################
# Custom
################################################################################
################################################################################
# JetBrains.gitignore
################################################################################
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
################################################################################
# Python.gitignore
################################################################################
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
################################################################################
# ROS.gitignore
################################################################################
devel/
logs/
build/
bin/
lib/
msg_gen/
srv_gen/
msg/*Action.msg
msg/*ActionFeedback.msg
msg/*ActionGoal.msg
msg/*ActionResult.msg
msg/*Feedback.msg
msg/*Goal.msg
msg/*Result.msg
msg/_*.py
build_isolated/
devel_isolated/
# Generated by dynamic reconfigure
*.cfgc
/cfg/cpp/
/cfg/*.py
# Ignore generated docs
*.dox
*.wikidoc
# eclipse stuff
.project
.cproject
# qcreator stuff
CMakeLists.txt.user
srv/_*.py
*.pcd
*.pyc
qtcreator-*
*.user
/planning/cfg
/planning/docs
/planning/src
*~
# Emacs
.#*
# Catkin custom files
CATKIN_IGNORE
+219
View File
@@ -0,0 +1,219 @@
cmake_minimum_required(VERSION 2.8.3)
project(kair_algorithms)
## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
geometry_msgs
rospy
sensor_msgs
std_msgs
control_msgs
trajectory_msgs
)
add_message_files( DIRECTORY msg
FILES
GoalObs.msg
)
generate_messages(
DEPENDENCIES
std_msgs
sensor_msgs
)
catkin_package(
CATKIN_DEPENDS
rospy
message_generation
message_runtime
cv_bridge
)
## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)
## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()
################################################
## Declare ROS messages, services and actions ##
################################################
## To declare and build messages, services or actions from within this
## package, follow these steps:
## * Let MSG_DEP_SET be the set of packages whose message types you use in
## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
## * In the file package.xml:
## * add a build_depend tag for "message_generation"
## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET
## * If MSG_DEP_SET isn't empty the following dependency has been pulled in
## but can be declared for certainty nonetheless:
## * add a run_depend tag for "message_runtime"
## * In this file (CMakeLists.txt):
## * add "message_generation" and every package in MSG_DEP_SET to
## find_package(catkin REQUIRED COMPONENTS ...)
## * add "message_runtime" and every package in MSG_DEP_SET to
## catkin_package(CATKIN_DEPENDS ...)
## * uncomment the add_*_files sections below as needed
## and list every .msg/.srv/.action file to be processed
## * uncomment the generate_messages entry below
## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
## Generate services in the 'srv' folder
# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )
## Generate actions in the 'action' folder
# add_action_files(
# FILES
# Action1.action
# Action2.action
# )
## Generate added messages and services with any dependencies listed here
# generate_messages(
# DEPENDENCIES
# geometry_msgs# sensor_msgs# std_msgs
# )
################################################
## Declare ROS dynamic reconfigure parameters ##
################################################
## To declare and build dynamic reconfigure parameters within this
## package, follow these steps:
## * In the file package.xml:
## * add a build_depend and a run_depend tag for "dynamic_reconfigure"
## * In this file (CMakeLists.txt):
## * add "dynamic_reconfigure" to
## find_package(catkin REQUIRED COMPONENTS ...)
## * uncomment the "generate_dynamic_reconfigure_options" section below
## and list every .cfg file to be processed
## Generate dynamic reconfigure parameters in the 'cfg' folder
# generate_dynamic_reconfigure_options(
# cfg/DynReconf1.cfg
# cfg/DynReconf2.cfg
# )
###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if your package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES DDPG
# CATKIN_DEPENDS geometry_msgs rospy sensor_msgs std_msgs tf
# DEPENDS system_lib
CATKIN_DEPENDS message_runtime
)
###########
## Build ##
###########
## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
## Declare a C++ library
# add_library(${PROJECT_NAME}
# src/${PROJECT_NAME}/DDPG.cpp
# )
## Add cmake target dependencies of the library
## as an example, code may need to be generated before libraries
## either from message generation or dynamic reconfigure
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executable(${PROJECT_NAME}_node src/DDPG_node.cpp)
## Rename C++ executable without prefix
## The above recommended prefix causes long target names, the following renames the
## target back to the shorter version for ease of user use
## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
## Add cmake target dependencies of the executable
## same as for the library above
# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node
# ${catkin_LIBRARIES}
# )
#############
## Install ##
#############
# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# install(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
## Mark executables and/or libraries for installation
# install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_node
# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
## Mark cpp header files for installation
# install(DIRECTORY include/${PROJECT_NAME}/
# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
# FILES_MATCHING PATTERN "*.h"
# PATTERN ".svn" EXCLUDE
# )
## Mark other files for installation (e.g. launch and bag files, etc.)
# install(FILES
# # myfile1
# # myfile2
# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
# )
#############
## Testing ##
#############
## Add gtest based cpp test target and link libraries
# catkin_add_gtest(${PROJECT_NAME}-test test/test_DDPG.cpp)
# if(TARGET ${PROJECT_NAME}-test)
# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
# endif()
## Add folders to be run by python nosetests
# catkin_add_nosetests(test)
+34
View File
@@ -0,0 +1,34 @@
# Research Repository Structure
We follow the `.git` strategy specified [here](https://answers.ros.org/question/257855/git-strategy-for-catkin-and-package-folders/), creating packages into separate repositories.
These are repositories checked to set this structure:
- [cadrl_ros](https://github.com/mfe7/cadrl_ros)
- [ros_best_practices](https://github.com/leggedrobotics/ros_best_practices)
## TODO
1. Add [medipixel/reinforcement_learning_examples](https://github.com/medipixel/reinforcement_learning_examples) to `/scripts/`.
2. `launch` and `urdf` contains code for Sawyer robot. We plan to use OpenManipulator.
3. `package.xml` should be updated appropriately.
4. Get repository verified by a ROS expert.
## Repository Structure
```
+ launch/ -
+ msg/ - These are message descriptions for ROS.
+ scripts/ - This directory contains RL algorithms.
+ urdf/ - This package contains a C++ parser for the Unified Robot Description Format (URDF),
- .flake8 - This file specifies what rules should be enforced via flake8.
- .gitignore - This file specifies which folders and files to ignore in Git.
- CMakeLists.txt - This file specifies behavior of CMake.
- package.xml - This file specifies the ROS package.
- README.md - You are here
```
- **roslaunch/** [http://wiki.ros.org/roslaunch/XML](http://wiki.ros.org/roslaunch/XML).
- **msg/** [http://wiki.ros.org/msg](http://wiki.ros.org/msg)
- **urdf/** [http://wiki.ros.org/urdf](http://wiki.ros.org/urdf)
- **CMakeLists.txt** [http://wiki.ros.org/catkin/CMakeLists.txt](http://wiki.ros.org/catkin/CMakeLists.txt)
- **package.xml** [http://wiki.ros.org/catkin/package.xml](http://wiki.ros.org/catkin/package.xml)
+13
View File
@@ -0,0 +1,13 @@
<launch>
<!--Sawyer URDF-->
<arg name="sawyer_urdf" value="robot_description"/>
<param name="$(arg sawyer_urdf)" textfile="$(find ddpg)/urdf/sawyer.urdf"/>
<!--Target pose publishing node-->
<!--node name="basic_ui" pkg="telehaptics" type="basic_ui.py" output="screen"/-->
<!--Bare velocity controller node -->
<node name="velocity_control" pkg="ddpg" type="sawyer_velocity_control.py" output="screen"/>
</launch>
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0"?>
<launch>
<arg name="controllers" default="joint_state_controller joint_trajectory_vel_controller"/>
<arg name="hardware_interface" default="hardware_interface/VelocityJointInterface"/>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
<!-- the urdf/sdf parameter -->
<param name="robot_description"
command="$(find xacro)/xacro.py $(find yumi_description)/urdf/yumi.urdf.xacro prefix:=$(arg hardware_interface)"/>
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -model yumi" respawn="false" output="screen" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher">
<remap from="/joint_states" to="/yumi/joint_states" />
</node>
<!-- Load joint controller configurations from YAML file to parameter server -->
<rosparam file="$(find yumi_control)/config/controllers.yaml" command="load" ns="/yumi"/>
<!-- load the controllers -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="$(arg controllers)" ns="/yumi">
</node>
</launch>
+7
View File
@@ -0,0 +1,7 @@
##the name of the output
Header header
float64[] goal_cart_pos
##the value to set output
+9
View File
@@ -0,0 +1,9 @@
<package format="2">
<name>kair_algorithms</name>
<version>0.0.0</version>
<description>
This package provides RL algorithms.
</description>
<maintainer email="todo@todo.todo">TODO</maintainer>
<license>TODO</license>
</package>
+5
View File
@@ -0,0 +1,5 @@
[flake8]
ignore = E203, E266, E501, W503
max-line-length = 88
max-complexity = 18
select = B,C,E,F,W,T4,B9
+6
View File
@@ -0,0 +1,6 @@
[settings]
multi_line_output=3
include_trailing_comma=True
force_grid_wrap=0
combine_as_imports=True
line_length=88
+573
View File
@@ -0,0 +1,573 @@
[MASTER]
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS
# Add files or directories matching the regex patterns to the blacklist. The
# regex matches against base names, not paths.
ignore-patterns=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the
# number of processors available to use.
jobs=1
# Control the amount of potential inferred values when inferring a single
# object. This can help the performance when dealing with large functions or
# complex, nested conditions.
limit-inference-results=100
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
# Pickle collected data for later comparisons.
persistent=yes
# Specify a configuration file.
#rcfile=
# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.
confidence=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once). You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use "--disable=all --enable=classes
# --disable=W".
disable=print-statement,
bad-continuation,
no-else-return,
broad-except,
missing-docstring,
invalid-name,
parameter-unpacking,
unpacking-in-except,
old-raise-syntax,
backtick,
long-suffix,
old-ne-operator,
old-octal-literal,
import-star-module-level,
non-ascii-bytes-literal,
raw-checker-failed,
bad-inline-option,
locally-disabled,
locally-enabled,
file-ignored,
suppressed-message,
useless-suppression,
deprecated-pragma,
use-symbolic-message-instead,
apply-builtin,
basestring-builtin,
buffer-builtin,
cmp-builtin,
coerce-builtin,
execfile-builtin,
file-builtin,
long-builtin,
raw_input-builtin,
reduce-builtin,
standarderror-builtin,
unicode-builtin,
xrange-builtin,
coerce-method,
delslice-method,
getslice-method,
setslice-method,
no-absolute-import,
old-division,
dict-iter-method,
dict-view-method,
next-method-called,
metaclass-assignment,
indexing-exception,
raising-string,
reload-builtin,
oct-method,
hex-method,
nonzero-method,
cmp-method,
input-builtin,
round-builtin,
intern-builtin,
unichr-builtin,
map-builtin-not-iterating,
zip-builtin-not-iterating,
range-builtin-not-iterating,
filter-builtin-not-iterating,
using-cmp-argument,
eq-without-hash,
div-method,
idiv-method,
rdiv-method,
exception-message-attribute,
invalid-str-codec,
sys-max-int,
bad-python3-import,
deprecated-string-function,
deprecated-str-translate-call,
deprecated-itertools-function,
deprecated-types-field,
next-method-defined,
dict-items-not-iterating,
dict-keys-not-iterating,
dict-values-not-iterating,
deprecated-operator-function,
deprecated-urllib-function,
xreadlines-attribute,
deprecated-sys-function,
exception-escape,
comprehension-escape,
no-member,
useless-import-alias,
too-many-locals,
too-few-public-methods,
arguments-differ,
duplicate-code,
protected-access,
too-many-instance-attributes,
fixme
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=c-extension-no-member
[REPORTS]
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details.
#msg-template=
# Set the output format. Available formats are text, parseable, colorized, json
# and msvs (visual studio). You can also give a reporter class, e.g.
# mypackage.mymodule.MyReporterClass.
output-format=text
# Tells whether to display a full report or only the messages.
reports=no
# Activate the evaluation score.
score=yes
[REFACTORING]
# Maximum number of nested blocks for function / method body
max-nested-blocks=5
# Complete name of functions that never returns. When checking for
# inconsistent-return-statements if a never returning function is called then
# it will be considered as an explicit return statement and no message will be
# printed.
never-returning-functions=sys.exit
[LOGGING]
# Logging modules to check that the string format arguments are in logging
# function parameter format.
logging-modules=logging
[SPELLING]
# Limits count of emitted suggestions for spelling mistakes.
max-spelling-suggestions=4
# Spelling dictionary name. Available dictionaries: none. To make it working
# install python-enchant package..
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to indicated private dictionary in
# --spelling-private-dict-file option instead of raising a message.
spelling-store-unknown-words=no
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,
XXX,
TODO
[TYPECHECK]
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# Tells whether to warn about missing members when the owner of the attribute
# is inferred to be None.
ignore-none=yes
# This flag controls whether pylint should warn about no-member and similar
# checks whenever an opaque object is returned when inferring. The inference
# can return multiple potential results while evaluating a Python object, but
# some branches might not be evaluated, which results in partial inference. In
# that case, it might be useful to still emit no-member and other checks for
# the rest of the inferred objects.
ignore-on-opaque-inference=yes
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# Show a hint with possible names when a member name was not found. The aspect
# of finding the hint is based on edit distance.
missing-member-hint=yes
# The minimum edit distance a name should have in order to be considered a
# similar match for a missing member name.
missing-member-hint-distance=1
# The total number of similar names that should be taken in consideration when
# showing a hint for a missing member.
missing-member-max-choices=1
[VARIABLES]
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
# Tells whether unused global variables should be treated as a violation.
allow-global-unused-variables=yes
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,
_cb
# A regular expression matching the name of dummy variables (i.e. expected to
# not be used).
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
# Argument names that match this expression will be ignored. Default to name
# with leading underscore.
ignored-argument-names=_.*|^ignored_|^unused_
# Tells whether we should check for unused import in __init__ files.
init-import=no
# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
[FORMAT]
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
# Maximum number of characters on a single line.
max-line-length=100
# Maximum number of lines in a module.
max-module-lines=1000
# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,
dict-separator
# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
single-line-class-stmt=no
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no
[SIMILARITIES]
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
# Minimum lines number of a similarity.
min-similarity-lines=4
[BASIC]
# Naming style matching correct argument names.
argument-naming-style=snake_case
# Regular expression matching correct argument names. Overrides argument-
# naming-style.
#argument-rgx=
# Naming style matching correct attribute names.
attr-naming-style=snake_case
# Regular expression matching correct attribute names. Overrides attr-naming-
# style.
#attr-rgx=
# Bad variable names which should always be refused, separated by a comma.
bad-names=foo,
bar,
baz,
toto,
tutu,
tata
# Naming style matching correct class attribute names.
class-attribute-naming-style=any
# Regular expression matching correct class attribute names. Overrides class-
# attribute-naming-style.
#class-attribute-rgx=
# Naming style matching correct class names.
class-naming-style=PascalCase
# Regular expression matching correct class names. Overrides class-naming-
# style.
#class-rgx=
# Naming style matching correct constant names.
const-naming-style=UPPER_CASE
# Regular expression matching correct constant names. Overrides const-naming-
# style.
#const-rgx=
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1
# Naming style matching correct function names.
function-naming-style=snake_case
# Regular expression matching correct function names. Overrides function-
# naming-style.
#function-rgx=
# Good variable names which should always be accepted, separated by a comma.
good-names=i,
j,
k,
ex,
Run,
ch
_
# Include a hint for the correct naming format with invalid-name.
include-naming-hint=no
# Naming style matching correct inline iteration names.
inlinevar-naming-style=any
# Regular expression matching correct inline iteration names. Overrides
# inlinevar-naming-style.
#inlinevar-rgx=
# Naming style matching correct method names.
method-naming-style=snake_case
# Regular expression matching correct method names. Overrides method-naming-
# style.
#method-rgx=
# Naming style matching correct module names.
module-naming-style=snake_case
# Regular expression matching correct module names. Overrides module-naming-
# style.
#module-rgx=
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_
# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
# These decorators are taken in consideration only for invalid-name.
property-classes=abc.abstractproperty
# Naming style matching correct variable names.
variable-naming-style=snake_case
# Regular expression matching correct variable names. Overrides variable-
# naming-style.
#variable-rgx=
[IMPORTS]
# Allow wildcard imports from modules that define __all__.
allow-wildcard-with-all=no
# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no
# Deprecated modules which should not be used, separated by a comma.
deprecated-modules=optparse,tkinter.tix
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled).
ext-import-graph=
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled).
import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled).
int-import-graph=
# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=
# Force import order to recognize a module as part of a third party library.
known-third-party=enchant
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,
__new__,
setUp
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,
_fields,
_replace,
_source,
_make
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=cls
[DESIGN]
# Maximum number of arguments for function / method.
max-args=10
# Maximum number of attributes for a class (see R0902).
max-attributes=7
# Maximum number of boolean expressions in an if statement.
max-bool-expr=5
# Maximum number of branch for function / method body.
max-branches=12
# Maximum number of locals for function / method body.
max-locals=15
# Maximum number of parents for a class (see R0901).
max-parents=7
# Maximum number of public methods for a class (see R0904).
max-public-methods=20
# Maximum number of return / yield for function / method body.
max-returns=6
# Maximum number of statements in function / method body.
max-statements=55
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception".
overgeneral-exceptions=Exception
View File
+5
View File
@@ -0,0 +1,5 @@
# Global options:
[mypy]
python_version = 3.6
ignore_missing_imports = True
+1558
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,44 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="rethink_connector_plate">
<xacro:macro name="rethink_connector_plate" params="side gazebo">
<xacro:property name="rethink_connector_plate_length" value="0.0151" scope="global"/>
<link name="${side}_connector_plate_base">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0.0" />
<inertia ixx="6.9922E-05" ixy="6.1026E-08" ixz="-1.7042E-06"
iyy="6.8188E-05" iyz="-1.6118E-08" izz="0.00012392" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://intera_tools_description/meshes/connector_plate/connector_plate.STL" />
</geometry>
<material name="black">
<color rgba="0.05 0.05 0.05 1" />
</material>
</visual>
<collision>
<origin xyz="0 0 0.0135" rpy="0 0 0" />
<geometry>
<cylinder length="${rethink_connector_plate_length*2.0}" radius="0.04"/>
</geometry>
<material name="darkred">
<color rgba=".5 .1 .1 1"/>
</material>
</collision>
</link>
<xacro:if value="${gazebo}">
<gazebo reference="${side}_connector_plate_base">
<material>Gazebo/FlatBlack</material>
</gazebo>
</xacro:if>
<link name="${side}_connector_plate_mount" />
<joint name="${side}_connector_plate_mount_joint" type="fixed">
<origin xyz="0 0 ${rethink_connector_plate_length+0.0025}" rpy="0 0 0" />
<parent link="${side}_connector_plate_base" />
<child link="${side}_connector_plate_mount" />
</joint>
</xacro:macro>
</robot>
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<robot name="base_collision">
<link name="controller_box">
<collision>
<origin rpy="0 0 0" xyz="-0.325 0 -0.38"/>
<geometry>
<box size="0.22 0.4 0.53"/>
</geometry>
</collision>
</link>
<joint name="controller_box_fixed" type="fixed">
<origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
<parent link="base" />
<child link="controller_box" />
</joint>
<link name="pedestal_feet">
<collision>
<origin rpy="0 0 0" xyz="-0.1225 0 -0.758"/>
<geometry>
<box size="0.77 0.7 0.31"/>
</geometry>
</collision>
</link>
<joint name="pedestal_feet_fixed" type="fixed">
<origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
<parent link="base" />
<child link="pedestal_feet" />
</joint>
</robot>
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="right_electric_gripper">
<xacro:include filename="$(find intera_tools_description)/urdf/electric_gripper/rethink_electric_gripper.xacro" />
<xacro:rethink_electric_gripper side="right"
l_finger="standard_narrow"
l_finger_slot="2"
l_finger_tip="basic_hard_tip"
l_finger_grasp="inner"
r_finger="standard_narrow"
r_finger_slot="2"
r_finger_tip="basic_hard_tip"
r_finger_grasp="inner"
use_connector_plate="True"/>
</robot>
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="basic_hard_tip">
<xacro:macro name="finger_tip_xacro" params="parent_link reflect grasp *joint_origin">
<xacro:property name="g_reflect" value="${reflect}" scope="local"/>
<xacro:if value="${grasp == 'outer'}">
<xacro:property name="g_reflect" value="${-reflect}" scope="local"/>
</xacro:if>
<link name="${parent_link}_tip">
<visual>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/basic_hard_tip.DAE" />
</geometry>
</visual>
<collision>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 ${-0.0045*g_reflect} -0.015"/>
<geometry>
<box size="0.016 0.0065 0.037"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<joint name="${parent_link}_tip_joint" type="fixed">
<xacro:insert_block name="joint_origin" />
<parent link="${parent_link}"/>
<child link="${parent_link}_tip"/>
</joint>
</xacro:macro>
</robot>
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="basic_soft_tip">
<xacro:macro name="finger_tip_xacro" params="parent_link reflect grasp *joint_origin">
<xacro:property name="g_reflect" value="${reflect}" scope="local"/>
<xacro:if value="${grasp == 'outer'}">
<xacro:property name="g_reflect" value="${-reflect}" scope="local"/>
</xacro:if>
<link name="${parent_link}_tip">
<visual>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/basic_soft_tip.DAE" />
</geometry>
</visual>
<collision>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 ${-0.0045*g_reflect} -0.015"/>
<geometry>
<box size="0.016 0.007 0.037"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<joint name="${parent_link}_tip_joint" type="fixed">
<xacro:insert_block name="joint_origin" />
<parent link="${parent_link}"/>
<child link="${parent_link}_tip"/>
</joint>
</xacro:macro>
</robot>
@@ -0,0 +1,58 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="extended_narrow">
<xacro:macro name="finger_xacro" params="gripper_side finger_side reflect finger_tip finger_grasp gazebo">
<xacro:property name="finger_length" value="0.1127" scope="global"/>
<xacro:property name="finger_width" value="0.01725" scope="local"/>
<link name="${gripper_side}_gripper_${finger_side}_finger">
<visual>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/extended_narrow.DAE" />
</geometry>
</visual>
<xacro:property name="finger_box_height" value="0.01" scope="local"/>
<xacro:property name="finger_box_width" value="0.0135" scope="local"/>
<xacro:property name="finger_box_length" value="0.0615" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 ${finger_width*reflect} ${finger_box_length}"/>
<geometry>
<box size="${finger_box_height} ${finger_box_width} ${finger_length}"/>
</geometry>
</collision>
<xacro:property name="knuckle_box_height" value="0.01" scope="local"/>
<xacro:property name="knuckle_box_width" value="0.017" scope="local"/>
<xacro:property name="knuckle_box_length" value="${finger_width + 0.03275}" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="${reflect*-0.005} ${-0.003*reflect} 0.0083"/>
<geometry>
<box size="${knuckle_box_height} ${knuckle_box_length} ${knuckle_box_width}"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<xacro:if value="${gazebo}">
<gazebo reference="${gripper_side}_gripper_${finger_side}_finger">
<mu1>1000</mu1>
<mu2>1000</mu2>
<fdir1>0.0 0.0 1.0</fdir1>
<kp>1e5</kp>
<kd>1.0</kd>
</gazebo>
</xacro:if>
<xacro:property name="none" value="[none, false, null, empty]" scope="local"/>
<xacro:if value="${finger_tip in none}">
<xacro:property name="finger_tip" value="none" scope="local"/>
</xacro:if>
<xacro:include filename="$(find intera_tools_description)/urdf/electric_gripper/fingers/${finger_tip}.xacro" />
<xacro:finger_tip_xacro parent_link="${gripper_side}_gripper_${finger_side}_finger" reflect="${reflect}" grasp="${finger_grasp}">
<origin rpy="0 0 0" xyz="0.0 ${reflect*finger_width} ${finger_length}"/>
</xacro:finger_tip_xacro>
</xacro:macro>
</robot>
@@ -0,0 +1,58 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="wide_extended">
<xacro:macro name="finger_xacro" params="gripper_side finger_side reflect finger_tip finger_grasp gazebo">
<xacro:property name="finger_length" value="0.1127" scope="global"/>
<xacro:property name="finger_width" value="0.05503" scope="local"/>
<link name="${gripper_side}_gripper_${finger_side}_finger">
<visual>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/extended_wide.DAE" />
</geometry>
</visual>
<xacro:property name="finger_box_height" value="0.01" scope="local"/>
<xacro:property name="finger_box_width" value="0.0135" scope="local"/>
<xacro:property name="finger_box_length" value="0.0615" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 ${finger_width*reflect} ${finger_box_length}"/>
<geometry>
<box size="${finger_box_height} ${finger_box_width} ${finger_length}"/>
</geometry>
</collision>
<xacro:property name="knuckle_box_height" value="0.01" scope="local"/>
<xacro:property name="knuckle_box_width" value="0.017" scope="local"/>
<xacro:property name="knuckle_box_length" value="${finger_width + 0.03275}" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="${reflect*-0.005} ${0.016*reflect} 0.0083"/>
<geometry>
<box size="${knuckle_box_height} ${knuckle_box_length} ${knuckle_box_width}"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<xacro:if value="${gazebo}">
<gazebo reference="${gripper_side}_gripper_${finger_side}_finger">
<mu1>1000</mu1>
<mu2>1000</mu2>
<fdir1>0.0 0.0 1.0</fdir1>
<kp>1e5</kp>
<kd>1.0</kd>
</gazebo>
</xacro:if>
<xacro:property name="none" value="[none, false, null, empty]" scope="local"/>
<xacro:if value="${finger_tip in none}">
<xacro:property name="finger_tip" value="none" scope="local"/>
</xacro:if>
<xacro:include filename="$(find intera_tools_description)/urdf/electric_gripper/fingers/${finger_tip}.xacro" />
<xacro:finger_tip_xacro parent_link="${gripper_side}_gripper_${finger_side}_finger" reflect="${reflect}" grasp="${finger_grasp}">
<origin rpy="0 0 0" xyz="0.0 ${reflect*finger_width} ${finger_length}"/>
</xacro:finger_tip_xacro>
</xacro:macro>
</robot>
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="half_round_tip">
<xacro:macro name="finger_tip_xacro" params="parent_link reflect grasp *joint_origin">
<xacro:property name="g_reflect" value="${reflect}" scope="local"/>
<xacro:if value="${grasp == 'outer'}">
<xacro:property name="g_reflect" value="${-reflect}" scope="local"/>
</xacro:if>
<link name="${parent_link}_tip">
<visual>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/half_round_tip.DAE" />
</geometry>
</visual>
<collision>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 ${-0.0045*g_reflect} -0.015"/>
<geometry>
<cylinder length="0.037" radius="0.008"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<joint name="${parent_link}_tip_joint" type="fixed">
<xacro:insert_block name="joint_origin" />
<parent link="${parent_link}"/>
<child link="${parent_link}_tip"/>
</joint>
</xacro:macro>
</robot>
+13
View File
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="none_tip">
<xacro:macro name="finger_tip_xacro" params="parent_link grip reflect *joint_origin">
<link name="${parent_link}_tip">
</link>
<joint name="${parent_link}_tip_joint" type="fixed">
<xacro:insert_block name="joint_origin" />
<parent link="${parent_link}"/>
<child link="${parent_link}_tip"/>
</joint>
</xacro:macro>
</robot>
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="paddle_tip">
<xacro:macro name="finger_tip_xacro" params="parent_link reflect grasp *joint_origin">
<xacro:property name="g_reflect" value="${reflect}" scope="local"/>
<xacro:if value="${grasp == 'outer'}">
<xacro:property name="g_reflect" value="${-reflect}" scope="local"/>
</xacro:if>
<link name="${parent_link}_tip">
<visual>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/paddle_tip.DAE" />
</geometry>
</visual>
<collision>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 ${-0.0045*g_reflect} -0.015"/>
<geometry>
<box size="0.042 0.0065 0.037"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${pi*(g_reflect+1)/2}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<joint name="${parent_link}_tip_joint" type="fixed">
<xacro:insert_block name="joint_origin" />
<parent link="${parent_link}"/>
<child link="${parent_link}_tip"/>
</joint>
</xacro:macro>
</robot>
@@ -0,0 +1,58 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="standard_narrow">
<xacro:macro name="finger_xacro" params="gripper_side finger_side reflect finger_tip finger_grasp gazebo">
<xacro:property name="finger_length" value="0.075" scope="global"/>
<xacro:property name="finger_width" value="0.01725" scope="local"/>
<link name="${gripper_side}_gripper_${finger_side}_finger">
<visual>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/standard_narrow.DAE" />
</geometry>
</visual>
<xacro:property name="finger_box_height" value="0.01" scope="local"/>
<xacro:property name="finger_box_width" value="0.0135" scope="local"/>
<xacro:property name="finger_box_length" value="0.04" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 ${finger_width*reflect} ${finger_box_length}"/>
<geometry>
<box size="${finger_box_height} ${finger_box_width} ${finger_length}"/>
</geometry>
</collision>
<xacro:property name="knuckle_box_height" value="0.01" scope="local"/>
<xacro:property name="knuckle_box_width" value="0.017" scope="local"/>
<xacro:property name="knuckle_box_length" value="${finger_width + 0.03275}" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="${reflect*-0.005} ${-0.003*reflect} 0.0083"/>
<geometry>
<box size="${knuckle_box_height} ${knuckle_box_length} ${knuckle_box_width}"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<xacro:if value="${gazebo}">
<gazebo reference="${gripper_side}_gripper_${finger_side}_finger">
<mu1>1000</mu1>
<mu2>1000</mu2>
<fdir1>0.0 0.0 1.0</fdir1>
<kp>1e5</kp>
<kd>1.0</kd>
</gazebo>
</xacro:if>
<xacro:property name="none" value="[none, false, null, empty]" scope="local"/>
<xacro:if value="${finger_tip in none}">
<xacro:property name="finger_tip" value="none" scope="local"/>
</xacro:if>
<xacro:include filename="$(find intera_tools_description)/urdf/electric_gripper/fingers/${finger_tip}.xacro" />
<xacro:finger_tip_xacro parent_link="${gripper_side}_gripper_${finger_side}_finger" reflect="${reflect}" grasp="${finger_grasp}">
<origin rpy="0 0 0" xyz="0.0 ${reflect*finger_width} ${finger_length}"/>
</xacro:finger_tip_xacro>
</xacro:macro>
</robot>
@@ -0,0 +1,58 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="standard_wide">
<xacro:macro name="finger_xacro" params="gripper_side finger_side reflect finger_tip finger_grasp gazebo">
<xacro:property name="finger_length" value="0.075" scope="global"/>
<xacro:property name="finger_width" value="0.05503" scope="local"/>
<link name="${gripper_side}_gripper_${finger_side}_finger">
<visual>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/fingers/standard_wide.DAE" />
</geometry>
</visual>
<xacro:property name="finger_box_height" value="0.01" scope="local"/>
<xacro:property name="finger_box_width" value="0.0135" scope="local"/>
<xacro:property name="finger_box_length" value="0.04" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 ${finger_width*reflect} ${finger_box_length}"/>
<geometry>
<box size="${finger_box_height} ${finger_box_width} ${finger_length}"/>
</geometry>
</collision>
<xacro:property name="knuckle_box_height" value="0.01" scope="local"/>
<xacro:property name="knuckle_box_width" value="0.017" scope="local"/>
<xacro:property name="knuckle_box_length" value="${finger_width + 0.03275}" scope="local"/>
<collision>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="${reflect*-0.005} ${0.016*reflect} 0.0083"/>
<geometry>
<box size="${knuckle_box_height} ${knuckle_box_length} ${knuckle_box_width}"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 ${-pi/2*(reflect+1)}" xyz="0 0 0"/>
<mass value="0.001"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<xacro:if value="${gazebo}">
<gazebo reference="${gripper_side}_gripper_${finger_side}_finger">
<mu1>1000</mu1>
<mu2>1000</mu2>
<fdir1>0.0 0.0 1.0</fdir1>
<kp>1e5</kp>
<kd>1.0</kd>
</gazebo>
</xacro:if>
<xacro:property name="none" value="[none, false, null, empty]" scope="local"/>
<xacro:if value="${finger_tip in none}">
<xacro:property name="finger_tip" value="none" scope="local"/>
</xacro:if>
<xacro:include filename="$(find intera_tools_description)/urdf/electric_gripper/fingers/${finger_tip}.xacro" />
<xacro:finger_tip_xacro parent_link="${gripper_side}_gripper_${finger_side}_finger" reflect="${reflect}" grasp="${finger_grasp}">
<origin rpy="0 0 0" xyz="0.0 ${reflect*finger_width} ${finger_length}"/>
</xacro:finger_tip_xacro>
</xacro:macro>
</robot>
@@ -0,0 +1,156 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="rethink_electric_gripper">
<xacro:macro name="rethink_electric_gripper" params="side r_finger r_finger_slot r_finger_tip r_finger_grasp l_finger l_finger_slot l_finger_tip l_finger_grasp use_connector_plate gazebo">
<xacro:property name="gripper_side" value="${side}" scope="local"/>
<!-- Base of whole end effector - (Connector Plate + Electric Gripper + Fingers + Tips) -->
<link name="${side}_gripper_base">
<inertial>
<!-- Sum Gripper Mass - for whole end effector, measured from end of plastic cuff -->
<mass value="0.47"/>
<origin rpy="0 0 0" xyz="0.0028 -0.0004 0.0343"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<!-- Electric Gripper Base Link -->
<link name="${side}_electric_gripper_base">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/electric_gripper_base.DAE"/>
</geometry>
</visual>
<collision>
<origin rpy="${-pi/2} ${pi} 0" xyz="0.004 0.0 0.025"/>
<geometry>
<cylinder length="0.1" radius="0.029"/>
</geometry>
<material name="darkred">
<color rgba=".5 .1 .1 1"/>
</material>
</collision>
<inertial>
<origin rpy="${-pi/2} ${pi} 0" xyz="0.0 0.0 0.0"/>
<mass value="2e-06"/>
<inertia ixx="1.1e-09" ixy="0" ixz="0" iyy="1.1e-09" iyz="0" izz="1.1e-09"/>
</inertial>
</link>
<xacro:unless value="${use_connector_plate}">
<xacro:property name="electric_gripper_parent_link" value="${side}_gripper_base" scope="local"/>
<xacro:property name="connector_plate_length" value="0.0" scope="local"/>
</xacro:unless>
<xacro:if value="${use_connector_plate}">
<!-- Connector Plate Joint -->
<joint name="${side}_connector_plate_base_joint" type="fixed">
<origin xyz="0 0 0.0018" rpy="0 0 0" />
<parent link="${side}_gripper_base" />
<child link="${side}_connector_plate_base" />
</joint>
<!-- Connector Plate Link -->
<xacro:include filename="$(find ddpg)/urdf/connector_plate/connector_plate.xacro" />
<xacro:rethink_connector_plate side="${side}" gazebo="${gazebo}"/>
<xacro:property name="electric_gripper_parent_link" value="${side}_connector_plate_mount" scope="local"/>
<xacro:property name="connector_plate_length" value="${rethink_connector_plate_length}" scope="local"/>
</xacro:if>
<!-- Electric Gripper Base joint -->
<joint name="${side}_electric_gripper_base_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="${electric_gripper_parent_link}"/>
<child link="${side}_electric_gripper_base"/>
</joint>
<!-- Left finger link -->
<xacro:property name="finger_length" value="0.0" scope="global"/>
<xacro:include filename="$(find ddpg)/urdf/electric_gripper/fingers/${l_finger}.xacro" />
<xacro:finger_xacro gripper_side="${gripper_side}" finger_side="l" reflect="1" finger_tip="${l_finger_tip}" finger_grasp="${l_finger_grasp}" gazebo="${gazebo}"/>
<xacro:property name="tip_finger_length" value="${finger_length}" scope="local"/>
<!-- Right finger link -->
<xacro:include filename="$(find ddpg)/urdf/electric_gripper/fingers/${r_finger}.xacro" />
<xacro:finger_xacro gripper_side="${gripper_side}" finger_side="r" reflect="-1" finger_tip="${r_finger_tip}" finger_grasp="${r_finger_grasp}" gazebo="${gazebo}"/>
<xacro:if value="${finger_length > tip_finger_length}">
<xacro:property name="tip_finger_length" value="${finger_length}" scope="local"/>
</xacro:if>
<!-- Gripper Base Joint -->
<xacro:property name="end_of_arm_offset" value="-0.005" scope="local"/>
<joint name="${side}_gripper_base_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 ${end_of_arm_offset}"/>
<parent link="${side}_hand"/>
<child link="${side}_gripper_base"/>
</joint>
<!-- Gripper Tip joint -->
<xacro:property name="electric_gripper_base_length" value="0.04552" scope="local"/>
<joint name="${side}_gripper_tip_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 ${(-1*end_of_arm_offset)+connector_plate_length+electric_gripper_base_length+tip_finger_length}"/>
<parent link="${side}_gripper_base"/>
<child link="${side}_gripper_tip"/>
</joint>
<!-- Electric Gripper Tip link -->
<link name="${side}_gripper_tip">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="2e-06"/>
<inertia ixx="1.1e-09" ixy="0" ixz="0" iyy="1.1e-09" iyz="0" izz="1.1e-09"/>
</inertial>
</link>
<!-- Left finger -->
<xacro:property name="l_finger_offset" value="${((l_finger_slot-1)*0.0095) -0.011}" scope="local"/>
<joint name="${gripper_side}_gripper_l_finger_joint" type="prismatic">
<origin rpy="0 0 0" xyz="0.003 ${l_finger_offset} ${electric_gripper_base_length}"/>
<axis xyz="0 1 0"/>
<parent link="${side}_electric_gripper_base"/>
<child link="${gripper_side}_gripper_l_finger"/>
<limit effort="20.0" lower="0.0" upper="0.020833" velocity="5.0"/>
<dynamics damping="100.0" friction="500.0"/>
</joint>
<!-- Right finger -->
<xacro:property name="r_finger_offset" value="${((r_finger_slot-1)*-0.0095) +0.011}" scope="local"/>
<joint name="${gripper_side}_gripper_r_finger_joint" type="prismatic">
<origin rpy="0 0 0" xyz="0.003 ${r_finger_offset} ${electric_gripper_base_length}"/>
<axis xyz="0 1 0"/>
<parent link="${side}_electric_gripper_base"/>
<child link="${gripper_side}_gripper_r_finger"/>
<limit effort="20.0" lower="-0.020833" upper="0.0" velocity="5.0"/>
<mimic joint="${gripper_side}_gripper_l_finger_joint" multiplier="-1.0"/>
<dynamics damping="100.0" friction="500.0"/>
</joint>
<xacro:if value="${gazebo}">
<transmission name="gripper_${side}1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="${gripper_side}_gripper_r_finger_joint">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_${gripper_side}1_motor1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="gripper_${side}2">
<type>transmission_interface/SimpleTransmission</type>
<joint name="${gripper_side}_gripper_l_finger_joint">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_${gripper_side}1_motor2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<gazebo reference="${gripper_side}_gripper_r_finger_joint">
<implicitSpringDamper>1</implicitSpringDamper>
</gazebo>
<gazebo reference="${gripper_side}_gripper_l_finger_joint">
<implicitSpringDamper>1</implicitSpringDamper>
</gazebo>
</xacro:if>
</xacro:macro>
</robot>
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="right_electric_gripper">
<xacro:include filename="$(find intera_tools_description)/urdf/electric_gripper/rethink_electric_gripper.xacro" />
<xacro:rethink_electric_gripper side="right"
l_finger="standard_narrow"
l_finger_slot="2"
l_finger_tip="basic_hard_tip"
l_finger_grasp="inner"
r_finger="standard_narrow"
r_finger_slot="2"
r_finger_tip="basic_hard_tip"
r_finger_grasp="inner"
use_connector_plate="True"/>
</robot>
@@ -0,0 +1,5 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="left_null_gripper">
<xacro:include filename="$(find intera_tools_description)/urdf/null_gripper/null_gripper.xacro" />
<xacro:null_gripper side="left"/>
</robot>
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="null_gripper">
<xacro:macro name="null_gripper" params="side">
<!-- This is not a URDF, it is a URDF fragment describing a default end effector
to be added to the robot URDF at run time.
-->
<link name="${side}_gripper_base">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<link name="${side}_gripper">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<joint name="${side}_gripper_base" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="${side}_hand"/>
<child link="${side}_gripper_base"/>
</joint>
<joint name="${side}_endpoint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="${side}_gripper_base"/>
<child link="${side}_gripper"/>
</joint>
</xacro:macro>
</robot>
@@ -0,0 +1,5 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="left_pneumatic_gripper">
<xacro:include filename="$(find intera_tools_description)/urdf/electric_gripper/rethink_pneumatic_gripper.xacro" />
<xacro:rethink_pneumatic_gripper side="left"/>
</robot>
@@ -0,0 +1,54 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="pneumatic_gripper_base">
<xacro:macro name="pneumatic_gripper_base" params="side">
<xacro:property name="tip_length" value="${0.03 + 0.02}" scope="local"/>
<!-- Base of end effector -->
<link name="${side}_gripper_base">
<visual>
<origin rpy="0 ${pi} ${pi}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/pneumatic_gripper/pneumatic_gripper_base.DAE"/>
</geometry>
</visual>
<collision>
<origin rpy="0 ${pi} ${pi}" xyz="0.0 0.0 0.025"/>
<geometry>
<box size="0.044 0.078 0.038" />
<box length="0.08" radius="0.02"/>
</geometry>
<material name="darkred">
<color rgba=".5 .1 .1 1"/>
</material>
</collision>
<inertial>
<origin rpy="0 ${pi} ${pi}" xyz="0.0 0.0 0.0"/>
<mass value="0.1"/>
<inertia ixx="2e-08" ixy="0" ixz="0" iyy="3e-08" iyz="0" izz="2e-08"/>
</inertial>
</link>
<!-- Pneumatic Gripper Base Joint -->
<joint name="${side}_gripper_base" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0.0"/>
<parent link="${side}_hand"/>
<child link="${side}_gripper_base"/>
</joint>
<!-- Pneumatic Gripper Tip joint -->
<joint name="${side}_endpoint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 ${tip_length}"/>
<parent link="${side}_gripper_base"/>
<child link="${side}_gripper"/>
</joint>
<!-- Pneumatic Gripper Tip link -->
<link name="${side}_gripper">
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="0.0001"/>
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0.0"/>
</inertial>
</link>
</xacro:macro>
</robot>
@@ -0,0 +1,53 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="rethink_pneumatic_gripper">
<xacro:macro name="rethink_pneumatic_gripper" params="side">
<xacro:property name="tip_length" value="${0.06 + 0.02}" scope="local"/>
<!-- Base of end effector -->
<link name="${side}_gripper_base">
<visual>
<origin rpy="0 ${pi} ${pi}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/pneumatic_gripper/pneumatic_gripper_w_cup.DAE"/>
</geometry>
</visual>
<collision>
<origin rpy="0 ${pi} ${pi}" xyz="0.0 0.0 0.04"/>
<geometry>
<cylinder length="0.08" radius="0.02"/>
</geometry>
<material name="darkred">
<color rgba=".5 .1 .1 1"/>
</material>
</collision>
<inertial>
<origin rpy="0 ${pi} ${pi}" xyz="0.0 0.0 0.0"/>
<mass value="0.3"/>
<inertia ixx="2e-08" ixy="0" ixz="0" iyy="3e-08" iyz="0" izz="2e-08"/>
</inertial>
</link>
<!-- Pneumatic Gripper Base Joint -->
<joint name="${side}_gripper_base" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0.0"/>
<parent link="${side}_hand"/>
<child link="${side}_gripper_base"/>
</joint>
<!-- Pneumatic Gripper Tip joint -->
<joint name="${side}_endpoint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 ${tip_length}"/>
<parent link="${side}_gripper_base"/>
<child link="${side}_gripper"/>
</joint>
<!-- Pneumatic Gripper Tip link -->
<link name="${side}_gripper">
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="0.0001"/>
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0.0"/>
</inertial>
</link>
</xacro:macro>
</robot>
+156
View File
@@ -0,0 +1,156 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="rethink_electric_gripper">
<xacro:macro name="rethink_electric_gripper" params="side r_finger r_finger_slot r_finger_tip r_finger_grasp l_finger l_finger_slot l_finger_tip l_finger_grasp use_connector_plate gazebo">
<xacro:property name="gripper_side" value="${side}" scope="local"/>
<!-- Base of whole end effector - (Connector Plate + Electric Gripper + Fingers + Tips) -->
<link name="${side}_gripper_base">
<inertial>
<!-- Sum Gripper Mass - for whole end effector, measured from end of plastic cuff -->
<mass value="0.47"/>
<origin rpy="0 0 0" xyz="0.0028 -0.0004 0.0343"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<!-- Electric Gripper Base Link -->
<link name="${side}_electric_gripper_base">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/electric_gripper_base.DAE"/>
</geometry>
</visual>
<collision>
<origin rpy="${-pi/2} ${pi} 0" xyz="0.004 0.0 0.025"/>
<geometry>
<cylinder length="0.1" radius="0.029"/>
</geometry>
<material name="darkred">
<color rgba=".5 .1 .1 1"/>
</material>
</collision>
<inertial>
<origin rpy="${-pi/2} ${pi} 0" xyz="0.0 0.0 0.0"/>
<mass value="2e-06"/>
<inertia ixx="1.1e-09" ixy="0" ixz="0" iyy="1.1e-09" iyz="0" izz="1.1e-09"/>
</inertial>
</link>
<xacro:unless value="${use_connector_plate}">
<xacro:property name="electric_gripper_parent_link" value="${side}_gripper_base" scope="local"/>
<xacro:property name="connector_plate_length" value="0.0" scope="local"/>
</xacro:unless>
<xacro:if value="${use_connector_plate}">
<!-- Connector Plate Joint -->
<joint name="${side}_connector_plate_base_joint" type="fixed">
<origin xyz="0 0 0.0018" rpy="0 0 0" />
<parent link="${side}_gripper_base" />
<child link="${side}_connector_plate_base" />
</joint>
<!-- Connector Plate Link -->
<xacro:include filename="$(find ddpg)/urdf/connector_plate/connector_plate.xacro" />
<xacro:rethink_connector_plate side="${side}" gazebo="${gazebo}"/>
<xacro:property name="electric_gripper_parent_link" value="${side}_connector_plate_mount" scope="local"/>
<xacro:property name="connector_plate_length" value="${rethink_connector_plate_length}" scope="local"/>
</xacro:if>
<!-- Electric Gripper Base joint -->
<joint name="${side}_electric_gripper_base_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="${electric_gripper_parent_link}"/>
<child link="${side}_electric_gripper_base"/>
</joint>
<!-- Left finger link -->
<xacro:property name="finger_length" value="0.0" scope="global"/>
<xacro:include filename="$(find ddpg)/urdf/electric_gripper/fingers/${l_finger}.xacro" />
<xacro:finger_xacro gripper_side="${gripper_side}" finger_side="l" reflect="1" finger_tip="${l_finger_tip}" finger_grasp="${l_finger_grasp}" gazebo="${gazebo}"/>
<xacro:property name="tip_finger_length" value="${finger_length}" scope="local"/>
<!-- Right finger link -->
<xacro:include filename="$(find ddpg)/urdf/electric_gripper/fingers/${r_finger}.xacro" />
<xacro:finger_xacro gripper_side="${gripper_side}" finger_side="r" reflect="-1" finger_tip="${r_finger_tip}" finger_grasp="${r_finger_grasp}" gazebo="${gazebo}"/>
<xacro:if value="${finger_length > tip_finger_length}">
<xacro:property name="tip_finger_length" value="${finger_length}" scope="local"/>
</xacro:if>
<!-- Gripper Base Joint -->
<xacro:property name="end_of_arm_offset" value="-0.005" scope="local"/>
<joint name="${side}_gripper_base_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 ${end_of_arm_offset}"/>
<parent link="${side}_hand"/>
<child link="${side}_gripper_base"/>
</joint>
<!-- Gripper Tip joint -->
<xacro:property name="electric_gripper_base_length" value="0.04552" scope="local"/>
<joint name="${side}_gripper_tip_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 ${(-1*end_of_arm_offset)+connector_plate_length+electric_gripper_base_length+tip_finger_length}"/>
<parent link="${side}_gripper_base"/>
<child link="${side}_gripper_tip"/>
</joint>
<!-- Electric Gripper Tip link -->
<link name="${side}_gripper_tip">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0"/>
<mass value="2e-06"/>
<inertia ixx="1.1e-09" ixy="0" ixz="0" iyy="1.1e-09" iyz="0" izz="1.1e-09"/>
</inertial>
</link>
<!-- Left finger -->
<xacro:property name="l_finger_offset" value="${((l_finger_slot-1)*0.0095) -0.011}" scope="local"/>
<joint name="${gripper_side}_gripper_l_finger_joint" type="prismatic">
<origin rpy="0 0 0" xyz="0.003 ${l_finger_offset} ${electric_gripper_base_length}"/>
<axis xyz="0 1 0"/>
<parent link="${side}_electric_gripper_base"/>
<child link="${gripper_side}_gripper_l_finger"/>
<limit effort="20.0" lower="0.0" upper="0.020833" velocity="5.0"/>
<dynamics damping="100.0" friction="500.0"/>
</joint>
<!-- Right finger -->
<xacro:property name="r_finger_offset" value="${((r_finger_slot-1)*-0.0095) +0.011}" scope="local"/>
<joint name="${gripper_side}_gripper_r_finger_joint" type="prismatic">
<origin rpy="0 0 0" xyz="0.003 ${r_finger_offset} ${electric_gripper_base_length}"/>
<axis xyz="0 1 0"/>
<parent link="${side}_electric_gripper_base"/>
<child link="${gripper_side}_gripper_r_finger"/>
<limit effort="20.0" lower="-0.020833" upper="0.0" velocity="5.0"/>
<mimic joint="${gripper_side}_gripper_l_finger_joint" multiplier="-1.0"/>
<dynamics damping="100.0" friction="500.0"/>
</joint>
<xacro:if value="${gazebo}">
<transmission name="gripper_${side}1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="${gripper_side}_gripper_r_finger_joint">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_${gripper_side}1_motor1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="gripper_${side}2">
<type>transmission_interface/SimpleTransmission</type>
<joint name="${gripper_side}_gripper_l_finger_joint">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_${gripper_side}1_motor2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<gazebo reference="${gripper_side}_gripper_r_finger_joint">
<implicitSpringDamper>1</implicitSpringDamper>
</gazebo>
<gazebo reference="${gripper_side}_gripper_l_finger_joint">
<implicitSpringDamper>1</implicitSpringDamper>
</gazebo>
</xacro:if>
</xacro:macro>
</robot>
+530
View File
@@ -0,0 +1,530 @@
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- | This document was autogenerated by xacro from ./urdf.xacro | -->
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
<!-- =================================================================================== -->
<robot name="sawyer" xmlns:xacro="http://www.ros.org/wiki/xacro">
<material name="black">
<color rgba="0 0 0 1"/>
</material>
<material name="darkgray">
<color rgba=".2 .2 .2 1"/>
</material>
<material name="darkred">
<color rgba=".5 .1 .1 1"/>
</material>
<material name="sawyer_red">
<color rgba=".5 .1 .1 1"/>
</material>
<material name="sawyer_gray">
<color rgba="0.75294 0.75294 0.75294 1"/>
</material>
<link name="base"/>
<link name="torso">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0 0 0"/>
</geometry>
<material name="darkgray">
<color rgba=".2 .2 .2 1"/>
</material>
</visual>
<inertial>
<origin rpy="0 0 0" xyz="0.000000 0.000000 0.000000"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<link name="pedestal">
<visual>
<origin rpy="1.57079632679 0 -1.57079632679" xyz="0.26 0.345 -0.91488"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/pedestal.DAE"/>
</geometry>
<material name="darkgray"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 -0.30"/>
<geometry>
<cylinder length="0.62" radius="0.18"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="60.86397744"/>
<inertia ixx="5.0635929" ixy="0.00103417" ixz="0.80199628" iyy="6.08689388" iyz="0.00105311" izz="4.96191932"/>
</inertial>
</link>
<link name="controller_box">
<collision>
<origin rpy="0 0 0" xyz="-0.325 0 -0.38"/>
<geometry>
<box size="0.22 0.4 0.53"/>
</geometry>
</collision>
</link>
<joint name="controller_box_fixed" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="controller_box"/>
</joint>
<link name="pedestal_feet">
<collision>
<origin rpy="0 0 0" xyz="-0.1225 0 -0.758"/>
<geometry>
<box size="0.77 0.7 0.31"/>
</geometry>
</collision>
</link>
<joint name="pedestal_feet_fixed" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="pedestal_feet"/>
</joint>
<joint name="torso_t0" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="base"/>
<child link="torso"/>
</joint>
<joint name="pedestal_fixed" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="pedestal"/>
</joint>
<joint name="right_arm_mount" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="right_arm_base_link"/>
</joint>
<link name="right_arm_base_link">
<inertial>
<origin rpy="0 0 0" xyz="-0.0006241 -2.8025E-05 0.065404"/>
<mass value="2.0687"/>
<inertia ixx="0.0067599" ixy="-4.2024E-05" ixz="-6.1904E-07" iyy="0.0067877" iyz="1.5888E-05" izz="0.0074031"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/base.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.12"/>
<geometry>
<cylinder length="0.24" radius="0.08"/>
</geometry>
</collision>
</link>
<link name="right_l0">
<inertial>
<origin rpy="0 0 0" xyz="0.024366 0.010969 0.14363"/>
<mass value="5.3213"/>
<inertia ixx="0.053314" ixy="0.0047093" ixz="0.011734" iyy="0.057902" iyz="0.0080179" izz="0.023659"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_mp3/l0.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.081 0 0.237"/>
<geometry>
<sphere radius="0.07"/>
</geometry>
</collision>
</link>
<joint name="right_j0" type="revolute">
<origin rpy="0 0 0" xyz="0 0 0.08"/>
<parent link="right_arm_base_link"/>
<child link="right_l0"/>
<axis xyz="0 0 1"/>
<limit effort="80.0" lower="-3.0503" upper="3.0503" velocity="1.74"/>
</joint>
<link name="head">
<inertial>
<origin rpy="0 0 0" xyz="0.0053207 -2.6549E-05 0.1021"/>
<mass value="1.5795"/>
<inertia ixx="0.011833" ixy="-4.4669E-06" ixz="4.9425E-05" iyy="0.0082709" iyz="4.2124E-07" izz="0.0049661"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/head.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.08"/>
<geometry>
<sphere radius="0.18"/>
</geometry>
</collision>
</link>
<joint name="head_pan" type="revolute">
<origin rpy="0 0 0" xyz="0 0 0.2965"/>
<parent link="right_l0"/>
<child link="head"/>
<axis xyz="0 0 1"/>
<limit effort="8" lower="-5.1477" upper="0.9559" velocity="1.8"/>
</joint>
<link name="right_torso_itb">
<inertial>
<origin rpy="0 0 0" xyz="0.000000 0.000000 0.000000"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<joint name="right_torso_itb" type="fixed">
<origin rpy="0 -1.57079632679 0" xyz="-.055 0 .22"/>
<parent link="right_l0"/>
<child link="right_torso_itb"/>
<axis xyz="0 0 1"/>
</joint>
<link name="right_l1">
<inertial>
<origin rpy="0 0 0" xyz="-0.0030849 -0.026811 0.092521"/>
<mass value="4.505"/>
<inertia ixx="0.022398" ixy="-0.00023986" ixz="-0.00029362" iyy="0.014613" iyz="-0.0060875" izz="0.017295"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_mp3/l1.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.1225"/>
<geometry>
<sphere radius="0.07"/>
</geometry>
</collision>
</link>
<joint name="right_j1" type="revolute">
<origin rpy="-1.57079632679 1.57079632679 0" xyz="0.081 0.05 0.237"/>
<parent link="right_l0"/>
<child link="right_l1"/>
<axis xyz="0 0 1"/>
<limit effort="80.0" lower="-3.8183" upper="2.2824" velocity="1.328"/>
</joint>
<link name="right_l2">
<inertial>
<origin rpy="0 0 0" xyz="-0.00016232 -0.015346 0.13445"/>
<mass value="1.7251"/>
<inertia ixx="0.025176" ixy="4.3031E-06" ixz="1.4564E-05" iyy="0.024982" iyz="-0.0033928" izz="0.0033798"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l2.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.14"/>
<geometry>
<cylinder length="0.35" radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j2" type="revolute">
<origin rpy="1.57079632679 0 0" xyz="0 -0.14 0.1425"/>
<parent link="right_l1"/>
<child link="right_l2"/>
<axis xyz="0 0 1"/>
<limit effort="40.0" lower="-3.0514" upper="3.0514" velocity="1.957"/>
</joint>
<link name="right_l3">
<inertial>
<origin rpy="0 0 0" xyz="-0.0046678 -0.028394 -0.083127"/>
<mass value="2.4743"/>
<inertia ixx="0.0099549" ixy="-1.7675E-05" ixz="0.00027521" iyy="0.0064248" iyz="0.0030853" izz="0.0067746"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l3.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 -0.01 -0.12"/>
<geometry>
<sphere radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j3" type="revolute">
<origin rpy="-1.57079632679 0 0" xyz="0 -0.042 0.26"/>
<parent link="right_l2"/>
<child link="right_l3"/>
<axis xyz="0 0 1"/>
<limit effort="40.0" lower="-3.0514" upper="3.0514" velocity="1.957"/>
</joint>
<link name="right_l4">
<inertial>
<origin rpy="0 0 0" xyz="-0.0027794 0.0076558 0.13273"/>
<mass value="1.0433"/>
<inertia ixx="0.012913" ixy="2.573E-05" ixz="0.00017705" iyy="0.012939" iyz="0.0011152" izz="0.0012405"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l4.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.14"/>
<geometry>
<cylinder length="0.36" radius="0.045"/>
</geometry>
</collision>
</link>
<joint name="right_j4" type="revolute">
<origin rpy="1.57079632679 0 0" xyz="0 -0.125 -0.1265"/>
<parent link="right_l3"/>
<child link="right_l4"/>
<axis xyz="0 0 1"/>
<limit effort="9.0" lower="-2.9842" upper="2.9842" velocity="3.485"/>
</joint>
<link name="right_arm_itb">
<inertial>
<origin rpy="0 0 0" xyz="0.000000 0.000000 0.000000"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<joint name="right_arm_itb" type="fixed">
<origin rpy="0 -1.57079632679 0" xyz="-.055 0 .075"/>
<parent link="right_l4"/>
<child link="right_arm_itb"/>
<axis xyz="0 0 1"/>
</joint>
<link name="right_l5">
<inertial>
<origin rpy="0 0 0" xyz="0.0062067 -0.024291 0.075564"/>
<mass value="1.5343"/>
<inertia ixx="0.0046072" ixy="0.00012002" ixz="5.3065E-05" iyy="0.0028725" iyz="-0.0011886" izz="0.003101"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l5.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.01 0 0.09"/>
<geometry>
<sphere radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j5" type="revolute">
<origin rpy="-1.57079632679 0 0" xyz="0 0.031 0.275"/>
<parent link="right_l4"/>
<child link="right_l5"/>
<axis xyz="0 0 1"/>
<limit effort="9.0" lower="-2.9842" upper="2.9842" velocity="3.485"/>
</joint>
<link name="right_hand_camera"/>
<joint name="right_hand_camera" type="fixed">
<origin rpy="0 1.57079632679 0" xyz="0.039552 -0.033 0.0695"/>
<parent link="right_l5"/>
<child link="right_hand_camera"/>
<axis xyz="0 0 0"/>
</joint>
<link name="right_wrist"/>
<joint name="right_wrist" type="fixed">
<origin rpy="1.57079632679 0 0" xyz="0 0 0.10541"/>
<parent link="right_l5"/>
<child link="right_wrist"/>
<axis xyz="0 0 0"/>
</joint>
<link name="right_l6">
<inertial>
<origin rpy="0 0 0" xyz="-8.0726E-06 0.0085838 -0.0049566"/>
<mass value="0.3292"/>
<inertia ixx="0.00031105" ixy="1.4771E-06" ixz="-3.7074E-07" iyy="0.00021549" iyz="-8.4533E-06" izz="0.00035976"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_mp1/l6.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 -0.005"/>
<geometry>
<cylinder length="0.05" radius="0.065"/>
</geometry>
</collision>
</link>
<joint name="right_j6" type="revolute">
<origin rpy="-1.57079632679 -0.17453 3.1416" xyz="0 -0.11 0.1053"/>
<parent link="right_l5"/>
<child link="right_l6"/>
<axis xyz="0 0 1"/>
<limit effort="9.0" lower="-4.7104" upper="4.7104" velocity="4.545"/>
</joint>
<link name="right_hand">
<collision>
<origin rpy="0 0 0" xyz="0 0 0.02"/>
<geometry>
<cylinder length="0.04" radius="0.06"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="1.0E-08 1.0E-08 1.0E-08"/>
<mass value="1.0E-08"/>
<inertia ixx="1.0E-08" ixy="1.0E-08" ixz="1.0E-08" iyy="1.0E-08" iyz="1.0E-08" izz="1.0E-08"/>
</inertial>
</link>
<joint name="right_hand" type="fixed">
<origin rpy="0 0 1.570796" xyz="0 0 0.0245"/>
<axis xyz="0 0 1"/>
<parent link="right_l6"/>
<child link="right_hand"/>
</joint>
<link name="screen">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.24 0.14 0.002"/>
</geometry>
<material name="darkgray"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<sphere radius="0.001"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</link>
<joint name="display_joint" type="fixed">
<origin rpy="1.57079632679 0 1.57079632679" xyz="0.03 0.0 0.105"/>
<parent link="head"/>
<child link="screen"/>
</joint>
<link name="head_camera"/>
<joint name="head_camera" type="fixed">
<origin rpy="-2.1293 0 -1.57079632679" xyz="0.0228027 0 0.216572"/>
<parent link="head"/>
<child link="head_camera"/>
<axis xyz="0 0 0"/>
</joint>
<!-- added -->
<!-- <link name="controller_box"> -->
<!-- <collision> -->
<!-- <origin rpy="0 0 0" xyz="-0.325 0 -0.38"/> -->
<!-- <geometry> -->
<!-- <box size="0.22 0.4 0.53"/> -->
<!-- </geometry> -->
<!-- </collision> -->
<!-- </link> -->
<!-- <joint name="controller_box_fixed" type="fixed"> -->
<!-- <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/> -->
<!-- <parent link="base"/> -->
<!-- <child link="controller_box"/> -->
<!-- </joint> -->
<!-- <link name="pedestal_feet"> -->
<!-- <collision> -->
<!-- <origin rpy="0 0 0" xyz="-0.1225 0 -0.758"/> -->
<!-- <geometry> -->
<!-- <box size="0.77 0.7 0.31"/> -->
<!-- </geometry> -->
<!-- </collision> -->
<!-- </link> -->
<!-- <joint name="pedestal_feet_fixed" type="fixed"> -->
<!-- <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/> -->
<!-- <parent link="base"/> -->
<!-- <child link="pedestal_feet"/> -->
<!-- </joint> -->
<joint name="right_gripper_base" type="fixed">
<child link="right_gripper_base">
</child>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 -0.00500000000000000">
</origin>
<parent link="right_hand">
</parent>
</joint>
<joint name="right_gripper_endpoint" type="fixed">
<child link="right_gripper">
</child>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0500000000000000">
<!-- <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.2000000000000000"> -->
</origin>
<parent link="right_gripper_base">
</parent>
</joint>
<link name="right_gripper_base">
<collision>
<geometry>
<cylinder length="0.118" radius="0.070">
</cylinder>
</geometry>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.00500000000000000">
</origin>
</collision>
<inertial>
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0">
</inertia>
<mass value="0.440000000000000">
</mass>
<origin rpy="0.0 0.0 0.0" xyz="0.00280000000000000 -0.000400000000000000 0.0322000000000000">
</origin>
</inertial>
<visual>
<geometry>
<mesh filename="package://intera_tools_description/meshes/electric_gripper/electric_gripper_w_fingers.DAE" scale="1.0 1.0 1.0">
</mesh>
</geometry>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 -0.00100000000000000">
</origin>
</visual>
</link>
<link name="right_gripper">
<collision>
<geometry>
<box size="0.0100000000000000 0.0100000000000000 0.0100000000000000">
</box>
</geometry>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0">
</origin>
</collision>
<inertial>
<inertia ixx="1.00000000000000e-08" ixy="0.0" ixz="0.0" iyy="1.00000000000000e-08" iyz="0.0" izz="1.00000000000000e-08">
</inertia>
<mass value="0.0">
</mass>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0">
</origin>
</inertial>
<visual>
<geometry>
<box size="0.0150000000000000 0.0150000000000000 0.0150000000000000">
</box>
</geometry>
<material name="darkgrey">
<color rgba="0.200000000000000 0.300000000000000 0.300000000000000 1.0">
</color>
</material>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0">
</origin>
</visual>
</link>
</robot>
+258
View File
@@ -0,0 +1,258 @@
<?xml version="1.0" ?>
<robot name="sawyer" xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:arg name="pedestal" default="true"/>
<xacro:arg name="static" default="true"/>
<!-- ros_control plugin -->
<gazebo>
<plugin name="sawyer_ros_control" filename="libsawyer_gazebo_ros_control.so">
<robotNamespace>/robot</robotNamespace>
<robotSimType>sawyer_gazebo/SawyerRobotHWSim</robotSimType>
<controlPeriod>0.001</controlPeriod>
<eStopTopic>sim_estop</eStopTopic>
</plugin>
</gazebo>
<!-- Gazebo-Specific Link Properties -->
<xacro:if value="$(arg static)">
<link name="world"/>
<joint name="fixed" type="fixed">
<parent link="world"/>
<child link="base"/>
</joint>
</xacro:if>
<xacro:if value="$(arg pedestal)">
<gazebo reference="pedestal">
<material>Gazebo/FlatBlack</material>
</gazebo>
</xacro:if>
<gazebo reference="torso">
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="head_pan">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<gazebo reference="right_j0">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<gazebo reference="right_j1">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<gazebo reference="right_j2">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<gazebo reference="right_j3">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<gazebo reference="right_j4">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<gazebo reference="right_j5">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<gazebo reference="right_j6">
<implicitSpringDamper>1</implicitSpringDamper>
<provideFeedback>true</provideFeedback>
</gazebo>
<joint name="head_camera_optical_joint" type="fixed">
<origin xyz="0 0 0" rpy="${-pi} ${-pi/2.0} ${-pi/2.0}"/>
<parent link="head_camera"/>
<child link="head_camera_optical"/>
</joint>
<link name="head_camera_optical"/>
<gazebo reference="head_camera_optical">
<sensor name="head_camera" type="camera">
<update_rate>10</update_rate>
<camera name="head_camera">
<horizontal_fov>2.00787026</horizontal_fov>
<image>
<width>1280</width>
<height>800</height>
<format>R8G8B8</format>
</image>
<clip>
<near>0.1</near>
<far>50</far>
</clip>
<!-- Uncomment to add image Distortion -->
<!-- distortion>
<k1>0.6545419633392568</k1>
<k2>0.012904541485280972</k2>
<k3>-0.012279942338550547</k3>
<p1>-0.00036475699823703154</p1>
<p2>3.334461262764956e-05</p2>
<center>677.8808657338167 382.02964533321426</center>
</distortion -->
</camera>
<!-- Uncomment to visualize image inside Gazebo -->
<!-- visualize>true</visualize -->
<plugin filename="libgazebo_ros_camera.so" name="camera_controller">
<alwaysOn>true</alwaysOn>
<updateRate>10</updateRate>
<cameraName>head_camera</cameraName>
<imageTopicName>/io/internal_camera/head_camera/image_raw</imageTopicName>
<cameraInfoTopicName>/io/internal_camera/head_camera/camera_info</cameraInfoTopicName>
<frameName>head_camera</frameName>
<focalLength>407.391526</focalLength>
<!-- Uncomment to add image Distortion params to camera_info topic -->
<!-- distortionK1>0.6545419633392568</distortionK1>
<distortionK2>0.012904541485280972</distortionK2>
<distortionK3>-0.012279942338550547</distortionK3>
<distortionT1>-0.00036475699823703154</distortionT1>
<distortionT2>3.334461262764956e-05</distortionT2>
<Cx>677.8808657338167</Cx>
<Cy>382.02964533321426</Cy -->
</plugin>
</sensor>
</gazebo>
<joint name="right_hand_camera_optical_joint" type="fixed">
<origin xyz="0 0 0" rpy="${-pi} ${-pi/2.0} ${-pi/2.0}"/>
<parent link="right_hand_camera"/>
<child link="right_hand_camera_optical"/>
</joint>
<link name="right_hand_camera_optical"/>
<gazebo reference="right_hand_camera_optical">
<sensor name="right_hand_camera" type="camera">
<update_rate>10.0</update_rate>
<camera name="right_hand_camera">
<horizontal_fov>1.0992892</horizontal_fov>
<image>
<width>752</width>
<height>480</height>
<format>L8</format>
</image>
<clip>
<near>0.02</near>
<far>10</far>
</clip>
<!-- Uncomment to add image Distortion -->
<!-- distortion>
<k1>-0.442</k1>
<k2>0.273</k2>
<k3>-0.123</k3>
<p1>0.0</p1>
<p2>0.0</p2>
<center>365.734985 237.988998</center>
</distortion -->
</camera>
<!-- Uncomment to visualize image inside Gazebo -->
<!-- visualize>true</visualize -->
<plugin filename="libgazebo_ros_camera.so" name="camera_controller">
<alwaysOn>true</alwaysOn>
<updateRate>10.0</updateRate>
<cameraName>right_hand_camera</cameraName>
<imageTopicName>/io/internal_camera/right_hand_camera/image_raw</imageTopicName>
<cameraInfoTopicName>/io/internal_camera/right_hand_camera/camera_info</cameraInfoTopicName>
<frameName>right_hand_camera</frameName>
<focalLength>613.760435</focalLength>
<!-- Uncomment to add image Distortion params to camera_info topic -->
<!-- distortionK1>-0.442</distortionK1>
<distortionK2>0.273</distortionK2>
<distortionK3>-0.123</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
<Cx>365.734985</Cx>
<Cy>237.988998</Cy -->
</plugin>
</sensor>
</gazebo>
<gazebo reference="screen">
<visual>
<plugin name="screen_video_controller" filename="libgazebo_ros_video.so">
<height>600</height>
<width>1024</width>
<topicName>/robot/head_display</topicName>
<robotNamespace>/robot</robotNamespace>
</plugin>
</visual>
</gazebo>
<!-- Transmissions -->
<!-- Right Arm -->
<transmission name="right_tran0">
<type>transmission_interface/SimpleTransmission</type>
<joint name="right_j0">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="right_motor0">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="right_tran1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="right_j1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="right_motor1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="right_tran2">
<type>transmission_interface/SimpleTransmission</type>
<joint name="right_j2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="right_motor2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="right_tran3">
<type>transmission_interface/SimpleTransmission</type>
<joint name="right_j3">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="right_motor3">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="right_tran4">
<type>transmission_interface/SimpleTransmission</type>
<joint name="right_j4">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="right_motor4">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="right_tran5">
<type>transmission_interface/SimpleTransmission</type>
<joint name="right_j5">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="right_motor5">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="right_tran6">
<type>transmission_interface/SimpleTransmission</type>
<joint name="right_j6">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="right_motor6">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<!-- Head -->
<transmission name="head0">
<type>transmission_interface/SimpleTransmission</type>
<joint name="head_pan">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="head_motor0">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
</robot>
+534
View File
@@ -0,0 +1,534 @@
<?xml version="1.0" ?>
<robot name="sawyer" xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:arg name="gazebo" default="false"/>
<xacro:arg name="pedestal" default="true"/>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
<material name="darkgray">
<color rgba=".2 .2 .2 1"/>
</material>
<material name="darkred">
<color rgba=".5 .1 .1 1"/>
</material>
<material name="sawyer_red">
<color rgba=".5 .1 .1 1"/>
</material>
<material name="sawyer_gray">
<color rgba="0.75294 0.75294 0.75294 1"/>
</material>
<link name="base"/>
<link name="torso">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.001 0.001 0.001"/>
</geometry>
<material name="darkgray">
<color rgba=".2 .2 .2 1"/>
</material>
</visual>
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="0.000000 0.000000 0.000000"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</xacro:unless>
</link>
<xacro:if value="$(arg pedestal)">
<link name="pedestal">
<visual>
<origin rpy="1.57079632679 0 -1.57079632679" xyz="0.26 0.345 -0.91488"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/pedestal.DAE"/>
</geometry>
<material name="darkgray"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.02 0 -0.29"/>
<geometry>
<cylinder length="0.62" radius="0.18"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 -0.5"/>
<mass value="60.86397744"/>
<inertia ixx="5.0635929" ixy="0.00103417" ixz="0.80199628" iyy="6.08689388" iyz="0.00105311" izz="4.96191932"/>
</inertial>
</link>
<link name="controller_box">
<collision>
<origin rpy="0 0 0" xyz="-0.325 0 -0.38"/>
<geometry>
<box size="0.22 0.4 0.53"/>
</geometry>
</collision>
</link>
<joint name="controller_box_fixed" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="controller_box"/>
</joint>
<link name="pedestal_feet">
<collision>
<origin rpy="0 0 0" xyz="-0.1225 0 -0.758"/>
<geometry>
<box size="0.77 0.7 0.31"/>
</geometry>
</collision>
</link>
<joint name="pedestal_feet_fixed" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="pedestal_feet"/>
</joint>
<joint name="pedestal_fixed" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="pedestal"/>
</joint>
</xacro:if>
<joint name="right_arm_mount" type="fixed">
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<parent link="base"/>
<child link="right_arm_base_link"/>
</joint>
<joint name="torso_t0" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="base"/>
<child link="torso"/>
</joint>
<link name="right_arm_base_link">
<inertial>
<origin rpy="0 0 0" xyz="-0.0006241 -2.8025E-05 0.065404"/>
<mass value="2.0687"/>
<inertia ixx="0.0067599" ixy="-4.2024E-05" ixz="-6.1904E-07" iyy="0.0067877" iyz="1.5888E-05" izz="0.0074031"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/base.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.12"/>
<geometry>
<cylinder length="0.24" radius="0.08"/>
</geometry>
</collision>
</link>
<link name="right_l0">
<inertial>
<origin rpy="0 0 0" xyz="0.024366 0.010969 0.14363"/>
<mass value="5.3213"/>
<inertia ixx="0.053314" ixy="0.0047093" ixz="0.011734" iyy="0.057902" iyz="0.0080179" izz="0.023659"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_mp3/l0.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.08 0 0.23"/>
<geometry>
<sphere radius="0.07"/>
</geometry>
</collision>
</link>
<joint name="right_j0" type="revolute">
<origin rpy="0 0 0" xyz="0 0 0.08"/>
<parent link="right_arm_base_link"/>
<child link="right_l0"/>
<axis xyz="0 0 1"/>
<limit effort="80.0" lower="-3.0503" upper="3.0503" velocity="1.74"/>
<xacro:if value="$(arg gazebo)">
<dynamics damping="10.0" friction="5.0"/>
</xacro:if>
</joint>
<link name="head">
<inertial>
<origin rpy="0 0 0" xyz="0.0053207 -2.6549E-05 0.1021"/>
<mass value="1.5795"/>
<inertia ixx="0.011833" ixy="-4.4669E-06" ixz="4.9425E-05" iyy="0.0082709" iyz="4.2124E-07" izz="0.0049661"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/head.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.08"/>
<geometry>
<sphere radius="0.18"/>
</geometry>
</collision>
</link>
<joint name="head_pan" type="revolute">
<origin rpy="0 0 0" xyz="0 0 0.2965"/>
<parent link="right_l0"/>
<child link="head"/>
<axis xyz="0 0 1"/>
<limit effort="8" lower="-5.0952" upper="0.9064" velocity="1.8"/>
<xacro:if value="$(arg gazebo)">
<dynamics damping="1.0" friction="0.5"/>
</xacro:if>
</joint>
<link name="right_torso_itb">
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="0.000000 0.000000 0.000000"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</xacro:unless>
</link>
<joint name="right_torso_itb" type="fixed">
<origin rpy="0 -1.57079632679 0" xyz="-.055 0 .22"/>
<parent link="right_l0"/>
<child link="right_torso_itb"/>
<axis xyz="0 0 1"/>
</joint>
<link name="right_l1">
<inertial>
<origin rpy="0 0 0" xyz="-0.0030849 -0.026811 0.092521"/>
<mass value="4.505"/>
<inertia ixx="0.022398" ixy="-0.00023986" ixz="-0.00029362" iyy="0.014613" iyz="-0.0060875" izz="0.017295"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_mp3/l1.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.1225"/>
<geometry>
<sphere radius="0.07"/>
</geometry>
</collision>
</link>
<joint name="right_j1" type="revolute">
<origin rpy="-1.57079632679 1.57079632679 0" xyz="0.081 0.05 0.237"/>
<parent link="right_l0"/>
<child link="right_l1"/>
<axis xyz="0 0 1"/>
<limit effort="80.0" lower="-3.8095" upper="2.2736" velocity="1.328"/>
<xacro:if value="$(arg gazebo)">
<dynamics damping="5.0" friction="2.0"/>
</xacro:if>
</joint>
<link name="right_l2">
<inertial>
<origin rpy="0 0 0" xyz="-0.00016044 -0.014967 0.13582"/>
<mass value="1.745"/>
<inertia ixx="0.025506" ixy="4.4101E-06" ixz="1.4955E-05" iyy="0.0253" iyz="-0.0033204" izz="0.0034179"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l2.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.08"/>
<geometry>
<cylinder length="0.34" radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j2" type="revolute">
<origin rpy="1.57079632679 0 0" xyz="0 -0.14 0.1425"/>
<parent link="right_l1"/>
<child link="right_l2"/>
<axis xyz="0 0 1"/>
<limit effort="40.0" lower="-3.0426" upper="3.0426" velocity="1.957"/>
<xacro:if value="$(arg gazebo)">
<dynamics damping="5.0" friction="2.0"/>
</xacro:if>
</joint>
<link name="right_l3">
<inertial>
<origin rpy="0 0 0" xyz="-0.0048135 -0.0281 -0.084154"/>
<mass value="2.5097"/>
<inertia ixx="0.01016" ixy="-9.7452E-06" ixz="0.00026624" iyy="0.0065685" iyz="0.0030316" izz="0.0069078"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l3.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 -0.01 -0.12"/>
<geometry>
<sphere radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j3" type="revolute">
<origin rpy="-1.57079632679 0 0" xyz="0 -0.042 0.26"/>
<parent link="right_l2"/>
<child link="right_l3"/>
<axis xyz="0 0 1"/>
<limit effort="40.0" lower="-3.0439" upper="3.0439" velocity="1.957"/>
<xacro:if value="$(arg gazebo)">
<dynamics damping="1.0" friction="0.5"/>
</xacro:if>
</joint>
<link name="right_l4">
<inertial>
<origin rpy="0 0 0" xyz="-0.0018844 0.0069001 0.1341"/>
<mass value="1.1136"/>
<inertia ixx="0.013557" ixy="1.8109E-05" ixz="0.00013523" iyy="0.013555" iyz="0.0010561" izz="0.0013658"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l4.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.11"/>
<geometry>
<cylinder length="0.30" radius="0.045"/>
</geometry>
</collision>
</link>
<joint name="right_j4" type="revolute">
<origin rpy="1.57079632679 0 0" xyz="0 -0.125 -0.1265"/>
<parent link="right_l3"/>
<child link="right_l4"/>
<axis xyz="0 0 1"/>
<limit effort="9.0" lower="-2.9761" upper="2.9761" velocity="3.485"/>
<xacro:if value="$(arg gazebo)">
<dynamics damping="2.0" friction="1.0"/>
</xacro:if>
</joint>
<link name="right_arm_itb">
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="0.000000 0.000000 0.000000"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</xacro:unless>
</link>
<joint name="right_arm_itb" type="fixed">
<origin rpy="0 -1.57079632679 0" xyz="-.055 0 .075"/>
<parent link="right_l4"/>
<child link="right_arm_itb"/>
<axis xyz="0 0 1"/>
</joint>
<link name="right_l5">
<inertial>
<origin rpy="0 0 0" xyz="0.0061133 -0.023697 0.076416"/>
<mass value="1.5625"/>
<inertia ixx="0.0047328" ixy="0.00011526" ixz="4.6269E-05" iyy="0.0029676" iyz="-0.0011557" izz="0.0031762"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_pv/l5.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.1"/>
<geometry>
<sphere radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j5" type="revolute">
<origin rpy="-1.57079632679 0 0" xyz="0 0.031 0.275"/>
<parent link="right_l4"/>
<child link="right_l5"/>
<axis xyz="0 0 1"/>
<limit effort="9.0" lower="-2.9761" upper="2.9761" velocity="3.485"/>
<xacro:if value="$(arg gazebo)">
<dynamics damping="1.0" friction="0.5"/>
</xacro:if>
</joint>
<link name="right_hand_camera"/>
<joint name="right_hand_camera" type="fixed">
<origin rpy="0 1.57079632679 0" xyz="0.039552 -0.033 0.0695"/>
<parent link="right_l5"/>
<child link="right_hand_camera"/>
<axis xyz="0 0 0"/>
</joint>
<link name="right_wrist"/>
<joint name="right_wrist" type="fixed">
<origin rpy="1.57079632679 0 0" xyz="0 0 0.10541"/>
<parent link="right_l5"/>
<child link="right_wrist"/>
<axis xyz="0 0 0"/>
</joint>
<link name="right_l6">
<inertial>
<origin rpy="0 0 0" xyz="-8.0726E-06 0.0085838 -0.0049566"/>
<mass value="0.3292"/>
<inertia ixx="0.00031105" ixy="1.4771E-06" ixz="-3.7074E-07" iyy="0.00021549" iyz="-8.4533E-06" izz="0.00035976"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://sawyer_description/meshes/sawyer_mp1/l6.DAE"/>
</geometry>
<material name="sawyer_red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0.015 -0.01"/>
<geometry>
<cylinder length="0.05" radius="0.055"/>
</geometry>
</collision>
</link>
<joint name="right_j6" type="revolute">
<origin rpy="-1.57079632679 -0.17453 3.1416" xyz="0 -0.11 0.1053"/>
<parent link="right_l5"/>
<child link="right_l6"/>
<axis xyz="0 0 1"/>
<xacro:if value="$(arg gazebo)">
<limit effort="9.0" lower="-3.14" upper="3.14" velocity="4.545"/>
<dynamics damping="1.0" friction="0.5"/>
</xacro:if>
<xacro:unless value="$(arg gazebo)">
<limit effort="9.0" lower="-4.7124" upper="4.7124" velocity="4.545"/>
</xacro:unless>
</joint>
<link name="right_hand">
<collision>
<origin rpy="0 0 0" xyz="0 0 0.02"/>
<geometry>
<cylinder length="0.03" radius="0.035"/>
</geometry>
</collision>
<xacro:if value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="0 0.1 0"/>
<mass value="0.01"/>
<inertia ixx="0.01" ixy="0.01" ixz="0.01" iyy="0.01" iyz="0.01" izz="0.01"/>
</inertial>
</xacro:if>
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="1.0E-08 1.0E-08 1.0E-08"/>
<mass value="1.0E-08"/>
<inertia ixx="1.0E-08" ixy="1.0E-08" ixz="1.0E-08" iyy="1.0E-08" iyz="1.0E-08" izz="1.0E-08"/>
</inertial>
</xacro:unless>
</link>
<joint name="right_hand" type="fixed">
<origin rpy="0 0 1.570796" xyz="0 0 0.0245"/>
<axis xyz="0 0 1"/>
<parent link="right_l6"/>
<child link="right_hand"/>
</joint>
<link name="right_l1_2">
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="1.0E-08 1.0E-08 1.0E-08"/>
<mass value="1.0E-08"/>
<inertia ixx="1.0E-08" ixy="1.0E-08" ixz="1.0E-08" iyy="1.0E-08" iyz="1.0E-08" izz="1.0E-08"/>
</inertial>
</xacro:unless>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.035"/>
<geometry>
<cylinder length="0.14" radius="0.07"/>
</geometry>
</collision>
</link>
<joint name="right_j1_2" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="right_l1"/>
<child link="right_l1_2"/>
<axis xyz="0 0 1"/>
</joint>
<link name="right_l2_2">
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="1.0E-08 1.0E-08 1.0E-08"/>
<mass value="1.0E-08"/>
<inertia ixx="1.0E-08" ixy="1.0E-08" ixz="1.0E-08" iyy="1.0E-08" iyz="1.0E-08" izz="1.0E-08"/>
</inertial>
</xacro:unless>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.26"/>
<geometry>
<sphere radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j2_2" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="right_l2"/>
<child link="right_l2_2"/>
<axis xyz="0 0 1"/>
</joint>
<link name="right_l4_2">
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="1.0E-08 1.0E-08 1.0E-08"/>
<mass value="1.0E-08"/>
<inertia ixx="1.0E-08" ixy="1.0E-08" ixz="1.0E-08" iyy="1.0E-08" iyz="1.0E-08" izz="1.0E-08"/>
</inertial>
</xacro:unless>
<collision>
<origin rpy="0 0 0" xyz="0 0.01 0.26"/>
<geometry>
<sphere radius="0.06"/>
</geometry>
</collision>
</link>
<joint name="right_j4_2" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="right_l4"/>
<child link="right_l4_2"/>
<axis xyz="0 0 1"/>
</joint>
<link name="screen">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.24 0.14 0.002"/>
</geometry>
<material name="darkgray"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<sphere radius="0.001"/>
</geometry>
</collision>
<xacro:unless value="$(arg gazebo)">
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="0.0001"/>
<inertia ixx="1e-08" ixy="0" ixz="0" iyy="1e-08" iyz="0" izz="1e-08"/>
</inertial>
</xacro:unless>
</link>
<joint name="display_joint" type="fixed">
<origin rpy="1.57079632679 0 1.57079632679" xyz="0.03 0.0 0.105"/>
<parent link="head"/>
<child link="screen"/>
</joint>
<link name="head_camera"/>
<joint name="head_camera" type="fixed">
<origin rpy="-2.1293 0 -1.57079632679" xyz="0.0228027 0 0.216572"/>
<parent link="head"/>
<child link="head_camera"/>
<axis xyz="0 0 0"/>
</joint>
</robot>
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" ?>
<robot name="end_effector" xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:arg name="gazebo" default="true"/>
<xacro:if value="$(arg gazebo)">
<xacro:property name="gazebo_tag" value="true" scope="local"/>
</xacro:if>
<xacro:unless value="$(arg gazebo)">
<xacro:property name="gazebo_tag" value="true" scope="local"/>
</xacro:unless>
<xacro:include filename="$(find ddpg)/urdf/electric_gripper/rethink_electric_gripper.xacro" />
<xacro:rethink_electric_gripper side="right"
gazebo="${gazebo_tag}"
use_connector_plate="true"
l_finger="standard_narrow"
l_finger_slot="2"
l_finger_tip="basic_soft_tip"
l_finger_grasp="inner"
r_finger="standard_narrow"
r_finger_slot="2"
r_finger_tip="basic_soft_tip"
r_finger_grasp="inner"/>
</robot>