Package Summary

Tags No category tags.
Version 1.0.8
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-02-23
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

- EXAMPLES

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* | **NOT SDF**: Alreay included in drone models. Air pressure sensor reports vertical position and velocity readings. | ignition::gazebo::systems::AirPressure | | *magnetometer* | **NOT SDF**: Alreay included in drone models. 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'

  • headless: Launch in headless mode (only ign server). Valid choices are: 'true', 'false'

  • verbose: Launch in verbose mode. Valid choices are: 'true', 'false'

  • run_on_start: Run simulation on start. Valid choices are: 'true', 'false'

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.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

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

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