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

Webots中为无Children字段的KUKA机器人添加距离传感器及数值异常排查

解决Webots中KUKA机器人距离传感器读取NaN的问题

在Webots软件中为无Children字段的KUKA机器人添加距离传感器,将传感器放置在bodyslot字段后,传感器始终读取NaN值,相关C代码如下:

#include <webots/keyboard.h>
#include <webots/robot.h>


#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <webots/distance_sensor.h>

#define TIME_STEP 32

int main(int argc, char **argv) {
 wb_robot_init();

WbDeviceTag ps[1];
char ps_names[1][3] = {"DS"};

  ps[0] = wb_robot_get_device(ps_names[0]);
  wb_distance_sensor_enable(ps[0], TIME_STEP);

// read sensors outputs
double ps_values;

  ps_values = wb_distance_sensor_get_value(ps[0]);

  while (true) {
    step();

    printf ("\n %f \n", ps_values);
    //while (ps_values > 80){
    base_forwards_increment();
    //}
    
   // base_backwards_increment();
  }

  wb_robot_cleanup();

  return 0;
}

有效解决方法

1. 修正代码核心逻辑错误

你的代码存在两个关键问题:

  • 仅在初始化阶段读取一次传感器值,后续循环始终使用这个旧值
  • 循环中的step()是未定义函数,正确的仿真推进函数是wb_robot_step()

修改后的循环部分代码:

while (true) {
  // 推进仿真步骤,返回-1表示仿真结束
  if (wb_robot_step(TIME_STEP) == -1) break;

  // 每次仿真步都重新读取传感器最新值
  ps_values = wb_distance_sensor_get_value(ps[0]);
  printf("\n %f \n", ps_values);
  
  // 建议用if替代原代码中的while,避免死循环阻塞仿真流程
  // if (ps_values > 80) {
  //   base_forwards_increment();
  // }
}

2. 确认传感器挂载与配置正确性

  • 设备名称匹配:检查Webots场景树中传感器的name属性是否与代码中的"DS"完全一致(区分大小写),名称不匹配会导致设备无法被正确获取。
  • 挂载位置与朝向:由于机器人无Children字段,挂载到bodyslot后,需确保传感器的检测方向(可通过Webots的Show Ray选项查看射线)未被机器人自身部件遮挡,射线需指向外部可检测区域。
  • Lookup Table配置:使用默认DistanceSensor节点时,保持默认Lookup Table即可;若自定义传感器,需确保表格包含有效的距离-输出对应数据。

3. 验证传感器启用状态

在获取设备后,可添加打印语句验证设备是否成功获取:

ps[0] = wb_robot_get_device(ps_names[0]);
if (ps[0] == 0) {
  printf("Failed to get distance sensor device!\n");
  return 1;
}
wb_distance_sensor_enable(ps[0], TIME_STEP);

如果输出错误信息,说明传感器未被正确识别,需检查传感器是否已添加到机器人的bodyslot中。

4. 排查仿真环境问题

  • 确保传感器检测范围内存在可被检测的物体(如立方体、地面),部分传感器在无检测目标时会返回NaN或最大值。
  • 检查Webots仿真步长设置,确保与代码中TIME_STEP值一致,避免步长不匹配导致数据读取异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:16:05