Skip to content

add URMC 2025 gazebo world#250

Open
gautz wants to merge 1 commit into
ROBOTIS-GIT:humblefrom
gautz:humble-urmc
Open

add URMC 2025 gazebo world#250
gautz wants to merge 1 commit into
ROBOTIS-GIT:humblefrom
gautz:humble-urmc

Conversation

@gautz

@gautz gautz commented Feb 17, 2026

Copy link
Copy Markdown

No description provided.

@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello @gautz, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly expands the simulation capabilities by introducing a new, comprehensive Gazebo world designed for the URMC 2025 competition. It integrates a collection of custom-designed models to create a realistic and challenging environment for robot navigation and interaction. The changes also improve the initial placement control of the TurtleBot3 within any Gazebo world by allowing specification of its starting orientation.

Highlights

  • New Gazebo World for URMC 2025: A complete Gazebo simulation environment for the URMC 2025 competition has been added, featuring a custom course, various traffic signs, barriers, and tunnel obstacles. This new world provides a dedicated testing ground for competition participants.
  • Enhanced TurtleBot3 Spawning: The spawn_turtlebot3.launch.py script was updated to allow specifying an initial yaw (orientation) for the TurtleBot3 robot, providing greater flexibility in setting up simulation scenarios.
  • Introduction of Custom Models: Numerous new Gazebo models, including checker patterns, course elements, parking zones, turns, and a variety of traffic signs (construction, intersection, left, no entry, parking, pass left, right, stop, tunnel), have been added to populate the URMC 2025 world.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • turtlebot3_gazebo/launch/spawn_turtlebot3.launch.py
    • Added 'yaw' launch configuration with a default value of '0.0'.
    • Included the 'yaw' parameter in the arguments passed to the 'spawn_entity' node.
  • turtlebot3_gazebo/launch/turtlebot3_urmc_2025.launch.py
    • Added a new launch file to deploy the URMC 2025 Gazebo world.
    • Configured default initial poses (x, y, yaw) for the TurtleBot3 within this world.
    • Integrated standard Gazebo server and client, robot state publisher, and TurtleBot3 spawning.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/checker/materials/scripts/checker.material
    • Added material definition for a checker pattern texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/checker/model.config
    • Added model configuration for the 'checker' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/checker/model.sdf
    • Added SDF definition for a static box model with a checker texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/course/materials/scripts/course.material
    • Added material definition for a course texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/course/model.config
    • Added model configuration for the 'course' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/course/model.sdf
    • Added SDF definition for a static textured ground plane representing the course.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/PIste_droite_texture/materials/scripts/piste_droit.material
    • Added material definition for a textured track segment.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/PIste_droite_texture/model.config
    • Added model configuration for the 'PIste_droite_texture' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/PIste_droite_texture/model.sdf
    • Added SDF definition for a static mesh model of a straight track segment.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/Parking_1/model.config
    • Added model configuration for the 'Parking_1' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/Parking_1/model.sdf
    • Added SDF definition for a static mesh model of a parking area.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/Virage/model.config
    • Added model configuration for the 'Virage' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/Virage/model.sdf
    • Added SDF definition for a static mesh model of a turn segment.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/parking_1.dae
    • Added COLLADA mesh file for the parking area model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/meshes/virage.dae
    • Added COLLADA mesh file for the turn segment model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_construction/materials/scripts/traffic_construction.material
    • Added material definition for a traffic construction sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_construction/model.config
    • Added model configuration for the 'traffic_construction' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_construction/model.sdf
    • Added SDF definition for a static box model with a traffic construction texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_intersection/materials/scripts/traffic_intersection.material
    • Added material definition for a traffic intersection sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_intersection/model.config
    • Added model configuration for the 'traffic_intersection' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_intersection/model.sdf
    • Added SDF definition for a static box model with a traffic intersection texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_left/materials/scripts/traffic_is_left.material
    • Added material definition for a traffic left turn sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_left/model.config
    • Added model configuration for the 'traffic_left' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_left/model.sdf
    • Added SDF definition for a static box model with a traffic left turn texture and initial pose.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_noentry/materials/scripts/traffic_noentry.material
    • Added material definition for a traffic no entry sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_noentry/model.config
    • Added model configuration for the 'traffic_noentry' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_noentry/model.sdf
    • Added SDF definition for a static box model with a traffic no entry texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_parking/model.config
    • Added model configuration for the 'traffic_parking' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_parking/model.sdf
    • Added SDF definition for a static box model with a traffic parking texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_pl_left/materials/scripts/traffic_pl_left.material
    • Added material definition for a traffic 'pass left' sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_pl_left/model.config
    • Added model configuration for the 'traffic_pl_left' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_pl_left/model.sdf
    • Added SDF definition for a static box model with a traffic 'pass left' texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_right/materials/scripts/traffic_right.material
    • Added material definition for a traffic right turn sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_right/model.config
    • Added model configuration for the 'traffic_right' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_right/model.sdf
    • Added SDF definition for a static box model with a traffic right turn texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_stop/materials/scripts/traffic_stop.material
    • Added material definition for a traffic stop sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_stop/model.config
    • Added model configuration for the 'traffic_stop' model.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_stop/model.sdf
    • Added SDF definition for a static box model with a traffic stop texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_tunnel/materials/scripts/tunnel.material
    • Added material definition for a traffic tunnel sign texture.
  • turtlebot3_gazebo/models/turtlebot3_urmc_2025/traffic_tunnel/model.sdf
    • Added SDF definition for a static box model with a traffic tunnel texture and initial pose.
  • turtlebot3_gazebo/worlds/turtlebot3_urmc_2025.world
    • Added a new Gazebo world file for the URMC 2025 competition.
    • Included various custom models such as the course, traffic signs, barriers, tunnel walls, and obstacles.
    • Configured scene properties, physics settings, and lighting for the world.
