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 部分的 behavior、distribution 与 shape 设置。
若使用
rvo行为,可将wander设为True,使障碍物到达目标后继续随机移动;rvo还可用于障碍物之间的避碰。range_low与range_high则决定障碍物目标位置的随机范围。当
distribution的 name 为random时,可在指定区域内随机生成障碍物。range_low和range_high控制障碍物初始位置的随机范围。在
shape参数中将random_shape设为True,即可随机生成障碍物的形状。- 圆形障碍物的
radius会在radius_range内随机生成。 - 对于多边形障碍物,
avg_radius_range、irregularity_range、num_vertices_range与spikeyness_range决定生成的多边形类型。详情参见random_generate_polygon。
- 圆形障碍物的
如需生成凸多边形,可将
spikeyness_range设为[0, 0],或将is_convex设为True。