-
 

Package Summary

Tags No category tags.
Version 1.1.2
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/aerostack2/aerostack2.git
VCS Type git
VCS Version main
Last Updated 2024-11-18
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Ignition Gazebo resources

Additional Links

No additional links.

Maintainers

  • CVAR-UPM

Authors

No additional authors.

as2_gazebo_assets

Colletion of AS2 Gazebo assets and launching scripts.

Tested on Gazebo Fortress. Make sure to have it installed.

Gazebo naming has changed between ROS2 Galactic and ROS2 Humble releases (Gazeno new era). You should use as2_gazebo_assets package version corresponding to your ROS2 version.

INDEX

RESOURCES

There are distinguish three kinds of reources: drone, sensor and world models.

DRONE MODELS

Drone model list. | SDF Name | Status | Image | | - | :-: | - | | *quadroto_base* | FLYING | ![](docs/imgs/quadrotor_base.png) | | *hexrotor_base* | FLYING | ![](docs/imgs/hexrotor_base.png) | | *crazyflie* | UNSTABLE FLYING | ![](docs/imgs/crazyflie.png) |

SENSOR MODELS

Sensor model list. | SDF Name | Description | Plugin | | - | - | - | | *imu* | **NOT SDF**: Alreay included in drone models. IMU sensor reports vertical position, angular velocity and linear acceleration readings. | ignition::gazebo::systems::Imu | | *air_pressure* | Air pressure sensor reports vertical position and velocity readings. | ignition::gazebo::systems::AirPressure | | *magnetometer* | Magnetometer sensor reports the magnetic field in its current location. | ignition::gazebo::systems::Magnetometer | | *hd_camera* | RGB Camera with 1280x960 resolution. | - | | *vga_camera* | RGB Camera with 640x480 resolution. | - | | *semantic_camera* | RGB Camera with 1280x960 resolution with semantic segmentation data. | - | | *rgbd_camera* | RGBD Camera with 640x480 resolution and 10 meters of depth sensing. | - | | *point_lidar* | Single point lidar with 40 meter range. | - | | *planar_lidar* | Planar scanning two-dimension lidar with 30 meter range. | - | | *3d_lidar* | Three-dimensional scan with 100 meter range. | - | | *gps* | Navigation satellite sensor reports position and velocity in spherical coordinates (latitude / longitude). | ignition::gazebo::systems::NavSat | | *suction_gripper* | Light weight suction gripper. | mbzirc::SuctionGripperPlugin |

WORLD MODELS

World model list. | SDF Name | Description | Image | | - | - | - | | *empty* | Empty world with ground. | ![](docs/imgs/empty.png) | | *test_gripper* | Empty world with two small objects to test the gripper. | ![](docs/imgs/test_gripper.png) | | *empty_gps* | Empty world with ground and gps enabled | ![](docs/imgs/empty.png) |

HOW TO RUN: Basic usage

Previously setting AS2 environment, simply run:

ros2 launch as2_gazebo_assets launch_simulation.py config_file:=<config-file>

This will run for you ign gazebo server, spawn all models from your config file and open ign gazebo client (GUI).

OPTIONS

  • config_file: Launch config file (JSON or YAML format).

  • gui_config_file: GUI config file. (default: ‘’)

  • use_sim_time: Deactivates clock bridge and object publishes tf in sys clock time. Valid choices are: [‘true’, ‘false’] (default: ‘true’)

  • headless: Launch in headless mode (only ign server). Valid choices are: [‘true’, ‘false’] (default: ‘false’)

  • verbose: Launch in verbose mode. Valid choices are: [‘true’, ‘false’] (default: ‘false’)

  • run_on_start: Run simulation on start. Valid choices are: [‘true’, ‘false’] (default: ‘true’)

CONFIG FILE

Using a config file lets you to set the simulation environment. You can select a world (or none) and attach to it a number of desired drones with desired model, position and set of sensors (payload). Also, you can add objects with desired joints or brigdes to the world. Please pay atention to the format file, otherwise it may fail.

JSON file template:

