You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webots中Radar传感器多目标属性值重复的技术问题咨询

问题解决:Webots雷达getTargets()返回重复属性值

问题描述

在Webots Python控制器中,使用Radar节点的getTargets()方法时,返回的数组长度与getNumberOfTargets()结果一致,但所有目标对象的属性值完全相同,均对应探测范围内最左侧目标的参数。即使对象内存地址不同,属性值也无差异。

当前使用的代码:

from vehicle import Driver
from controller import Radar

radar = Radar("radar")
radar.enable(1)

while driver.step() != -1:
    num_targets = radar.getNumberOfTargets()
    targets = radar.getTargets()
    
    for i in targets:
        print(vars(i))

示例输出:

array of targets = [<controller.radar_target.RadarTarget object at 0x000002387D0002E0>, <controller.radar_target.RadarTarget object at 0x000002387D000BB0>]
object1values = {'distance': 49.36169833744215, 'receiver_power': -58.779710440658974, 'speed': -5.4952828061041314, 'azimuth': -1.4326991352820366}
object2values = {'distance': 49.36169833744215, 'receiver_power': -58.779710440658974, 'speed': -5.4952828061041314, 'azimuth': -1.4326991352820366}

原因分析

Webots的Python绑定中,RadarTarget对象存在内部复用机制,直接访问对象属性或使用vars()获取值时,会读取到最后一次填充的目标数据,导致所有对象返回相同参数。必须使用官方提供的getter方法才能正确获取每个目标的独立信息。

解决方案

修改代码,使用RadarTarget类的官方getter方法获取参数:

  • getDistance():获取目标距离
  • getAzimuth():获取目标方位角
  • getSpeed():获取目标相对速度
  • getReceiverPower():获取接收功率

修正后的代码:

from vehicle import Driver
from controller import Radar

driver = Driver()  # 补充原代码遗漏的driver初始化
radar = Radar("radar")
radar.enable(1)

while driver.step() != -1:
    num_targets = radar.getNumberOfTargets()
    targets = radar.getTargets()
    
    print(f"检测到目标数量: {num_targets}")
    for idx, target in enumerate(targets):
        distance = target.getDistance()
        azimuth = target.getAzimuth()
        speed = target.getSpeed()
        receiver_power = target.getReceiverPower()
        print(f"目标{idx+1}信息:")
        print(f"  距离: {distance}")
        print(f"  方位角: {azimuth}")
        print(f"  相对速度: {speed}")
        print(f"  接收功率: {receiver_power}")

额外说明

  • 原代码遗漏了driver = Driver()的初始化,会导致运行报错,已在修正代码中补充。
  • Webots雷达节点默认无最大目标数限制,探测范围内的目标都会被检测到,无需额外配置参数。

内容的提问来源于stack exchange,提问作者Kokoooo04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:22:32