Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,26 @@ gz_sim_system_libraries(
],
)

gz_sim_system_libraries(
srcs = glob(
[
"src/systems/free_space_explorer/**/*.cc",
"src/systems/free_space_explorer/**/*.hh",
],
),
so_lib_name = "gz-sim-free-space_explorer--system.so",
static_lib_name = "gz-sim-free-space-explorer-system-static",
visibility = ["//visibility:public"],
deps = [
":gz-sim",
"@gz-common//graphics",
"@gz-math",
"@gz-msgs//:gzmsgs_cc_proto",
"@gz-plugin//:register",
"@gz-transport",
],
)

gz_sim_system_libraries(
srcs = glob(
[
Expand Down
183 changes: 183 additions & 0 deletions examples/worlds/export_occupancy_grid.sdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
<!--
This world demonstrates the FreeSpaceExplorer system plugin.
A lidar will explore the world and generate an occupancy grid.
The occupancy grid will be published as an image on the /scan_image topic.

To start the exploration, run the following command in a new terminal:
gz topic -t /start_exploration -m gz.msgs.Boolean -p 'data: true'
-->
<sdf version="1.6">
<world name="empty">
<gui>
<plugin filename="ImageDisplay" name="Image Display">
<topic>/scan_image</topic>
</plugin>
</gui>
<physics name="1ms" type="ignored">
<max_step_size>0.001</max_step_size>
<real_time_factor>1.0</real_time_factor>
</physics>
<plugin
filename="gz-sim-physics-system"
name="gz::sim::systems::Physics">
</plugin>
<plugin
filename="gz-sim-user-commands-system"
name="gz::sim::systems::UserCommands">
</plugin>
<plugin
filename="gz-sim-scene-broadcaster-system"
name="gz::sim::systems::SceneBroadcaster">
</plugin>
<plugin
filename="gz-sim-contact-system"
name="gz::sim::systems::Contact">
</plugin>
<plugin
filename="gz-sim-sensors-system"
name="gz::sim::systems::Sensors">
<render_engine>ogre2</render_engine>
</plugin>

<light type="directional" name="sun">
<cast_shadows>true</cast_shadows>
<pose>0 0 10 0 0 0</pose>
<diffuse>0.8 0.8 0.8 1</diffuse>
<specular>0.2 0.2 0.2 1</specular>
<attenuation>
<range>1000</range>
<constant>0.9</constant>
<linear>0.01</linear>
<quadratic>0.001</quadratic>
</attenuation>
<direction>-0.5 0.1 -0.9</direction>
</light>

<model name="model_with_lidar">
<pose>-1 -1 0.5 0 0 0</pose>
<link name="link">
<inertial>
<mass>0.1</mass>
<inertia>
<ixx>0.000166667</ixx>
<iyy>0.000166667</iyy>
<izz>0.000166667</izz>
</inertia>
</inertial>
<collision name="collision">
<geometry>
<box>
<size>0.1 0.1 0.1</size>
</box>
</geometry>
</collision>
<visual name="visual">
<geometry>
<box>
<size>0.1 0.1 0.1</size>
</box>
</geometry>
</visual>

<sensor name='gpu_lidar' type='gpu_lidar'>
<topic>scan</topic>
<update_rate>10</update_rate>
<lidar>
<scan>
<horizontal>
<samples>640</samples>
<resolution>1</resolution>
<min_angle>0</min_angle>
<max_angle>6.28</max_angle>
</horizontal>
</scan>
<range>
<min>0.08</min>
<max>9.0</max>
<resolution>0.01</resolution>
</range>
</lidar>
<visualize>true</visualize>
</sensor>
</link>
<static>true</static>

<plugin
filename="gz-sim-free-space-explorer-system"
name="gz::sim::systems::FreeSpaceExplorer">
<lidar_topic>/scan</lidar_topic>
<image_topic>/scan_image</image_topic>
<start_topic>/start_exploration</start_topic>
<width>100</width>
<height>100</height>
<resolution>0.25</resolution>
<sensor_link>link</sensor_link>
</plugin>
</model>

<model name="cube">
<pose>1 1 0.5 0 0 0</pose>
<link name="box_link">
<inertial>
<inertia>
<ixx>0.16666</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.16666</iyy>
<iyz>0</iyz>
<izz>0.16666</izz>
</inertia>
<mass>1.0</mass>
</inertial>
<collision name="box_collision">
<geometry>
<box>
<size>1 1 1</size>
</box>
</geometry>
</collision>

<visual name="box_visual">
<geometry>
<box>
<size>1 1 1</size>
</box>
</geometry>
<material>
<ambient>1 0 0 1</ambient>
<diffuse>1 0 0 1</diffuse>
<specular>1 0 0 1</specular>
</material>
</visual>
</link>
</model>

<model name="ground_plane">
<static>true</static>
<link name="link">
<collision name="collision">
<geometry>
<plane>
<normal>0 0 1</normal>
<size>100 100</size>
</plane>
</geometry>
</collision>
<visual name="visual">
<geometry>
<plane>
<normal>0 0 1</normal>
<size>100 100</size>
</plane>
</geometry>
<material>
<ambient>0.8 0.8 0.8 1</ambient>
<diffuse>0.8 0.8 0.8 1</diffuse>
<specular>0.8 0.8 0.8 1</specular>
</material>
</visual>
</link>
</model>

</world>
</sdf>
4 changes: 2 additions & 2 deletions src/gui/plugins/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -149,14 +149,14 @@ add_subdirectory(playback_scrubber)
add_subdirectory(plot_3d)
add_subdirectory(plotting)
add_subdirectory(resource_spawner)
add_subdirectory(select_entities)
add_subdirectory(scene_manager)
add_subdirectory(select_entities)
add_subdirectory(shapes)
add_subdirectory(spawn)
add_subdirectory(transform_control)
add_subdirectory(video_recorder)
add_subdirectory(view_angle)
add_subdirectory(visualization_capabilities)
add_subdirectory(visualize_contacts)
add_subdirectory(visualize_lidar)
add_subdirectory(visualize_frustum)
add_subdirectory(visualize_lidar)
1 change: 1 addition & 0 deletions src/systems/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ add_subdirectory(environment_preload)
add_subdirectory(environmental_sensor_system)
add_subdirectory(follow_actor)
add_subdirectory(force_torque)
add_subdirectory(free_space_explorer)
add_subdirectory(hydrodynamics)
add_subdirectory(imu)
add_subdirectory(joint_controller)
Expand Down
8 changes: 8 additions & 0 deletions src/systems/free_space_explorer/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
gz_add_system(free-space-explorer
SOURCES
FreeSpaceExplorer.cc
PUBLIC_LINK_LIBS
gz-common::gz-common
gz-math::gz-math
gz-plugin::core
)
Loading
Loading