{
    "world": "<world-name>",                // optional: deafult world if empty
    "drones": [                             // optional: no drones if empty
        {
            "model_type": "<model-name>",       // optional: default model if empty
            "model_name": "<namespace>",        // optional: default namespace if empty
            "xyz": [<x>, <y>, <z>],             // optional: [0, 0, 0] if empty
            "rpy": [<roll>, <pitch>, <yaw>],    // optional: [0, 0, 0] if empty
            "flight_time": <min>,               // optional: 0 or empty means not use battery
            "payload": [                        // optional: no sensors if none
                {
                    "model_type": "<sensor-type>",   // REQUIRED if sensor is used
                    "model_name": "<sensor-name>",   // REQUIRED if sensor is used
                    "xyz": [<x>, <y>, <z>],          // optional: [0, 0, 0] if empty
                    "rpy": [<roll>, <pitch>, <yaw>], // optional: [0, 0, 0] if empty
                },
                {
                    // Second sensor...
                }
            ]
        },
        {
            // Second drone...
        }
    ],
    "objects": [                            // optional: no objects if empty
        {    
            "model_name": "<object-name>",      // REQUIRED if object used
            "model_type": "<object-type>",      // REQUIRED if object used
            "xyz": [<x>, <y>, <z>],             // optional: [0, 0, 0] if empty
            "rpy": [<roll>, <pitch>, <yaw>],    // optional: [0, 0, 0] if empty
            "joints": ["<joint>"],              // optional: [] if empty
            "object_bridges": ["<bridge>"],     // optional: [] if empty
            "tf_broadcaster": <true/false>,     // optional: true if empty
            "use_sim_time": <true/false>        // optional: true if empty
        },
        {
            // Second object...
        }
    ]
}

Notice that comments are not available in JSON format and fields between “<” and “>” should be replaced with each value or removed (along with the field) if is not wanted or required.

Example of a valid JSON config file:

{
    "world_name": "empty_gps",
    "drones": [
        {
            "model_type": "quadrotor_base",
            "model_name": "drone_sim_0",
            "xyz": [ 0.0, 0.0, 0.3 ],
            "payload": [
                {
                    "model_type": "gps",
                    "model_name": "gps"
                },
                {
                    "model_type": "hd_camera",
                    "model_name": "hd_camera"
                }
            ]
        }
    ],
    "objects": [
        {    
            "model_type": "windmill",
            "model_name": "windmill_0",
            "xyz": [ 15.0, 0.0, 0.3 ],
            "rpy": [ 0, 0, -1.57 ],
            "joints": ["motor_link_joint", "blades_link_joint"],
            "object_bridges": ["pose"]
        }
    ]
}

EXAMPLES

Several examples can be found on test folder.

CHANGELOG

Changelog for package as2_gazebo_assets

1.1.2 (2024-08-22)

1.1.1 (2024-08-20)

1.1.0 (2024-08-08)

  • [as2_gazebo_assets] Improve crazyflie model: controller tuned and added IMU
  • [as2_gazebo_assets] Added crazyflie viz MODEL
  • [as2_gazebo_assets] Updated Crazyflie Gazebo model
  • [as2_gazebo_assets] Add optical frames to cameras
  • [as2_gazebo_assets] Fix for flake8.
  • [as2_gazebo_assets] Fix model templates for sensor naming
  • [as2_gazebo_assets] Support yaml files for gazebo world configuration
  • [as2_gazebo_assets] Fix malformed bridges
  • [as2_gazebo_assets] ament lint auto compliance
  • [as2_gazebo_assets] Continue using Pydantic V1
  • [as2_gazebo_assets] environment variable IGN_GAZEBO_RESOURCE_PATH changed to GZ_SIM_RESOURCE_PATH
  • [as2_gazebo_assets] Add actuators bridge
  • [as2_gazebo_assets] Add Gazebo Harmonic launcher by env variable GZ_VERSION
  • [as2_gazebo_assets] Add actuators bridge and disable velocity controller with a param
  • [as2_gazebo_assets] Fix gimbal_bridge on Gazebo Harmonic
  • [as2_gazebo_assets] Gz harmonic support
  • [as2_gazebo_assets] Sensor model name and sensor link name were swapped in camera bridges
  • Contributors: Javilinos, Miguel Fernandez-Cortizas, Rafael Perez-Segui, keikei014, pariaspe

1.0.9 (2024-03-25)

  • added local frame to simulated gimbal msg
  • Partial fix on Crazyflie Model
  • Point gimbal working and Gimbal Inertial links enabling to fly
  • Nested sdf model for gimbal and fixed TF tree
  • Contributors: Javier Melero, Javilinos, Mickey Li, Miguel Fernandez-Cortizas, Rafael Pérez, pariaspe

1.0.8 (2024-02-12)

1.0.7 (2024-02-04)

  • Gimbal model added
  • Cleaning remaining ign, bridges use gz instead ign
  • [as2_gazebo_assets] Renamed to as2_gazebo_assets
  • Contributors: Javilinos, Rafael Pérez, pariaspe

1.0.6 (2023-12-12)

1.0.5 (2023-11-08)

  • Spawn objects from gz resource path
  • Hexrotor back to fly
  • Contributors: Javilinos, pariaspe

1.0.4 (2023-08-23)

1.0.3 (2023-08-22)