Activity
  • The pull request was initiated by gautz.
  • A new Gazebo world for the URMC 2025 competition was introduced, complete with custom models for the environment.
  • The spawn_turtlebot3.launch.py file was updated to allow for initial yaw configuration of the robot.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds a new Gazebo world urmc_2025 along with its associated launch files and models. The changes are a good starting point, but there are several critical issues that need to be addressed before merging. These include hardcoded absolute paths in SDF files, which will break model loading on other machines, and structural problems in the world file, such as invalid syntax and the inclusion of a simulation state block. I've left detailed comments on these issues with suggestions for how to fix them.

<material>
<lighting>1</lighting>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

Using a file:// URI is not portable and will likely fail on other systems. Please use a standard Gazebo material script (e.g., Gazebo/Grey which is already named) or include the material within your model and reference it with a model:// URI.

<pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<uri>/home/alexis/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/models/Circuit/meshes/virage.dae</uri>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This hardcoded absolute path will break model loading. Please use a relative model:// URI.

Suggested change
<uri>/home/alexis/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/models/Circuit/meshes/virage.dae</uri>
<uri>model://Virage/meshes/virage.dae</uri>

<pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<uri>/home/alexis/Téléchargements/piste_droit_texture.dae</uri>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This hardcoded absolute path will break the model loading on any other machine. Please use a relative model:// URI. The referenced file piste_droit_texture.dae also does not appear to be included in this pull request. It should be added to the model's directory, for example, under a meshes subfolder.

Suggested change
<uri>/home/alexis/Téléchargements/piste_droit_texture.dae</uri>
<uri>model://PIste_droite_texture/meshes/piste_droit_texture.dae</uri>

Comment on lines +209 to +343
<state world_name='default'>
<sim_time>116 345000000</sim_time>
<real_time>32 693566475</real_time>
<wall_time>1525097329 747995208</wall_time>
<iterations>32558</iterations>
<model name='ground'>
<pose frame=''>0 0 0 0 -0 0</pose>
<scale>1 1 1</scale>
<link name='ground'>
<pose frame=''>0 0 0 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>

