Как вставить датчик расстояния в робота Kuka в программе webots
Я пытаюсь добавить датчик расстояния к роботу kuka в программном обеспечении webots Робот KUKA, у которого нет поля, называемого детьми, но я добавил датчик расстояния в поле слота для тела, теперь датчик все время считывает nan
#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;
}
введите описание изображения здесь , чтобы найти способ добавить датчик расстояния к роботу kuka
1 ответ
Правильно добавлять новые устройства вbodySlot
поле.
Но вы получаете значения датчика расстояния только один раз перед запуском основного цикла моделирования, когда датчик еще не активен. Вместо этого вам следует позвонить вwb_distance_sensor_get_value()
инструкцию непосредственно перед инструкцией печати, чтобы получить текущие измерения датчика.
Вот фиксированный код:
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();
ps_values = wb_distance_sensor_get_value(ps[0]); // READ SENSOR MEASUREMENT
printf ("\n %f \n", ps_values);
//while (ps_values > 80){
base_forwards_increment();
//}
// base_backwards_increment();
}
wb_robot_cleanup();
return 0;
}
Отказ от ответственности: я разработчик Webots , работающий в Cyberbotics.