Repository Summary
Checkout URI | https://github.com/Boeing/gazebo_model_attachment_plugin.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-01-12 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
boeing_gazebo_model_attachment_plugin | 1.0.3 |
boeing_gazebo_model_attachment_plugin_msgs | 1.0.3 |
README
Distro | CI Status |
---|---|
Noetic | |
Humble |
Gazebo Model Attachment Plugin
Overview
Once a model has been spawned within Gazebo, it can often be necessary to add or remove Links at runtime without destroying the model. This can be necessary for simulating actions such as end effector swap, item transport (loading and uploading), or pick and place operations. This package enables such simulations by allowing Models to be attached to each other.
Assumptions
- The models must have been spawned and contain the specified link names.
Limitations
- The plugin will not teleport the child model to make the pose of model_name_1/link_name_1 match model_name_2/link_name_2. The attachment will instead occur with the pose difference at the time of the service call being maintained.
- If the user wishes to have zero pose difference a call to the gazebo/set_link_state service can be made.
Installation
Dependencies
Due to this change in rosidl_python currently you can not build a package that both generates interfaces and installs a Python package. While we are waiting for the fix to be merged you must build the following branch of rosidl_python locally.
Building
To build from source, clone the latest version from this repository into your ros workspace and compile the package using colcon
cd ros_ws/src
git clone https://github.com/boeing/boeing_gazebo_model_attachment_plugin.git
cd ../
rosdep install --from-paths . --ignore-src
colcon build
Usage
Add your library path to the GAZEBO_PLUGIN_PATH
export GAZEBO_PLUGIN_PATH=$HOME/ros_ws/build:$GAZEBO_PLUGIN_PATH
Add the plugin to your world file
<sdf version='1.6'>
<world name='default'>
<plugin name="model_attachment" filename="libboeing_gazebo_model_attachment_plugin_lib.so"></plugin>
<include>
<uri>model://ground_plane</uri>
</include>
<include>
<uri>model://sun</uri>
</include>
<plugin name="factory" filename="libfactory.so"/>
</world>
</sdf>
Run Gazebo
gazebo ~/gazebo_plugin_tutorial/test.world
Provided Services
-
attach
(boeing_gazebo_model_attachment_plugin/Attach.srv)Creates a joint between two links
ros2 service call /boeing_gazebo_model_attachment_plugin/attach
Parameters
-
joint_name
(string) The name of the joint to be created -
model_1
(string) - The name of the parent model. -
link_1
(string) - The name of the link on the parent model. -
model_2
(string) - The name of the child model. -
link_2
(string) - The name of the link on the child model.
Response
-
success
(bool) True if the operation is successful -
message
(string) Contains error message if operation fails.
-
-
detach
(boeing_gazebo_model_attachment_plugin/Detach.srv) removes a joint between two links.ros2 service call /boeing_gazebo_model_attachment_plugin/detach
Parameters
-
joint_name
(string) The name of the joint to be created -
model_1
(string) - The name of the parent model. -
model_2
(string) - The name of the child model.
Response
-
success
(bool) True if the operation is successful -
message
(string) Contains error message if operation fails.Authors
The Boeing Company
Beau Colley-Allerton Jason Cochrane
-
License
This package is released under the Apache 2.0 License
Contributing
Any contribution that you make to this repository will be under the Apache-2.0 License, as dictated by that license
To contribute, issue a PR and @brta-jc (jason.cochrane@boeing.com)
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/Boeing/gazebo_model_attachment_plugin.git |
VCS Type | git |
VCS Version | noetic |
Last Updated | 2024-01-12 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
boeing_gazebo_model_attachment_plugin | 1.0.2 |
README
Distro | CI Status |
---|---|
Noetic | |
Humble |
Gazebo Model Attachment Plugin
Overview
Once a model has been spawned within Gazebo, it can often be necessary to add or remove Links at runtime without destroying the model. This can be necessary for simulating actions such as end effector swap, item transport (loading and uploading), or pick and place operations. This package enables such simulations by allowing Models to be attached to each other.
Assumptions
- The models must have been spawned and contain the specified link names.
Limitations
- The plugin will not teleport the child model to make the pose of model_name_1/link_name_1 match model_name_2/link_name_2. The attachment will instead occur with the pose difference at the time of the service call being maintained.
- If the user wishes to have zero pose difference a call to the gazebo/set_link_state service can be made.
Installation
Dependencies
- None
Installation from Packages
PENDING APPROVAL ON ROS_DISTRO
To install all packages from this repository as Debian packages use
sudo apt-get install ros-noetic-boeing-gazebo-model-attachment-plugin
Or better, use rosdep
:
sudo rosdep install --from-paths src
Building
To build from source, clone the latest version from this repository into your ros workspace and compile the package using catkin
cd ros_ws/src
git clone https://github.com/boeing/boeing_gazebo_model_attachment_plugin.git
cd ../
rosdep install --from-paths . --ignore-src
catkin make
Usage
Add your library path to the GAZEBO_PLUGIN_PATH
export GAZEBO_PLUGIN_PATH=$HOME/ros_ws/build:$GAZEBO_PLUGIN_PATH
Add the plugin to your world file
<sdf version='1.6'>
<world name='default'>
<plugin name="model_attachment" filename="libboeing_gazebo_model_attachment_plugin_lib.so"></plugin>
<include>
<uri>model://ground_plane</uri>
</include>
<include>
<uri>model://sun</uri>
</include>
<plugin name="factory" filename="libfactory.so"/>
</world>
</sdf>
Run Gazebo
gazebo ~/gazebo_plugin_tutorial/test.world
Provided Services
-
attach
(boeing_gazebo_model_attachment_plugin/Attach.srv)Creates a joint between two links
ros service call /boeing_gazebo_model_attachment_plugin/attach
Parameters
-
joint_name
(string) The name of the joint to be created -
model_1
(string) - The name of the parent model. -
link_1
(string) - The name of the link on the parent model. -
model_2
(string) - The name of the child model. -
link_2
(string) - The name of the link on the child model.
Response
-
success
(bool) True if the operation is successful -
message
(string) Contains error message if operation fails.
-
-
detach
(boeing_gazebo_model_attachment_plugin/Detach.srv) removes a joint between two links.ros2 service call /boeing_gazebo_model_attachment_plugin/detach
Parameters
-
joint_name
(string) The name of the joint to be created -
model_1
(string) - The name of the parent model. -
model_2
(string) - The name of the child model.
Response
-
success
(bool) True if the operation is successful -
message
(string) Contains error message if operation fails.Authors
The Boeing Company
Beau Colley-Allerton Jason Cochrane
-
License
The Config File Validator is released under the Apache 2.0 License
Contributing
Any contribution that you make to this repository will be under the Modified Apache 2 License, as dictated by that license
To contribute, issue a PR and @brta-jc (jason.cochrane@boeing.com)