<model name='tunnel_obstacle'>
<pose frame=''>-1.04145 -1.12671 0 0 -0 0</pose>
<scale>1 1 1</scale>
<link name='obstacle_1'>
<pose frame=''>-0.61823 -1.33874 0.125 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
<link name='obstacle_2'>
<pose frame=''>-1.36518 -1.41427 0.125 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
<link name='obstacle_3'>
<pose frame=''>-1.14094 -0.627116 0.125 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>

<model name='tunnel_wall'>
<pose frame=''>-0.964699 -1.03574 0 0 -0 0</pose>
<scale>1 1 1</scale>
<link name='Wall_1'>
<pose frame=''>-1.91548 -1.005857 0 0 -0 1.5708</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
<link name='Wall_2'>
<pose frame=''>-0.994699 -1.92118 0 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
<link name='Wall_3'>
<pose frame=''>-0.021303 -0.832071 0 0 -0 1.5708</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
<link name='Wall_4'>
<pose frame=''>-0.814699 -0.03074 0 0 -0 3.14159</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>

<model name='unit_box'>
<pose frame=''>-1.72 0.56 0.12 0 0 -0.0 </pose>
<scale>1 1 1</scale>
<link name='traffic_bar'>
<pose frame=''>-1.72 0.56 0.12 0 0 -0.0 </pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>1.06648 0.03546 4.20605 2.1745 -1.41657 3.10996</acceleration>
<wrench>1.06648 0.03546 4.20605 0 -0 0</wrench>
</link>
<static>1</static>
</model>

<model name='barrier_1'>
<pose frame=''>1.745246 0.106830 0.149991 0 -0 0</pose>
<scale>1 1 1</scale>
<link name='link'>
<pose frame=''>1.745246 0.106830 0.149991 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>
<model name='barrier_2'>
<pose frame=''>1.191956 0.620539 0.149991 0 -0 0</pose>
<scale>1 1 1</scale>
<link name='link'>
<pose frame=''>1.191956 0.620539 0.149991 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>
<model name='barrier_3'>
<pose frame=''>0.39 1.104 0.15 0 -0 1.596</pose>
<scale>1 1 1</scale>
<link name='link'>
<pose frame=''>0.39 1.104 0.15 0 -0 1.596</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>
<model name='barrier_4'>
<pose frame=''>0.20 1.90 0.15 0 -0 1.596</pose>
<scale>1 1 1</scale>
<link name='link'>
<pose frame=''>0.20 1.90 0.15 0 -0 1.596</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>


<light name='sun'>
<pose frame=''>0 0 10 0 -0 0</pose>
</light>
<light name='user_point_light_1'>
<pose frame=''>-1.648146 0.604519 1 0 -0 0</pose>
</light>
<light name='user_point_light_2'>
<pose frame=''>1.63854 1.69565 1 0 -0 0</pose>
</light>
<light name='user_point_light_3'>
<pose frame=''>0.42 -3.31 1 0 -0 0</pose>
</light>
</state>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This <state> block appears to be a snapshot of a running simulation and should be removed from the world definition file. Including a state block can lead to unexpected behavior, makes the world's initial configuration unpredictable, and makes the file difficult to maintain. Initial model poses should be defined in their respective <include> or <model> tags.

<pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<uri>/home/alexis/Téléchargements/piste_droit_texture.dae</uri>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This hardcoded absolute path will break the model loading on any other machine. Please use a relative model:// URI.

Suggested change
<uri>/home/alexis/Téléchargements/piste_droit_texture.dae</uri>
<uri>model://PIste_droite_texture/meshes/piste_droit_texture.dae</uri>

Comment on lines +33 to +34
<url>model://Piste_droite_texture/materials/scripts</url>
<url>model://Piste_droite_texture/materials/textures</url>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The model URI for scripts and textures seems incorrect. Based on other models in this PR, it should probably include the parent directories from the models folder, like model://turtlebot3_urmc_2025/meshes/PIste_droite_texture/... to be resolved correctly by Gazebo.

