https://github.com/hebirobotics/hebi_description
XACRO, URDF, and meshes for HEBI components and robots
https://github.com/hebirobotics/hebi_description
Last synced: 11 months ago
JSON representation
XACRO, URDF, and meshes for HEBI components and robots
- Host: GitHub
- URL: https://github.com/hebirobotics/hebi_description
- Owner: HebiRobotics
- License: apache-2.0
- Created: 2019-06-12T14:04:35.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-29T18:17:46.000Z (almost 2 years ago)
- Last Synced: 2024-08-29T21:47:11.823Z (almost 2 years ago)
- Language: Python
- Size: 35.2 MB
- Stars: 3
- Watchers: 10
- Forks: 7
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.rst
- License: LICENSE
Awesome Lists containing this project
README
# hebi_description
This repository is a collection of `xacro` macros for creating URDF files for HEBI components and systems.
Along with the macros, several macros for full systems are defined.
When using these macros, note that you may have to run `xacro --xacro-ns ` in order to suppress legacy interpretation of xacro tags without namespaces (see http://wiki.ros.org/xacro).
## Dependencies
The scripts for converting between hrdf, xacro, and urdf depend on lxml, which can be installed by running `pip3 install --user lxml`
## xacro macros
We provide several `xacro` macros for HEBI components that can be used to create robots for simulation or visualization:
### ``
This represents a HEBI actuator. Required attributes are:
* `name` The name of this actuator. This is used to reference this actuator from other HEBI components. Note that when HEBI components are used with the HEBI gazebo plugins, this should be in the format `/`, where these are the human-readable and settable names of the actuators on the network (e.g., "HEBI\Elbow" for the elbow joint on a standard HEBI arm).
* `child` The element that is attached to the output of this actuator. This should be the "name" of the HEBI component; for standard URDF components, this will attempt to connect to `/INPUT_INTERFACE`.
* `type` The actuator type - `X5_1`, `X5_4`, `X5_9`, `X8_3`, `X8_9`, or `X8_16`.
Optional attributes are:
* `limits` The position limits of the actuator. If not defined, assumes a continuously rotatable revolute joint. If defined, both must be finite and the lower limit must be below the upper limit. The format is `${[,]}`, and is in radians. For example, one full revolution centered at 0 would be `${[-${pi}, ${pi}]}`.
### ``
* `name` A unique name that can be used to reference this link from other HEBI and URDF components.
* `child` The element that is attached to the output of this link. This should be the "name" of the HEBI component; for standard URDF components, this will attempt to connect to `/INPUT_INTERFACE`.
* `extension` The extension of the link, in meters, per documented convention on docs.hebi.us. For example, a `300` mm tube would have an extension of `0.325`.
* `twist` The twist of the link input and output frames, in radians, per documented convention on docs.hebi.us. A `0` radian twist would mean that the input and output z-axis are the same direction.
### ``
* `name` A unique name that can be used to reference this bracket from other HEBI and URDF components.
* `child` The element that is attached to the output of this bracket. This should be the "name" of the HEBI component; for standard URDF components, this will attempt to connect to `/INPUT_INTERFACE`.
* `type` The bracket type - `X5LightLeft`, `X5LightRight`, `X5HeavyLeftInside`, `X5HeavyLeftOutside`, `X5HeavyRightInside`, or `X5HeavyRightOutside`
### ``
This represents a HEBI actuator (currently only the parallel jaws style)
* `name` A unique name that can be used to reference this bracket from other HEBI and URDF components; the base link that will be created is called `/INPUT_INTERFACE`
* `type` The gripper type; currently `parallel` is the only supported value.
### ``
Represents the end of a robot, with no particular other information (this allows the final joint in another `actuator`, `link`, or `bracket` to be completed)
* `name` A unique name that can be used to reference this bracket from other HEBI and URDF components; the link that will be created is called `/INPUT_INTERFACE`.
## Conventions
The naming convention we use for elements is that the xacro actuator/link/bracket/etc macros automatically define two specifically named subelements:
* `/INPUT_INTERFACE` is the input body of a module
* `/OUTPUT_INTERFACE` is the output joint of a module
This allows custom components to reference HEBI library components, as seen below.
Additionally, when naming actuators (`xacro:x5` or `xacro:x8` types), then convention is `/`. This allows the HEBI Gazebo simulation plugins to properly load and simulate the actuators.
Here is a segment of a XACRO file which connects a 3-DOF hebi arm to a "base" link in the world, and adds an "end effector" link at the end. Note -- HEBI xacro components currently must always define a child element for their joint to connect to!
```
...
true
...
```