ros2--gazebo--launch

教程

gazebo官网

如何在launch中启动gazebo,配置gazebo的参数?

ros_gz_sim

这个功能包包含两个launch启动文件:

gz_server.launch.py:

用于启动gazebo的server。

ros2 launch ros_gz_sim gz_server.launch.py world_sdf_file:=empty.sdf

gz_sim.launch.py:

用于启动gazebo的GUI和server.

ros2 launch ros_gz_sim gz_sim.launch.py gz_args:=empty.sdf

配置过程

1,加载gz_sim的launch文件

pkg_ros_gz_sim = get_package_share_directory('ros_gz_sim')
    gazebo = IncludeLaunchDescription(
        PythonLaunchDescriptionSource(
            os.path.join(pkg_ros_gz_sim, 'launch', 'gz_sim.launch.py')),
        launch_arguments={'gz_args': '-r ' + world_file}.items(),
    )

IncludeLaunchDescription和PythonLaunchDescriptionSource

gz sim启动参数配置

gz sim的参数可以通过以下指令查看:

gz sim --help

-r

-r                           Run simulation on start.

启动后立即运行仿真(不暂停)。

世界文件

链接

2,启动ros_gz_sim的create

    #2,执行create启动ros_gz_sim节点
    #entiy的初始位置和姿态
    entity_x = '0.0'
    entity_y = '0.0'
    entity_z = '0.3'
    #entity_roll='0.0'
    #entity_pitch='0.0'
    entity_yaw = '0.0'

    spawn_mbot_entity=Node(
        package="ros_gz_sim",
        executable="create",
        arguments=["-topic","/robot_description",
                   "-name","mbot",
                   "-x",entity_x,
                   "-y",entity_y,
                   "-z",entity_z,
                   "-Y",entity_yaw],
        output="screen"
    )

为了在Gazebo Sim中为了使用urdf文件生成模型,我们将启动一个世界,并使用world(gazebo)的“

/world/empty/create”,该服务使用EntityFactory消息类型。

3,启动ros_gz_bridge

4,启动robot_state_publisher

    #4,启动robot_state_publish
    robot_state_publisher_node=Node(
        package="robot_state_publisher",
        executable="robot_state_publisher",
        parameters=[{"robot_description":robot_description_config.toxml(),
                     "use_sim_time": True}],
        output="screen"
    )

'use_sim_time': True的作用:

核心功能

  • 启用仿真时间
    当设置为 True 时,节点会从 ROS 2 的 /clock Topic 获取时间(通常由 Gazebo 等仿真器发布),而非使用系统物理时间。

  • 同步仿真环境
    确保所有节点在仿真环境中使用统一的时间基准,避免因系统时钟导致的时序问题。

### Gazebo与Fast-LIO2的集成方法 为了在Gazebo中实现Fast-LIO2的功能,需完成以下几个方面的配置和操作: #### 1. 安装依赖项 确保已安装必要的软件包以及工具链。可以通过以下命令来设置环境: ```bash sudo apt-get install ros-$ROS_DISTRO-gazebo-ros-pkgs ros-$ROS_DISTRO-laser-assembler ros-$ROS_DISTRO-tf-conversions ``` 上述命令会安装用于Gazebo仿真的核心组件以及其他支持模块[^1]。 #### 2. 克隆Fast-LIO2源码至工作区 执行如下指令以获取最新的Fast-LIO2仓库并初始化子模块: ```bash git clone https://github.com/HKUST-Aerial-Robotics/Fast-LIO.git cd Fast-LIO git checkout fast_lio_v2 git submodule update --init --recursive ``` 此过程将下载Fast-LIO2及其所需的外部库文件。 #### 3. 配置Gazebo模型参数 编辑`.world`文件定义传感器布局,特别是激光扫描仪部分。例如,在世界描述文档里加入LiDAR设备节点: ```xml <plugin name="gazebo_ros_lidar" filename="libgazebo_ros_laser.so"> <topicName>/scan</topicName> <frameName>lidar_link</frameName> </plugin> ``` 该XML片段指定了数据发布主题路径及关联坐标系名称。 #### 4. 启动仿真场景 创建一个launch脚本启动整个系统流程,包括加载机器人URDF/XACRO模型、激活控制器插件等动作。下面是一个简单的例子演示如何调用这些服务: ```xml <launch> <!-- 加载机器人 --> <include file="$(find your_robot_description)/urdf/robot.launch"/> <!-- 初始化Gazebo --> <node pkg="gazebo_ros" type="gazebo" output="screen"/> <!-- 发布里程计信息 --> <node pkg="tf" type="static_transform_publisher" ... /> <!-- 运行SLAM算法 --> <group ns="fast_lio"> <param name="use_sim_time" value="true"/> <node pkg="fast_lio" type="mapping_node" output="screen"/> </group> </launch> ``` #### 5. 调整参数优化性能表现 通过修改YAML格式配置档调整具体选项值达到最佳效果。比如降低地图分辨率可以减少计算量从而提高帧率;增加关键帧间隔有助于过滤冗余测量点云等等。 ```yaml map_frame: map odom_frame: odom base_frame: base_link imu_topic: /imu/data pointcloud_topic: /velodyne_points max_range: 80.0 min_range: 0.1 resolution: 0.05 key_frame_interval: 5 ``` 以上即为基于Gazebo平台运用Fast-LIO2开展同步定位与构建三维地图的主要步骤说明。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值