|
Package Summary
Tags | No category tags. |
Version | 0.2.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 | galactic |
Last Updated | 2022-12-20 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Computer Vision And Aerial Robotics Group (UPM)
Authors
ignition_assets
Colletion of AS2 Ignition Gazebo assets and scripts.
Tested on Ignition 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 ignition_assets package version corresponding to your ROS2 version.
INDEX
- ADVANCED USAGE
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 |  | | *hexrotor_base* | FLYING |  | | *crazyflie* | UNSTABLE FLYING |  |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. |  | | *test_gripper* | Empty world with two small objects to test the gripper. |  |HOW TO RUN: Basic usage
Previously setting AS2 environment, simply run:
${AEROSTACK2_PATH}/simulation/ignition/scripts/run_ign.sh
or using a config file (see config files) :
${AEROSTACK2_PATH/simulation/ignition/scripts/run_ign.sh <config-file>
This will run for you ign gazebo server, spawn an quadrotor_base model and open ign gazebo client (GUI).
OPTIONS
Inital configuration aspects as world, drone model, drone pose or adding several drones can be done setting environment variables or using a config file.
- Run on start:
export RUN_ON_START=1
- Verbose mode:
export VERBOSE_SIM=1
ENV VARS
Previously set needed environment variables before launching the script.
- World
export UAV_WORLD=<path-to-world>
- Drone model
export UAV_MODEL=<model-name>
- Drone pose
export UAV_X=<float> # meters
export UAV_Y=<float> # meters
export UAV_Z=<float> # meters
export UAV_YAW=<float> # radians
Using environment variables is though when using only one drone.
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. 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": "<model-name>", // optional: default model if empty
"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
"<sensor-name>": { // REQUIRED if sensor is used
"sensor": "<sensor-type>", // 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
},
"<sensor-name-2>": {
// Second sensor...
}
}
},
{
// Second drone...
}
]
}
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": "empty",
"drones": [
{
"model": "quadrotor_base",
"name": "drone_sim_0",
"xyz": [ 0.0, 0.0, 0.2 ],
"payload": {
"front_camera": {
"sensor": "hd_camera",
"rpy": [ 0.0, 0.0, 1.57 ]
},
"lidar_0": {
"sensor": "3d_lidar",
"xyz": [ 0.0, 0.0, -0.5 ]
}
}
},
{
"model": "hexrotor_base",
"xyz": [ 3.0, 0.0, 0.2 ],
"rpy": [ 0, 0, 1.57 ],
"flight_time": 10
}
]
}
MORE OPTIONS
- Use custom models in world/drone:
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:<custom-model-path>
- Run simulation on start:
export RUN_ON_START=1
EXAMPLES
Several examples can be found on test folder.
Wiki Tutorials
Source Tutorials
Package Dependencies
Deps | Name | |
---|---|---|
1 | ament_cmake | |
2 | ros_gz_sim | |
2 | ros_gz_bridge | |
1 | rclcpp | |
1 | as2_core | |
2 | sensor_msgs | |
2 | geometry_msgs | |
3 | tf2_msgs | |
3 | tf2_ros |
System Dependencies
Name |
---|
python3-jinja2 |
Dependant Packages
Name | Repo | Deps |
---|---|---|
as2_ignition_platform | github-aerostack2-aerostack2 |