更新日志#
2.10.0 (2026-05-24)#
Minor release adding two new perception/behavior capabilities — the Social Force Model (SFM) for pedestrian-style crowd avoidance and a simplified 2D FMCW LiDAR sensor with per-beam radial velocity.
新功能:
新增简化的 2D FMCW 激光雷达传感器,提供距离与速度回波,并新增
22fmcw_lidar_world使用示例。(#293) (@KevinLADLee)为
diff和omni运动学新增社会力模型(SFM)行为(各向异性 Moussaid-Helbing 2009 变体),并提供23sfm_world十字走廊使用示例。(#307)
Performance:
Cache
velocity_xy,rvo_neighbor_state, andrvo_line_segmentsper-tick onObjectBase— ~4× faster SFM/RVO step. (#307)
文档:
测试:
新增
tests/test_sfm.py,覆盖 SFM 算法与行为注册。(#307)
2.9.4 (2026-04-21)#
新功能:
新增
omni_angular运动学,提供 3 自由度机体坐标系控制[forward, lateral, yaw_rate],并将omni重构为机体坐标系[forward, lateral]。机体坐标系速度与物理全向平台的指令方式一致,omni_angular为完整约束/swerve 场景提供独立偏航控制。键盘控制围绕新轴重新设计。(#270)新增
env.reset(random=True),可从缓存的 YAML 解析结果重新采样随机场景。无需重新从磁盘读取 YAML 即可快速以全新随机场景(新位置、新随机形状)重启,适用于强化学习 rollout 和批量实验。(#283)新增带成对最小间距的
random_uniform采样器,并为random和circle分布提供基于世界的默认值。成对最小间距可防止随机采样中的物体重叠,基于世界的默认值使采样范围自动适应世界尺寸/偏移,用户无需为每个场景重复指定边界。(#283)新增
env.refresh()和ObjectBase.refresh(),无需推进仿真即可同步几何、传感器和碰撞树。在直接修改物体状态(如robot.set_state(...))后很有用,可确保下一次env.step()前传感器和碰撞数据已更新。(#284)
Performance:
用矢量化的
shapely.box+unary_union替换圆形缓冲的障碍物地图几何。方格单元完美平铺栅格——linestring 减少约 3 倍、坐标减少约 24 倍、lidar 步进加快约 3.8 倍,障碍物地图碰撞查询也相应减负——并修复旧圆形缓冲中曾让 lidar 射线穿墙的对角缝隙。(#276)
修复:
文档:
修复使用指南和 YAML 配置参考中失效的交叉引用(Markdown
[Name](#irsim.path)链接替换为 Sphinx{py:class/meth/func}role),并在 EN + zh_CN 全文将 omni 速度描述更新为机体坐标系。(#278)
2.9.3 (2026-04-06)#
新功能:
为路点导航行为新增循环模式。(#266)
为 RVO 算法新增线段障碍物支持。(#250)
新增 CBF-QP 和碰撞锥使用示例。(#258) (@Lawliet9666)
Performance:
矢量化 lidar 距离/原点过滤并跳过
union_all,基于地图的场景中 lidar 步进加快约 48%。(#257) (@williamleong)使用 STRtree intersects 谓词进行 lidar 地图线段过滤,PNG 地图场景中 lidar 步进加快约 26%。(#255) (@williamleong)
缓存几何有效性并简化 lidar 地图射线求交,PNG 地图场景中 lidar 步进加快约 18%。(#254) (@williamleong)
修复:
防止
WrapToPi/WrapTo2Pi在非有限输入下出现无限循环。(#269)
重构:
简化 util 中的
file_check和find_file。(#256)
2.9.2 (2026-03-16)#
新功能:
重构:
将运动学元数据(默认颜色、state_dim、描述)集中到 handler 注册表,使运动学更易于添加。(#237)
修复:
通过逐帧读取和保存而非将所有图像载入内存,提升保存动画的健壮性。(#230) (@williamleong)
文档:
在 Make Environment 文档中新增“动态物体管理”章节。(#251)
修复并更新中文翻译。
2.9.1 (2026-02-16)#
新功能:
新增 Perlin 噪声和基于图像的栅格地图生成器、新的 JPS(跳点搜索)和 Informed RRT* 路径规划器,并重构现有规划器(A*、RRT、RRT*、PRM)以使用
EnvGridMap协议。#215 (@KevinLADLee)移除 Python 3.9 支持,新增 Python 3.14 支持。将最低 Python 版本提升至 3.10,现代化类型注解(
Optional/Union改为X | Y语法)。#216为
set_random_seed()新增可选reload参数,设为True时用新种子重新生成随机障碍物。#210未显式指定时,动画文件名默认使用世界名称。#221
修复:
为障碍物地图新增基于栅格的碰撞检测,使用栅格数组查找以加速检测,并在
ObstacleMap中缓存 STRtree。#205
重构:
为运动学和工具函数新增输入校验装饰器(
validate_shape、validate_length、ensure_column_vector、ensure_numpy)。#209
文档:
Refine README. #222
新增栅格地图配置和路径规划文档。#215
2.9.0 (2026-01-26)#
此版本新增了基于实例参数的多环境支持,允许多个独立的仿真环境同时运行。还引入了 1D ToF 传感器支持和键盘改进。
2.8.2 (2026-01-05)#
功能 #183:
新增
group_nameYAML 参数,帮助用户管理同组物体。新增
show_goal_textYAML 参数,决定是否在绘图上显示目标文本。新增
get_group_by_name函数,按组名获取同组物体。更新相关文档
修复:
修复组 ID 参数冲突问题 #180 #183
修复组行为警告问题 e8ca7df
2.8.1 (2025-12-13)#
热修复:修复文档中的 autoapi 扩展问题。
2.8.0 (2025-12-12)#
此版本添加了 group_behavior 功能,支持同一组内所有对象的群体级行为,这对于协调行为(如群体或人群仿真)更加高效,因为它可以在单步中计算所有成员的动作。同时支持中文版文档。
新功能:
新增
group_behaviorYAML 参数,支持对同组所有物体的组级行为。集成
GroupBehavior类处理组级逻辑,支持基于函数和基于类的行为。新增由
pyrvo库实现的 ORCA(最优互惠碰撞避免)行为支持,可在 YAML 文件中配置。更新
behavior_registry,支持使用装饰器(@register_behavior_class、@register_group_behavior_class)注册行为类和组行为类。新增
viewpointYAML 参数,以物体视角渲染绘图。
文档:
支持中文版文档。
更新
group_behavior配置文档,包含 ORCA 参数。
修复:
generate_polygon 函数中的 rng 随机化
组索引递增问题
2.7.5 (2025-10-26)#
新功能:
新增在随机环境生成中设置种子以保证可复现性的功能。只需在 make 函数中添加 seed 参数(如
env = irsim.make("random_obstacle.yaml", seed=2)),或使用env.set_random_seed函数设置种子后调用env.reload()。详见用法random_obstacle_seed。在 ir-sim 中新增 ORCA 示例(行为),由 PyRVO 实现——经典 ORCA 算法(C++ 版,高效)的 Python 绑定。详见
usage orca world。
Bug fixes:
修复采样时间不生效的问题。
修复文档错误。
2.7.4 (2025-10-06)#
新功能:
新增状态归一化和输入检查装饰器函数。
新增
F5键调试环境。调试模式下环境暂停并等待下一次 F5 继续;按空格退出调试模式。新增
v键保存当前图像。新增 reload、debug 和 quit 标志。
Bug fixes:
Fix keyboard issues.
Fix goal plot issues.
Style:
整理 patch 绘图的绘图函数。
Organize logger info.
2.7.3 (2025-09-20)#
新功能:
将默认键盘后端切换为
pynput(全局键盘钩子),pynput不可用时自动回退到 Matplotlib(mpl)。注意:mpl在绘制大量物体时可能引入延迟。使
pynput键盘后端与mpl功能对齐:仅当图形窗口获得焦点时处理键盘输入。
在键盘配置中新增
global_hook选项,允许图形窗口失焦时输入。为
pynput后端实现reload和quit。
新增环境级
quit函数。重命名
keyboard_control.py中的键盘处理器:_on_release→_on_pynput_release,_on_press→_on_pynput_press。
Bug fixes:
修正目标绘图的 alpha 处理。
将默认采样时间设置为与步进时间一致。
修复随机障碍物绘图。
修复用法文档中的 GUI YAML 示例。
解决动态物体的 LiDAR 步进时序问题(LiDAR 在所有物体位姿更新后再更新)。
修复 macOS 上的键盘问题。
文档:
明确传感器更新顺序。
补充使用
pynput后端的键盘控制文档。
2.7.2 (2025-08-31)#
新功能:
在 YAML 配置中新增 gui 部分用于键盘和鼠标控制。参见 gui 配置
将默认键盘后端改为 Matplotlib(
mpl),其使用图形窗口按键事件。mpl后端在 Matplotlib 图形窗口获得焦点时生效。提供全局键盘钩子的pynput后端仍受支持,可在 YAML 中选择。新增
env.reload()可即时重载环境,使 YAML 更改无需关闭 Matplotlib 图形窗口即可应用。新增热键以配置和更新环境设置,在
auto和keyboard控制模式下均可用:r:重置环境space:暂停/恢复环境esc:退出环境x:在键盘和自动控制模式间切换l:重载环境并应用更新的 YAML,无需关闭 Matplotlib 图形窗口
更新相应的文档和用法。
2.7.1 (2025-08-25)#
新功能:
为物体新增
name属性,可在 yaml 文件中配置。新增重名检查以确保无重复名称。明确
env.step动作顺序:1. 键盘控制;2. 输入动作;3. 行为控制。新增
env.get_object_by_name和env.get_object_by_id函数,按名称和 id 获取物体。
Bug Fixes:
修复文档和函数注释中的错误。
ir-sim 2.7.0 (2025-08-10)#
此版本改进了 CI 流水线、GitHub Actions 工作流、代码检查和格式化,以确保一致的代码风格和更快的检查速度,无 API 变更。
Workflow improvements:
采用
uv管理项目和依赖;pyproject.toml 现由 uv 管理。使用
uv.lock锁定依赖。使用
Ruff进行 lint 和格式化(替代Black)。新增类型提示并使用
ty进行类型检查。新增
pre-commit配置(.pre-commit-config.yaml),在提交前运行 lint 和格式化。重组 GitHub Actions 工作流以测试 API 并强制代码风格。
新增 issue 模板、dependabot.yml、贡献指南。
Bug fixes:
修复文档错误。
Fixed 3D plot title.
Folder structure:
将
doc/重命名为docs/。将
irsim/usage/移动到仓库根目录的usage/。
ir-sim 2.6.1 (2025-07-28)#
Bug Fixes:
Fix documentation error.
新功能:
Add WrapTo2Pi function.
对 lidar 和 fov 角度范围应用 WrapTo2Pi。
ir-sim 2.6.0 (2025-07-21)#
此版本是文档网站的重大更新。新网站更加用户友好,更容易浏览参数用法和 API。
主要功能
为文档新增版本切换器。
优化文档样式。
优化注释和代码风格。
Bug Fixes:
从 ndarray 提取元素
修复目标朝向和轨迹保留长度
Fix gif generation bug
API Changes:
将
global_param文件夹重命名为config。所有对global_param的调用都应替换为config。将
keep_length重命名为keep_traj_length和keep_trail_length。
ir-sim 2.5.5 (2025-06-29)#
新功能:
新增环境暂停和恢复功能。在键盘控制中按
space键可暂停/恢复环境。详见 键盘控制文档。新增环境标题以显示当前仿真时间和机器人状态。也可通过
env.set_title函数自定义标题。详见 make env 文档。将默认图像像素(尺寸)改为 1000x800。
Enhancements:
优化代码风格、日志警告输出和网站文档。
ir-sim 2.5.4 (2025-06-16)#
Bug Fixes:
修复 pynput 导入错误
ir-sim 2.5.3 (2025-06-15)#
新功能:
新增 GUI 模块,包含键盘和鼠标控制。
新增鼠标控制文档。
将物体默认目标设为 None。
Bug Fixes:
修复 macOS 系统的后端错误。
修复物体绘图的 zorder 问题。
修复物体碰撞检查问题。
API Changes:
为环境新增
mouse_left_pos、mouse_right_pos和mouse_pos属性用于鼠标控制。将 keyboard_control.py 移至 gui 文件夹。因此键盘 API 改变,如从
env.alt_flag改为env.keyboard.alt_flag。
ir-sim 2.5.2 (2025-06-02)#
Bug Fixes:
修复清除组件的 bug。
ir-sim 2.5.1 (2025-06-02)#
Bug Fixes:
修复目标绘图坐标 bug。
修复文档和注释中的语法、格式和拼写错误。
将加速度参数名
accer统一为acce。移除障碍物的状态检查警告。
新功能:
为圆形物体新增
center。
ir-sim 2.5.0 (2025-05-26)#
此版本通过重构对象绘图函数和大型环境的几何变换操作,提升了性能(约 40% 的速度提升)。
新功能:
使用 Matplotlib patch transforms 重构物体绘图函数。
新增物体绘图功能和 API。
重构几何变换操作。
Improve test coverage.
新增设置激光颜色的函数。
优化文档和待办列表。
为项目新增 UV 锁文件。
Bug Fixes:
Fix bugs in object plot.
将
init_vertices重命名为original_vertices。将
init_geometry重命名为original_geometry。Fix warning messages.
ir-sim 2.4.4 (2025-05-06)#
Bug Fixes:
Fix geometry tree bug
Fix 3D plot bug
新功能:
新增 RRT* 路径规划器
为 rvo 行为新增 neighbor_threshold 参数
Enhancements:
更新距离函数以加速 rvo 算法
Update the robot image
ir-sim 2.4.3 (2025-04-30)#
Bug Fixes:
修复 lidar 偏移绘图 bug。
新功能:
实现若干经典路径规划器(A*、RRT、PRM),改编自 python robotics 仓库。
新增绘制 quiver 的函数
在 yaml 文件中新增世界绘图参数。
Update requirements.
ir-sim 2.4.2 (2025-04-19)#
Bug Fixes:
将 omni 机器人默认状态维度改为 3。
移除 env_base 中的 check_collision 和 arrive 属性。
修复测试用例中的 bug;移除部分旧功能 (#50)。
新功能:
重组 logger 函数。
新增物体航向和朝向 (#48)。
为碰撞检查构建几何树
提升此代码的测试覆盖率 (#50)。
ir-sim 2.4.1 (2025-04-02)#
Bug Fixes:
修复多边形轨迹类型 bug。
新功能:
确保障碍物为有效多边形。
新增设置激光颜色的函数。
环境可在无 yaml 文件时初始化。
新增渲染
mode以选择要渲染的物体:static、dynamic、all。增强 readme 和文档。
ir-sim 2.4.0 (2025-03-20)#
新功能:
新增由 3D 场景数据集(Hm3d)生成的二值地图。
加速大型二值地图的碰撞检查。
支持多目标设置。
新增 requirement 文件。
为物体新增设置随机目标的调用。
Bug Fixes:
修复碰撞模式 bug,无阻挡障碍物将不计入碰撞检查。
修复 readme 和文档中的拼写错误。
修复日志消息中的错误。
修复多物体键盘控制错误。
ir-sim 2.3.6 (2025-03-12)#
Bug Fixes:
Lidar2d 传感器现在会穿过无阻挡物体,详见用法:
05lidar_world。修复在无头服务器运行时的 matplotlib 后端错误。
修复物体顶点错误。
修复绘图参数名:edgecolor -> trail_edgecolor;linewidth -> trail_linewidth;
新功能:
为物体新增
obj_linestyle参数以设置物体边缘线型,详见用法:05lidar_world。更新物体属性注释和 API 文档。
ir-sim 2.3.5 (2025-02-27)#
Bug Fixes:
多边形物体初始顶点的维度
新功能:
完善物体的 show_text 功能并为物体新增缩写名,运行用法:06multi_objects_world 查看详情。
为 set_goal 函数新增 init 参数。
为环境新增 add_object、add_objects、delete_object、delete_objects 函数以支持添加或移除障碍物。
为物体新增 get_Gh 函数。
更新函数的类型提示并用 black 格式化代码。
ir-sim 2.3.4 (2025-02-18)#
Bug Fixes:
omni robot dynamics
rvo zero division
Python 版本兼容性
新功能:
更新 random_obstacle_position 函数以支持障碍物选择和不重叠特性。
支持将动画保存为视频。
ir-sim 2.3.2 (2025-01-28)#
ir-sim 2.3.2 是一个错误修复版本,与 2.3.1 相比没有新功能。
ir-sim 2.3.1 (2025-01-26)#
更新相关文档。
Fix some bugs
新功能:
为物体新增 FOV,详见用法 15fov_world。
为 WrapToPi 函数新增参数。
为行为新增角色选择。
ir-sim 2.3.0 (2024-12-22)#
主要版本更新:
发布项目文档。
为项目新增覆盖率测试。
重构运动学 handler 和几何 handler 以配置机器人和障碍物。
重组 lidar2d 步进函数以提升性能。
更新函数注释。
修复项目中的若干 bug。
新增 3D 绘图环境。
ir-sim 2.2.6 (2024-11-22)#
重构行为库并新增自定义行为接口。详见用法:13custom_behavior。
为 YAML 文件新增默认名称,与 Python 脚本名匹配。详见用法:12dynamic_obstacle。
更改轨迹可视化样式。详见用法:02robot_world。
重构 save_figure 函数。详见用法:07renderw_world。
修复 env.end() 函数中的 'display' bug。
ir-sim 2.2.5 (2024-10-17)#
将 GIF 文件转为 readme 链接以减小仓库体积
修改机器人箭头的可视化
按像素调整图像尺寸
Add reset for world time
将 matplotlib 后端改为 TkAgg
修复可视化的若干 bug
ir-sim 2.2.4 (2024-09-17)#
修复障碍物的碰撞避免 bug
整理运动学函数
为 object_base 新增 state_shape 和 vel_shape
用 black 格式化所有 Python 代码
完善函数注释并生成 API 文档
ir-sim 2.2.3 (2024-09-01)#
将模块名从 ir_sim 重命名为 irsim,将包名从 ir_sim 重命名为 ir-sim
为项目新增引用信息
优化函数注释
为文档配置 readthedocs 和 sphinx
为物体新增 unobstructed 属性,详见用法:obstace_world
Fix the state_dim bug
ir-sim 2.2.0 (2024-08-30)#
将模块从 ir_sim 重命名为 irsim,将包名从 ir_sim 重命名为 ir-sim
为项目新增引用信息
优化函数注释
ir-sim 2.1.4 (2024-08-19)#
Update function comments
Update the readme
新增更改环境中物体分布的接口
新增环境中障碍物随机化功能
ir-sim 2.1.3 (2024-08-11)#
Fix errors in usages
delete some old files
Fix some bugs
ir-sim 2.1.2 (2024-08-04)#
修复 omni 动力学机器人的 bug
Fix bug for rvo behavior
替换 object_base 的 diff 描述
ir-sim 2.1.1 (2024-07-15)#
Update the YAML API
增强 object_base 中的功能 (G, h)
扩展项目开发工具
Fix some bugs
ir-sim 2.1.0 (2024-03-29)#
大版本更新
重构整个项目框架,所有物体均基于 object base 开发
使用 shapely 构建机器人和障碍物的几何
重构 YAML 接口
为物体新增行为库
新增物体工厂用于创建物体
新增 env logger 用于记录和打印环境状态
ir-sim 1.1.12 (2023-11-02)#
更新 show_trail 的刷新;新增设置机器人目标的方法;修复若干 bug
ir-sim 1.1.11 (2023-04-28)#
新增更改 edgecolor 的函数;新增重复 mkdirs;修复若干 bug
ir-sim 1.1.10 (2023-04-12)#
Fix some bugs
新增碰撞模式 'unobstructed'
Add draw box function
Add radius for obstacle
ir-sim 1.1.9 (2023-03-20)#
Fix some bugs
为障碍物新增功能。
ir-sim 1.1.8 (2023-02-27)#
Add map obstacles
Fix bugs of reset robot
Add different car models
ir-sim-v1.1.7 (2023-01-16)#
修复 pyproject.toml 的 bug