datetime:2025/12/21 16:00
author:nzb

配置动态随机环境

本节内容

  • 配置动态随机环境
    • 随机障碍物配置参数
    • 关键参数说明

Python 脚本与 YAML 配置文件

import irsim

env = irsim.make()

for i in range(1000):

    env.step()
    env.render(0.05)

    if env.done():
        break

env.end()
world:
  height: 50  # the height of the world
  width: 50   # the width of the world
  control_mode: 'keyboard'  

robot:
  - kinematics: {name: 'acker'} 
    shape: {name: 'rectangle', length: 4.6, width: 1.6, wheelbase: 3}
    state: [5, 5, 0, 0]
    goal: [40, 40, 0]
    vel_max: [4, 1]

    sensors: 
      - name: 'lidar2d'
        range_min: 0
        range_max: 20
        angle_range: 3.14
        number: 100

    plot:
      show_trajectory: True

obstacle:

  - number: 10
    kinematics: {name: 'omni'}
    distribution: {name: 'random', range_low: [10, 10, -3.14], range_high: [40, 40, 3.14]}
    behavior: {name: 'rvo', wander: True, range_low: [10, 10, -3.14], range_high: [40, 40, 3.14], vxmax: 2, vymax: 2, factor: 3.0}
    vel_max: [4, 4]
    vel_min: [-4, -4]
    shape:
      - {name: 'circle', radius: 1.0, random_shape: True}  
      - {name: 'polygon', random_shape: true, avg_radius_range: [0.5, 2.0], irregularity_range: [0, 0.4], spikeyness_range: [0, 0.4], num_vertices_range: [4, 6]}

关键参数说明

生成不同形状随机障碍物所需的参数位于 obstacle 部分的 behaviordistributionshape 设置。

  • 若使用 rvo 行为,可将 wander 设为 True,使障碍物到达目标后继续随机移动;rvo 还可用于障碍物之间的避碰。range_lowrange_high 则决定障碍物目标位置的随机范围。

  • distribution 的 name 为 random 时,可在指定区域内随机生成障碍物。range_lowrange_high 控制障碍物初始位置的随机范围。

  • shape 参数中将 random_shape 设为 True,即可随机生成障碍物的形状。

    • 圆形障碍物的 radius 会在 radius_range 内随机生成。
    • 对于多边形障碍物,avg_radius_rangeirregularity_rangenum_vertices_rangespikeyness_range 决定生成的多边形类型。详情参见 random_generate_polygon

如需生成凸多边形,可将 spikeyness_range 设为 [0, 0],或将 is_convex 设为 True

results matching ""

    No results matching ""