Suggested change
<url>model://Piste_droite_texture/materials/scripts</url>
<url>model://Piste_droite_texture/materials/textures</url>
<url>model://turtlebot3_urmc_2025/meshes/PIste_droite_texture/materials/scripts</url>
<url>model://turtlebot3_urmc_2025/meshes/PIste_droite_texture/materials/textures</url>

Comment on lines +353 to +1305
<model name='tunnel_wall'>
<link name='Wall_1'>
<pose frame=''>-0.980783 0.049883 0 0 -0 1.5708</pose>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<visual name='Wall_1_Visual'>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.8 0.05 0.25</size>
</box>
</geometry>
<material>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
<ambient>1 1 1 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
</material>
<cast_shadows>1</cast_shadows>
<transparency>0</transparency>
</visual>
<collision name='Wall_1_Collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.8 0.05 0.25</size>
</box>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
<gravity>1</gravity>
</link>
<link name='Wall_2'>
<pose frame=''>0 -0.935438 0 0 -0 0</pose>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<visual name='Wall_2_Visual'>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.8 0.05 0.25</size>
</box>
</geometry>
<material>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
<ambient>1 1 1 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
</material>
<cast_shadows>1</cast_shadows>
<transparency>0</transparency>
</visual>
<collision name='Wall_2_Collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.8 0.05 0.25</size>
</box>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
<gravity>1</gravity>
</link>
<link name='Wall_3'>
<pose frame=''>0.943396 0.183669 0 0 -0 1.5708</pose>
<inertial>
<inertia>
<ixx>nan</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>nan</iyy>
<iyz>0</iyz>
<izz>nan</izz>
</inertia>
<mass>0</mass>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<visual name='Wall_3_Visual'>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.53699 0.05 0.25</size>
</box>
</geometry>
<material>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
<ambient>1 1 1 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
</material>
<cast_shadows>1</cast_shadows>
<transparency>0</transparency>
</visual>
<collision name='Wall_3_Collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.53699 0.05 0.25</size>
</box>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
<gravity>1</gravity>
</link>
<link name='Wall_4'>
<pose frame=''>0.15 0.915 0 0 -0 3.14159</pose>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<visual name='Wall_4_Visual'>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.58 0.05 0.25</size>
</box>
</geometry>
<material>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
<ambient>1 1 1 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
</material>
<cast_shadows>1</cast_shadows>
<transparency>0</transparency>
</visual>
<collision name='Wall_4_Collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0.125 0 -0 0</pose>
<geometry>
<box>
<size>1.58 0.05 0.25</size>
</box>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
<gravity>1</gravity>
</link>
<static>1</static>
<allow_auto_disable>1</allow_auto_disable>
<pose frame=''>-0.964699 -1.03574 0 0 -0 0</pose>
</model>

