Tools for robotics assembly preparation via Assembly Sequence Planner, FreeCAD workbench for annotating frames, Blender plugin for preparing mesh
.gitignore | ||
LICENSE | ||
README.md |
Freecad to Gazebo exporter
Introduction
Freecad to gazebo exporter is a tool for exporting freecad assembly project to gazebo/ros model.
Design Rules
This project is in its early stage therefore specific design rules must be followed to work with it.
- The assmbly file must be created with
A2Plus
(freecad's prefered assembly workspace). - Parts of the assembly must be in separate files.
- Imovable parts of the main assembly must be made in separate subasssemblies.
- Joints should be represented by AxisConsident constraints with lock rotation turned off.
- For URDF files to work properly, tree structure must be maintained (ie. parent and childs of constraints must follow tree structure).
Requirements
Usage
Clone the repository to catkin workspace
$ git clone https://github.com/Dave-Elec/freecad_to_gazebo.git ~/catkin_ws/src
Re-build catkin workspace
$ catkin_make
$ source devel/setup.bash
To generate only SDF model from freecad assembly:
# freecad_to_gazebo.py <assembly_file> <path/to/model_dir> --sdf
To generate SDF and URDF model from freecad assembly:
$ freecad_to_gazebo.py <assembly_file> <path/to/model_dir>
Note: Only links and joints are generated in the SDF model. to use the model with ros, use the URDF model.
Options
$ freecad_to_gazebo.py <assembly_file> <path/to/model> [--sdf] [--noexport] [--config <path/to/config>]
--sdf: Export only SDF.
--noexport: Don't export mesh files.
--config: Use other configuration file. (default is robot_config.json
inside a directory the same as the assembly file).
Example config file
{
"name": "robot_name",
"joints_limits": {"upper": 90, "lower": -90, "effort": 1, "velocity": 5},
"transmission": {
"type": "transmission_interface/SimpleTransmission",
"hardware_interface": "hardware_interface/PositionJointInterface"
},
"joints_config": {
"type": "position_controllers/JointGroupPositionController",
"grouped": true
},
"joints_pid": {"p": 20.0, "i": 10.0, "d": 0.0, "i_clamp": 0.0},
"root_link": "base_link"
}
Future plans
- Extend collada exporter to export materials from assemblies.
- Create a FreeCAD workbench to interactively assign joints and export to gazebo.
- Reduce set of design rules by making it more robust and general perpouse.
- Support any valid structures of assemblies.