1.0.2 (2023-08-17)

  • Merge pull request #314 from aerostack2/313-payload-bridges-missing Payload bridges fix
  • fixes issue 313: payload bridges
  • Merge pull request #306 from aerostack2/as2_viz Added drone_viz sdf
  • added drone_viz sdf
  • Merge pull request #305 from aerostack2/300-add_sim_time_to_gps_bridge use_sim_time now works in gps bridge
  • use sim time now works in gps bridge
  • added grass world
  • Merge pull request #295 from aerostack2/290-add_gps_origin_from_json_file add gps origin from json file
  • now assets can be loaded from other directory
  • jinja always used, if it doesn't exist, sdf is used
  • add gps origin from json file
  • Merge pull request #286 from aerostack2/285-fix_python_list_type Changed typing list to List
  • changed list to List
  • Merge pull request #278 from aerostack2/229-as2_simulation_assets-earth-needs-to-be-alligned-in-enu-frame Change 0 deg reference from North to East
  • Change 0 deg reference from North to East
  • Merge pull request #266 from aerostack2/add_position_plugin_to_gates added position plugin to gates
  • added position plugin to gates
  • Clean gazebo on exit
  • Merge pull request #232 from aerostack2/launch_gz_v2 Gazebo launcher engine refactored
  • Change assets simulation_config_file name
  • default empty value for joints and bridges
  • added pydantic dep
  • models splitted in several files
  • updated to new model
  • model refactor
  • Contributors: Javilinos, Miguel Fernandez-Cortizas, RPS98, Rafael Pérez, pariaspe, rdasilva01

1.0.1 (2023-04-25)

  • Merge pull request #223 from aerostack2/200-unify-maintainer-in-packagexmls Maintainer unified to CVAR-UPM
  • Maintainer unified to CVAR-UPM
  • Merge pull request #222 from aerostack2/221-gazebo-gui-config-file [as2_ign_gazebo_assets] Added GUI config file
  • gui config file and some documenting
  • Merge pull request #209 from aerostack2/208-as2_simulation_assets-use-sim-time-default-parameter [ as2_simulation_assets] Use sim time default parameter
  • Change use_sim_time default value
  • Merge pull request #203 from aerostack2/simulation_assets_for_windmill_test [as2_ign_gazebo_assets] added use_sim_time parameter
  • added use_sim_time parameter to ign_assets
  • Merge pull request #202 from aerostack2/new-windmill [as2_ign_gazebo_assets] Added debug model for visualize in rviz
  • added debug model for visualize in rviz
  • Contributors: Javier Melero, Javilinos, Miguel Fernandez-Cortizas, RPS98, Rafael Pérez, pariaspe

1.0.0 (2023-03-18)

  • Merge pull request #174 from aerostack2/as2_simulation_assets_for_windmill_project [as2_simulation_assets] Windmill updates
  • ground truth bridge in cmakelist was missing
  • fix bug tf broadcaster
  • tf broadcaster renamed to object tf broadcaster
  • last changes
  • stop windmill gps reference frame from rotating when blades rotate aswell
  • object tf bridge added, windmill object finished
  • added controller for windmill in ros2
  • grass patch with sky added
  • joint controller bridge added, windmill joints controllable from ros2
  • added velocity controller to windmill for box
  • Merge remote-tracking branch 'origin' into as2_simulation_assets_for_windmill_project
  • Merge pull request #171 from aerostack2/ign_empty_gps [as2_ign_gazebo_assets] Add GPS coordinates to empty world
  • Add GPS coordinates to empty world
  • azimuth bridge added
  • added gps odometry for azimuth calculation, gps bridge for windmill
  • Merge pull request #145 from aerostack2/add_objects_ignition_enhancement Windmill + load objects with bridges
  • removed windmill world
  • Merge pull request #163 from aerostack2/crazyflie_swarm_demo Crazyflie swarm demo updates
  • Demo cf swarm updates
  • changes and bug fix
  • deleted comments
  • structural changes
  • fix, check for objects in json file
  • added working windmill model, added feature to load object with bridges into the world from config file
  • Merge pull request #124 from aerostack2/123-ground-truth-bridge-segmentation-fault Ground truth bridge segmentation fault fix
  • move publishers before ign subscriber
  • Merge pull request #114 from aerostack2/devel [all] Reduce packages and update names
  • Update namespace names
  • Rename ignition_assets to as2_ign_gazebo_assets
  • Contributors: Javier Melero, Javilinos, Miguel Fernandez-Cortizas, RPS98, pariaspe

0.2.2 (2022-12-22)

0.2.1 (2022-12-19)

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged as2_gazebo_assets at Robotics Stack Exchange