<model name='tunnel_obstacle'>
<link name='obstacle_1'>
<pose frame=''>0.42322 -0.212034 0.0 0 -0 0</pose>
<inertial>
<mass>0.0416663</mass>
<inertia>
<ixx>0.00098188</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.00098188</iyy>
<iyz>0</iyz>
<izz>0.00046751</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<gravity>1</gravity>
<visual name='visual'>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.25</length>
</cylinder>
</geometry>
<material>
<lighting>1</lighting>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
<ambient>0.3 0.3 0.3 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
<shader type='pixel'>
<normal_map>__default__</normal_map>
</shader>
</material>
<cast_shadows>1</cast_shadows>
<transparency>0</transparency>
</visual>
<collision name='collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.46418</length>
</cylinder>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
</link>
<link name='obstacle_2'>
<pose frame=''>-0.323729 -0.287563 0.0 0 -0 0</pose>
<inertial>
<mass>0.0416663</mass>
<inertia>
<ixx>0.00098188</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.00098188</iyy>
<iyz>0</iyz>
<izz>0.00046751</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<gravity>1</gravity>
<visual name='visual'>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.25</length>
</cylinder>
</geometry>
<material>
<lighting>1</lighting>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
<ambient>0.3 0.3 0.3 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
<shader type='pixel'>
<normal_map>__default__</normal_map>
</shader>
</material>
<cast_shadows>1</cast_shadows>
<transparency>0</transparency>
</visual>
<collision name='collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.46418</length>
</cylinder>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
</link>
<link name='obstacle_3'>
<pose frame=''>-0.099492 0.499594 0.0 0 -0 0</pose>
<inertial>
<mass>0.0416663</mass>
<inertia>
<ixx>0.00098188</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.00098188</iyy>
<iyz>0</iyz>
<izz>0.00046751</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<gravity>1</gravity>
<visual name='visual'>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.25</length>
</cylinder>
</geometry>
<material>
<lighting>1</lighting>
<script>
<uri>file://media/materials/scripts/gazebo.material</uri>
<name>Gazebo/Grey</name>
</script>
<ambient>0.3 0.3 0.3 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
<shader type='pixel'>
<normal_map>__default__</normal_map>
</shader>
</material>
<cast_shadows>1</cast_shadows>
<transparency>0</transparency>
</visual>
<collision name='collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.46418</length>
</cylinder>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
</link>
<static>1</static>
<allow_auto_disable>1</allow_auto_disable>
<pose frame=''>-1.04145 -1.12671 0 0 -0 0</pose>
</model>

<model name='barrier_1'>
<link name='link'>
<inertial>
<mass>1</mass>
<inertia>
<ixx>0.166667</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.166667</iyy>
<iyz>0</iyz>
<izz>0.166667</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>
<self_collide>0</self_collide>
<enable_wind>0</enable_wind>
<kinematic>0</kinematic>
<pose frame=''>0 0 0 0 -0 0</pose>
<gravity>1</gravity>
<visual name='visual'>
<geometry>
<box>
<size>0.25 0.1 0.3</size>
</box>
</geometry>
<material>
<script>
<name>Gazebo/Grey</name>
<uri>file://media/materials/scripts/gazebo.material</uri>
</script>
<shader type='pixel'>
<normal_map>__default__</normal_map>
</shader>
<ambient>0.3 0.3 0.3 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
</material>
<pose frame=''>0 0 0 0 -0 0</pose>
<transparency>0</transparency>
<cast_shadows>1</cast_shadows>
</visual>
<collision name='collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<box>
<size>0.25 0.1 0.3</size>
</box>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
</link>
<static>0</static>
<allow_auto_disable>1</allow_auto_disable>
<pose frame=''>1.61222 1.02778 0.5 0 -0 0</pose>
</model>

<model name='barrier_2'>
<link name='link'>
<inertial>
<mass>1</mass>
<inertia>
<ixx>0.166667</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.166667</iyy>
<iyz>0</iyz>
<izz>0.166667</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>
<self_collide>0</self_collide>
<enable_wind>0</enable_wind>
<kinematic>0</kinematic>
<pose frame=''>0 0 0 0 -0 0</pose>
<gravity>1</gravity>
<visual name='visual'>
<geometry>
<box>
<size>0.25 0.1 0.3</size>
</box>
</geometry>
<material>
<script>
<name>Gazebo/Grey</name>
<uri>file://media/materials/scripts/gazebo.material</uri>
</script>
<shader type='pixel'>
<normal_map>__default__</normal_map>
</shader>
<ambient>0.3 0.3 0.3 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
</material>
<pose frame=''>0 0 0 0 -0 0</pose>
<transparency>0</transparency>
<cast_shadows>1</cast_shadows>
</visual>
<collision name='collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<box>
<size>0.25 0.1 0.3</size>
</box>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
</link>
<static>0</static>
<allow_auto_disable>1</allow_auto_disable>
<pose frame=''>1.74483 0.998451 0.15 0 -0 0</pose>
</model>

