Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xacros refactored #133

Merged
merged 9 commits into from
Feb 24, 2022
Merged

Xacros refactored #133

merged 9 commits into from
Feb 24, 2022

Conversation

mikramarc
Copy link
Contributor

@mikramarc mikramarc commented Feb 24, 2022

Proposed changes

Adding new modularized xacros.

Checklist

Before posting a PR ensure that from each of the below categories AT LEAST ONE BOX HAS BEEN CHECKED. If more than one category is applicable then more can be checked. Also ensure that the proposed changes have been filled out with relevant information for reviewers.

Tests

  • No tests required to be added. (For small changes that will be tested by CI/CD infrastructure).
  • Added/Modified automated and PhantomHand CI tests (if a new class is added (Python or C++), the interface of that class must be unit tested).
  • Manually tested in simulation (if simulation specific or no hardware required to test the functionality).
  • Manually tested on hardware (if hardware specific or related).

Documentation

  • No documentation required to be added.
  • Added documentation (For any new feature, explain what it does and how to use it. Write the documentation in a relevant space, e.g. Github, Confluence, etc).
  • Updated documentation (For changes to pre-existing features mentioned in the documentation).

mikramarc and others added 9 commits January 3, 2022 10:59
* Remove redundant definition of pi

pi is available globally in xacro as python's math.pi

* Delete unused meshes in ubi_tactiles

* Remove use of ubi param

* Remove ubi params

* Replace $(find xacro)/xacro -> xacro

* Remove deprecated --inorder option

* Fix missing xacro namespace prefixes

* Fix typo

* Improved xacro for modularity and to permit sensor selection

Modern xacro allows to automatically forward macro arguments when they are
defined with the arg:=^ syntax. Using this feature simplifies macro calling.

Also, instead of specifying hand attributes with an ever-growing set of
binary parameters, this commit introduces parameters hand_type and
(palm|prox|mid|tip)_sensor to modularize parameterization.
This allows for more flexible definition of the (tactile) sensors used across the hand.

Using a value of 'none' for those sensors allows to deactivate (Gazebo) sensors.

Backward compatibility for old parameters is maintained via file backward_compat.urdf.xacro,
which translates from old to new parameters.

* Add compatibility test

Cloned all files from robots/*.urdf.xacro prior to this PR into test/robots.old.
Run xacro on all corresponding files and compare their content.

* Fix backward compatibility

- Restore deleted files required by compatibility test
- Fix use of deprecated properties
- Fix use of deprecated parameters
- Undo unrelated changes w.r.t. upstream
- Fix extra_lite hands: it is missing MF not FF

* More simplifications

- Simpify one_finger_unit.urdf.xacro
  There is only one finger. No need to pass *_sensors. A single one is sufficient.
  Also, a fingers parameter doesn't make sense.

- Reduce number of xacro:if in fingers.urdf.xacro

- Plain string default parameters don't need to be quoted

* More specific variable tests

Using `'text' in variable` is a rather sloppy equivalence check.
This commit attempts to harden these checks using the following regexp
replacements:

- More specific test of hand_type
  ('hand.+?') in ([a-z_]+)  ->  $2.startswith($1)

- More specific variable tests
  ('.+') in ([a-z_]+)  ->  $2 == $1

* Simplify if-else clauses

Improve extensibility (adding more sensors) by emloying an exclusive-if-and-final-else
strategy, utilizing a helper variable. This way we avoid augmenting the list in the
'sensor in [...]' tests.

* Issue deprecation warning

Use python's None value as default to know whether old parameters were specified.

* Deprecate specific hand.urdf.xacro files

* More readable hand_types: muscle, muscletrans, motor, motor+

- hand_mt -> muscletrans
- hand_m -> muscle, regexp: (["' ])hand_m -> $1muscle
- hand_e_plus -> motor+
- hand_e -> motor

* Make fingers parameter a string

* Python 2.x compatibility

As xacro returns unicode objects from property evaluations
we cannot apply str.lower to them in Python 2.x
In Python 3.x str and unicode is essentially the same.

* Simplify syntax for sensor specification

Use textual sensor specifications:
- tip_sensors=bio
- tip_sensors='th=bio, ff=bio, mf=std, rf=std, lf=none'
- tip_sensors='bio, bio, std, std, none'

- Rename backward_compat.urdf.xacro -> process_sensor_parameters.xacro
- Introduce macro validate_tokens

* Apply new sensor specification

* Internally use dotified dict for *_sensors

* hand e working with versions and hand type

* distal refactored

* Deleted deprecated changelog

* Replaced std

* Replaced muscletrans with hand_c

* Fixed finger

* Fixed Thumb plus a few issues from finger forearm and palm

* Fixed wrist

* Moved files to legacy folder for now

* Replaced full_hand with hand xacro and updated hand_g

* Fixed hand lite and extra lite

* Removed arm and old meshes

* Moved gazebo and materials to a common folder

* Fixed xacro errors

* Added mucle hand

* Reformated load files

* Refactored meshes to use only components

* Added all robots to legacy folder for now. And left only two robots: unimanual and bimanual

* Adapting test script after xacro refactoring

* Refactoring sr_description: adapted test and added more parameters validation (#124)

* Removing robots.old folder

* Lint fixes

* Fixing CMakeLists

* Removing whitespace

* Applying changes from ubi-agni#2

* Adapting tests to refactored sr_description

* Adding validation xacro

* Update process_hand_type_parameter.xacro

* Updated validation xacro and small fixes

* Update test_models.sh

* Fixed validation of parameters

* Fixing formtating and deleted unnecessary files

* Work in progress

* Removed unnecessary files

Co-authored-by: Beatriz Leon <beatriz@shadowrobot.com>

* Update process_hand_type_version_side_parameters.xacro

* refactoring

* cleaning

* according to review

Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
Co-authored-by: Guillaume Walck <gwalck@techfak.uni-bielefeld.de>
Co-authored-by: Beatriz Leon <beatriz@shadowrobot.com>
Co-authored-by: maxzieba <max@shadowrobot.com>
Co-authored-by: maxzieba <77073326+maxzieba@users.noreply.github.com>
* testing

* migrating to daes

* removing stl reference

* all changed to dae

* adding material to palm

* Revert "adding material to palm"

This reverts commit 9330265.

* removing redundant dae elements

* all meshes colored

* fixing hand c colors
* updating

* testing

* testing

* testing

* fixing
@mikramarc mikramarc requested review from a team as code owners February 24, 2022 11:55
@beatrizleon beatrizleon changed the title F new xacros ready Xacros refactored Feb 24, 2022
@beatrizleon beatrizleon merged commit 68da063 into noetic-devel Feb 24, 2022
@beatrizleon beatrizleon deleted the F_new_xacros_ready branch February 24, 2022 16:47
@lianghongzhuo lianghongzhuo mentioned this pull request Mar 3, 2022
@lianghongzhuo
Copy link

It's nice of you to do so much work on improving the urdf of shadow hand. But, I am confused with all these new parameters introduced by the new urdf. Could you also document the use of new urdfs? Thank you!

@mikramarc
Copy link
Contributor Author

mikramarc commented Mar 4, 2022

Hi @lianghongzhuo you will find documentation under this link
https://dexterous-hand.readthedocs.io/en/devel/user_guide/3_robot_xacros.html

@lianghongzhuo
Copy link

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants