yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
Jetson AGX Orin📖
01.Get started
  • 01.Learning Route
  • 02.Getting Started Quickly
02.Jetson basic course
  • 01.Jetson board introduction
  • 02.Flash new system to the onboard eMMC
  • 03.Flash new system to an NVMe SSD
  • 04.Install Jetpack environment
  • 05.Backup SSD system
  • 06.Restore factory image system
  • 07.SSD expansion
  • 08.Solid State Drive Speed Test
03.Basic setting course
  • 01.Basic knowledge
  • 02.Network configuration
  • 03.SSH remote login
  • 04.VNC remote control
  • 05.Remote file transfer
  • 06.Jtop tool
  • 07.Exchange space expansion
  • 08.Use VSCode
  • 09.Use VMware
  • 10. Change screen resolution
  • 11. Virtual Desktop
  • 12. Set root user password
  • 13. Configure sudo passwordless operation
  • 14. Managing custom services
  • 15. View system version information
04.GPIO control course
  • 01.GPIO description
  • 02.GPIO library installation
  • 03.GPIO reading
  • 04.GPIO output
  • 05.Serial communication
  • 06.I2C communication
05.OpenCV basic course
  • 01.Image reading
  • 02.Image saving
  • 03.Image modification
  • 04.Image scaling
  • 05.Image cropping
  • 06.Image translation
  • 07.Image mirroring
  • 08.Image grayscale conversion
  • 09.Image binarization
  • 10.Image edge detection
  • 11.Add line segments
  • 12.Add rectangles
  • 13.Add circular shape
  • 14.Add ellipses
  • 15.Add polygons
  • 16.Add Text
06.Vision basic course
  • 01.USB camera preview
  • 02.Use Jupyter Lab
  • 03.Use JetCam
07.Vision advanced course
01.Environment construction
  • 01.TensorFlow
  • 02.PyTorch
  • 03.Torchvision
02.DeepStream development
  • 01.DeepStream environment
  • 02.Four types of detection(traffic)
03.YOLO11 development
  • 01.YOLO environment construction
  • 02.CLI use
  • 03.Object detection
  • 04.Instance segmentation
  • 05.Pose estimation
  • 06.Image classification
  • 07.Oriented object detection
  • 08.Model conversion
  • 09.Dataset annotation
  • 10.Model training conversion
  • 11.Model prediction
04.Mediapipe development
  • 01.Mediapipe environment
  • 02.Hand detection
  • 03.Face detection
  • 04.Face effects
  • 05.3D object recognition
  • 06.Virtual brush
  • 07.Gesture recognition
  • 08.Finger control
  • 09.Posture estimation
  • 10.Face mask
  • 11.Overall detection
  • 12.Green scene removal(Human)
05.QR code recognition
  • 01.Barcode Recognition
  • 02.QR Code Recognition
  • 03.Machine Code Recognition
  • 04.Handwritten Digit Recognition
06.YOLO26 development
  • 01.YOLO Environment Setupnew
  • 02.CLI Usagenew
  • 03.Object Detectionnew
  • 04.Instance Segmentationnew
  • 05.Pose Estimationnew
  • 06.Image Classificationnew
  • 07.Oriented Bounding Boxes Object Detectionnew
  • 08.Model Conversionnew
  • 09.Dataset Annotationnew
  • 10.Model Training_Conversionnew
  • 11.Model Predictionnew
08.Docker basic course
  • 01.Docker introduction
  • 02.Docker installation
  • 03.Docker command
  • 04.Docker usage
  • 05.Docker interaction
09.ROS2-Humble
01.ROS2 basic course
  • 3.ROS2 development environment
  • 1.Introduction to ROS2
  • 2.ROS2 install Humble
  • 4.ROS2 workspace
  • 5.ROS2 function package
  • 6.ROS2 node
  • 7.ROS2 topic communication
  • 8.ROS2 service communication
  • 9.ROS2 action communication
  • 10.ROS2 custom interface message
  • 11.ROS2 parameter service case
  • 12.ROS2 meta-function package
  • 13.ROS2 distributed communication
  • 14.ROS2 DDS
  • 15.ROS2 time related API
  • 16.ROS2 common command tools
  • 17.ROS2 rviz2 use
  • 18.ROS2 rqt toolbox
  • 19.ROS2 Launch startup file configuration
  • 20.ROS2 recording and playback tool
  • 21.ROS2 URDF model
  • 22.ROS2 Gazebo simulation platform
  • 23.ROS2 TF2 coordinate transformation
02.ROS2 vision course
  • 01.Camera preview (USB)
  • 02.Camera calibration (USB)
  • 03.AR vision (USB)
10.Offline AI model course
Offline large model (Text Interaction)
  • 10.AI large model offline voice assistant
  • 1.Al large model environment deployment
  • 2.Install large model dialogue platform
  • 3.Meta Al Llama3.2 model
  • 4.Alibaba Cloud Qwen3 model
  • 5.Microsoft Phi-4-mini model
  • 6.DeepSeek DeepSeek-R1 model
  • 7.Alibaba Cloud Qwen2.5v visual multimodal large model
  • 8.Google Gemma3 visual multimodal large model
  • 9.Lava visual multimodal large model
  • 10.MiniCPM-V visual multimodal large model
  • 11.Multimodal visual understand application
  • 12.Multimodal text image application
  • 13.Multimodal video analysis application
  • 14.Multi module visual position application
  • 15.Multimodal table scanning application
  • 16.Multimodal autonomous agent application
Offline large model (Voice Interaction)
  • 0.Voice interaction hardware connection (ReadMe)
  • 1.Offline speech to text (ASR)
  • 2.Offline text to speech (TTS)
  • 3.AI large model voice interaction
  • 4.Multimodal visual understand speech interaction
  • 5.Multimodal text and graphics application
  • 6.Multimodal video analysis application
  • 7.Multi module visual position application
  • 8.Multimodal table scanning application
  • 9.Multimodal autonomous proxy application
11.Online AI model course
Online large model (Text Interaction)
  • 8.AI large model offline voice assistant
  • 1.OpenRouter large model API aggregation platform
  • 2.Multimodal visual understand application
  • 3.Multimodal visual localization application
  • 4.Multimodal table scanning application
  • 5.Multimodal autonomous proxy application
Online large model (Voice Interaction)
  • 0.Voice interaction hardware connection (ReadMe)
  • 1.Online speech to text (ASR)
  • 2.Online text to speech (TTS)
  • 3.AI large model voice interaction
  • 4.Multimodal visual understand speech interaction
  • 5.Multi module visual position application
  • 6.Multimodal table scanning application
  • 7.Multimodal autonomous proxy application
12.Offline Generative AI Applications
  • 01.Children's Storytelling Session
  • 02.Cooking Assistant
  • 03.Homework tutor
  • 04.Image to animation
13.OpenClaw Advanced Development
  • 00.OpenClaw Quick Start on Jetson Platform
  • 01.OpenClaw Installation
  • 02.OpenClaw Online Platform Deployment
  • 03.OpenClaw Local Model Deployment
  • 04.OpenClaw TUI Interaction
  • 05.OpenClaw WebChat Interaction
  • 06.OpenClaw Tools Introduction
  • 07.OpenClawGate Gateway User Manual
  • 08.OpenClaw Features Overview
  • 09.OpenClawClawHub Introduction (Skill Installation)
  • 10. OpenClaw Switching Models
  • 11.OpenClaw Application - File Management
  • 12.OpenClaw Application - Camera
  • 13.OpenClaw Application - Browser Control
  • 14.OpenClaw Application - Script Execution
  • 15.OpenClaw Application - AI Programming
  • 16.OpenClaw Application - Dedicated AI Assistant
  • 17.OpenClaw WhatsApp Plugin Application
Download
  • System_File
  • VM_File
  • Code
  • Tools
Download ZIP

Welcome to Jetson AGX Orin repository

当製品の日本語版マニュアル資料は、こちらからご取得ください。

22.ROS2 Gazebo simulation platform

22. ROS2 Gazebo Simulation Platform

1. Introduction to Gazebo

Gazebo is the most commonly used 3D physics simulation platform in the ROS system. It supports a dynamics engine and enables high-quality graphics rendering. It not only simulates the robot and its surrounding environment, but also incorporates physical properties such as friction and elasticity.

For example, if we want to develop a Mars rover, we can simulate the Martian surface environment in Gazebo. Or, if we're developing a drone, battery life and flight restrictions prevent us from frequently experimenting with the actual drone. In these cases, we can use Gazebo to simulate first, then deploy to the actual drone once the algorithm is fully developed.

Simulation platforms like Gazebo can help us verify robotic algorithms, optimize robot designs, and test robot applications, providing more possibilities for robotics development.

Note: This section is for learning purposes only. The tutorial does not configure the environment because we are using real-device debugging

2. Installation and Operation

  • Install gazebo using the apt command
xxxxxxxxxx
sudo apt install ros-${ROS_DISTRO}-gazebo-*
  • Run gazebo
  • Launch gazebo using the following command or directly from the desktop icon
xxxxxxxxxx
gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so

image-20250905185527569

image-20250905185455271

After running, you should see the following page:

img

  • Optional: To ensure smooth model loading, you can download the offline model and place it in the ~/.gazebo/models directory. The download link is as follows: https://github.com/osrf/gazebo_models

3. Start the Gazebo Node and Service

  1. View the Node
xxxxxxxxxx
ros2 node list

image-20250905185639464

Correct return: /gazebo

  1. View the external services provided by the node:
xxxxxxxxxx
ros2 service list

You can see the following results:

image-20250905185658045

Excluding the last few regular services, we will only focus on the first three special services:

  • /spawn_entity, used to load models into gazebo
  • /get_model_list, used to obtain a model list
  • /delete_entity, used to delete loaded models in gazebo

4. Create a function package

  • Create a myrobot package to store our URDF model and launch files.
xxxxxxxxxx
ros2 pkg create myrobot --build-type ament_cmake
  • Go to the myrobot directory and create folders launch and urdf. Within the urdf folder, create a file called demo01_base.urdf. This file is a simple demonstration file containing only a basic cube.
xxxxxxxxxx
<robot name="myrobot">
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.2 0.2 0.2"/>
            </geometry>
            <origin xyz="0.0 0.0 0.0"/>
        </visual>
        <collision>
            <geometry>
                <box size="0.2 0.2 0.2"/>
            </geometry>
            <origin xyz="0.0 0.0 0.0"/>
        </collision>
        <inertial>
            <mass value="0.1"/>
            <inertia ixx="0.000190416666667" ixy="0" ixz="0" iyy="0.0001904" iyz="0" izz="0.00036"/>
        </inertial>
    </link>
    <gazebo reference="base_link">
        <material>Gazebo/Red</material>
    </gazebo>
</robot>

 

5. Writing the launch file

Writing a launch file consists of two main parts: launching the Gazebo file and then loading the robot model into Gazebo.

xxxxxxxxxx
start_gazebo_cmd =  ExecuteProcess(
        cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so'],
        output='screen')

This command starts Gazebo. It is a simple startup command and is not particularly complicated. Here is the command to load the model:

xxxxxxxxxx
 spawn_entity_cmd = Node(
        package='gazebo_ros', 
        executable='spawn_entity.py',
        arguments=['-entity', robot_name_in_model,  '-file', urdf_model_path ], output='screen')

Note the following two parameters in this command: -entity is the name of the model file, and -file is the parameter loaded through the urdf file. Later we can also see how the model is loaded through the topic. Create a bringup_model.launch.py ​​file in the launch directory. The complete startup file is as follows:

xxxxxxxxxx
import os
from launch import LaunchDescription
from launch.actions import ExecuteProcess
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare
from launch_ros.parameter_descriptions import ParameterValue
from launch.substitutions import Command
​
def generate_launch_description():
    robot_name_in_model = 'myrobot'
    package_name = 'myrobot'
    urdf_name = "demo01_base.urdf"
   
    ld = LaunchDescription()
    pkg_share = FindPackageShare(package=package_name).find(package_name) 
    urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}')
   
    # Start Gazebo server
    start_gazebo_cmd =  ExecuteProcess(
        cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so'],
        output='screen')
​
    # Launch the robot
    spawn_entity_cmd = Node(
        package='gazebo_ros', 
        executable='spawn_entity.py',
        arguments=['-entity', robot_name_in_model,  '-file', urdf_model_path ], output='screen')
​
    ld.add_action(start_gazebo_cmd)
    ld.add_action(spawn_entity_cmd)
​
    return ld
​
  • Fill in the following content in Cmakelist to install our urdf and launch folders into the install directory
xxxxxxxxxx
install(
    DIRECTORY urdf launch
    DESTINATION share/${PROJECT_NAME}
)

 

  • Then compile and run the function package
xxxxxxxxxx
colcon build --packages-select myrobot

image-20250905190216658

 

  • Refresh the environment variables and run the launch startup file
xxxxxxxxxx
ros2 launch myrobot bringup_model.launch.py

image-20250905190401459

 

After launching, you should see the following Gazebo model:

image-20250905190451228

You can see the red model because you added the Gazebo tag settings.

 

 

ROS2 URDF model
ROS2 TF2 coordinate transformation

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文