<model name='barrier_3'>
<link name='link'>
<inertial>
<mass>1</mass>
<inertia>
<ixx>0.166667</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.166667</iyy>
<iyz>0</iyz>
<izz>0.166667</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>
<self_collide>0</self_collide>
<enable_wind>0</enable_wind>
<kinematic>0</kinematic>
<pose frame=''>0 0 0 0 -0 0</pose>
<gravity>1</gravity>
<visual name='visual'>
<geometry>
<box>
<size>0.25 0.1 0.3</size>
</box>
</geometry>
<material>
<script>
<name>Gazebo/Grey</name>
<uri>file://media/materials/scripts/gazebo.material</uri>
</script>
<shader type='pixel'>
<normal_map>__default__</normal_map>
</shader>
<ambient>0.3 0.3 0.3 1</ambient>
<diffuse>0.7 0.7 0.7 1</diffuse>
<specular>0.01 0.01 0.01 1</specular>
<emissive>0 0 0 1</emissive>
</material>
<pose frame=''>0 0 0 0 -0 0</pose>
<transparency>0</transparency>
<cast_shadows>1</cast_shadows>
</visual>
<collision name='collision'>
<laser_retro>0</laser_retro>
<max_contacts>10</max_contacts>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<box>
<size>0.25 0.1 0.3</size>
</box>
</geometry>
<surface>
<friction>
<ode>
<mu>1</mu>
<mu2>1</mu2>
<fdir1>0 0 0</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<torsional>
<coefficient>1</coefficient>
<patch_radius>0</patch_radius>
<surface_radius>0</surface_radius>
<use_patch_radius>1</use_patch_radius>
<ode>
<slip>0</slip>
</ode>
</torsional>
</friction>
<bounce>
<restitution_coefficient>0</restitution_coefficient>
<threshold>1e+06</threshold>
</bounce>
<contact>
<collide_without_contact>0</collide_without_contact>
<collide_without_contact_bitmask>1</collide_without_contact_bitmask>
<collide_bitmask>1</collide_bitmask>
<ode>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
<max_vel>0.01</max_vel>
<min_depth>0</min_depth>
</ode>
<bullet>
<split_impulse>1</split_impulse>
<split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
<soft_cfm>0</soft_cfm>
<soft_erp>0.2</soft_erp>
<kp>1e+13</kp>
<kd>1</kd>
</bullet>
</contact>
</surface>
</collision>
</link>
<static>0</static>
<allow_auto_disable>1</allow_auto_disable>
<pose frame=''>1.49021 1.46167 0.15 0 -0 0</pose>
</model>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

These large, inline model definitions (e.g., tunnel_wall, tunnel_obstacle, barrier_*) make the world file very difficult to read and maintain. For better organization and reusability, please move each of these models into its own directory under turtlebot3_gazebo/models/ and include them using <include> tags, similar to how other models are handled at the top of this file. This will also resolve the issue of duplicate model definitions.

# Launch configuration variables specific to simulation
x_pose = LaunchConfiguration('x_pose', default='0.0')
y_pose = LaunchConfiguration('y_pose', default='0.0')
yaw = LaunchConfiguration('yaw', default='0.0')

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with x_pose and y_pose, you should also add a DeclareLaunchArgument for the new yaw parameter and add it to the LaunchDescription. This makes the launch file's arguments explicit and discoverable.

Comment on lines +4 to +11
<!--
<include>
<uri>model://ground_plane</uri>
</include>

<include>
<uri>model://sun</uri>
</include> -->

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This file contains several large blocks of commented-out code (e.g., lines 4-11, 20-26, 28-47, 49-54, 90-94). Please remove them to keep the world file clean and readable.

Comment on lines +33 to +35
# x_pose = LaunchConfiguration('x_pose', default='-1.75')
# y_pose = LaunchConfiguration('y_pose', default='0.2')
# yaw = LaunchConfiguration('yaw', default='1.57')

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This commented-out code should be removed to improve readability and maintainability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants