Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要翻译为C++;活性氧 我想把C代码转换成C++ ROS代码。这就是我现在下面的C++ ROS代码。 我想让摄像头使用ros识别webots上的对象。因为webots有一些C语言的示例文档,所以我需要帮助将这些代码翻译成ROS cpp void CameraCallback(const webots_ros::RecognitionObject::ConstPtr &image) { int i; int j; int number_of_objects; const *objects; // int number_of_objects = getRecognitionNumberOfObjects() const;(camera); //ROS_INFO("\nRecognized %d objects.\n", number_of_objects); ROS_INFO("\nRecognized %d objects.\n", number_of_objects); /* Get and display all the objects information */ const RecognitionObject *objects = wb_camera_recognition_get_objects(camera); for (i = 0; i < number_of_objects; ++i) { ROS_INFO("Model of object %d: %s\n", i, objects[i].model); ROS_INFO("Id of object %d: %d\n", i, objects[i].id); ROS_INFO("Relative position of object %d: %lf %lf %lf\n", i, objects[i].position[0], objects[i].position[1], objects[i].position[2]); ROS_INFO("Relative orientation of object %d: %lf %lf %lf %lf\n", i, objects[i].orientation[0], objects[i].orientation[1], objects[i].orientation[2], objects[i].orientation[3]); ROS_INFO("Size of object %d: %lf %lf\n", i, objects[i].size[0], objects[i].size[1]); ROS_INFO("Position of the object %d on the camera image: %d %d\n", i, objects[i].position_on_image[0], objects[i].position_on_image[1]); ROS_INFO("Size of the object %d on the camera image: %d %d\n", i, objects[i].size_on_image[0], objects[i].size_on_image[1]); for (j = 0; j < objects[i].number_of_colors; ++j) ROS_INFO("- Color %d/%d: %lf %lf %lf\n", j + 1, objects[i].number_of_colors, objects[i].colors[3 * j], objects[i].colors[3 * j + 1], objects[i].colors[3 * j + 2]); } void-CameraCallback(const-webots\u-ros::RecognitionObject::ConstPtr&image){ int i; int j; 对象的整数; 常量*对象; //对象的整数=getRecognitionNumberOfObjects()常量;(摄影机); //ROS\u信息(“\n已识别%d个对象。\n”,对象的数量); ROS\u信息(“\n已识别%d个对象。\n”,对象的数量); /*获取并显示所有对象信息*/ const RecognitionObject*objects=wb\u摄像头\u识别\u获取\u对象(摄像头); 对于(i=0;i来翻译口语。你用同样的方式翻译代码:源代码> >规格->目标代码< /代码>。将C代码转换成规范,然后将其转换成C++。如果你只需要在相机识别部分的帮助,就不需要包括所有的OOT。r噪音。_C++_Ros_Webots - Fatal编程技术网 >规格->目标代码< /代码>。将C代码转换成规范,然后将其转换成C++。如果你只需要在相机识别部分的帮助,就不需要包括所有的OOT。r噪音。,c++,ros,webots,C++,Ros,Webots" /> >规格->目标代码< /代码>。将C代码转换成规范,然后将其转换成C++。如果你只需要在相机识别部分的帮助,就不需要包括所有的OOT。r噪音。,c++,ros,webots,C++,Ros,Webots" />

需要翻译为C++;活性氧 我想把C代码转换成C++ ROS代码。这就是我现在下面的C++ ROS代码。 我想让摄像头使用ros识别webots上的对象。因为webots有一些C语言的示例文档,所以我需要帮助将这些代码翻译成ROS cpp void CameraCallback(const webots_ros::RecognitionObject::ConstPtr &image) { int i; int j; int number_of_objects; const *objects; // int number_of_objects = getRecognitionNumberOfObjects() const;(camera); //ROS_INFO("\nRecognized %d objects.\n", number_of_objects); ROS_INFO("\nRecognized %d objects.\n", number_of_objects); /* Get and display all the objects information */ const RecognitionObject *objects = wb_camera_recognition_get_objects(camera); for (i = 0; i < number_of_objects; ++i) { ROS_INFO("Model of object %d: %s\n", i, objects[i].model); ROS_INFO("Id of object %d: %d\n", i, objects[i].id); ROS_INFO("Relative position of object %d: %lf %lf %lf\n", i, objects[i].position[0], objects[i].position[1], objects[i].position[2]); ROS_INFO("Relative orientation of object %d: %lf %lf %lf %lf\n", i, objects[i].orientation[0], objects[i].orientation[1], objects[i].orientation[2], objects[i].orientation[3]); ROS_INFO("Size of object %d: %lf %lf\n", i, objects[i].size[0], objects[i].size[1]); ROS_INFO("Position of the object %d on the camera image: %d %d\n", i, objects[i].position_on_image[0], objects[i].position_on_image[1]); ROS_INFO("Size of the object %d on the camera image: %d %d\n", i, objects[i].size_on_image[0], objects[i].size_on_image[1]); for (j = 0; j < objects[i].number_of_colors; ++j) ROS_INFO("- Color %d/%d: %lf %lf %lf\n", j + 1, objects[i].number_of_colors, objects[i].colors[3 * j], objects[i].colors[3 * j + 1], objects[i].colors[3 * j + 2]); } void-CameraCallback(const-webots\u-ros::RecognitionObject::ConstPtr&image){ int i; int j; 对象的整数; 常量*对象; //对象的整数=getRecognitionNumberOfObjects()常量;(摄影机); //ROS\u信息(“\n已识别%d个对象。\n”,对象的数量); ROS\u信息(“\n已识别%d个对象。\n”,对象的数量); /*获取并显示所有对象信息*/ const RecognitionObject*objects=wb\u摄像头\u识别\u获取\u对象(摄像头); 对于(i=0;i来翻译口语。你用同样的方式翻译代码:源代码> >规格->目标代码< /代码>。将C代码转换成规范,然后将其转换成C++。如果你只需要在相机识别部分的帮助,就不需要包括所有的OOT。r噪音。

需要翻译为C++;活性氧 我想把C代码转换成C++ ROS代码。这就是我现在下面的C++ ROS代码。 我想让摄像头使用ros识别webots上的对象。因为webots有一些C语言的示例文档,所以我需要帮助将这些代码翻译成ROS cpp void CameraCallback(const webots_ros::RecognitionObject::ConstPtr &image) { int i; int j; int number_of_objects; const *objects; // int number_of_objects = getRecognitionNumberOfObjects() const;(camera); //ROS_INFO("\nRecognized %d objects.\n", number_of_objects); ROS_INFO("\nRecognized %d objects.\n", number_of_objects); /* Get and display all the objects information */ const RecognitionObject *objects = wb_camera_recognition_get_objects(camera); for (i = 0; i < number_of_objects; ++i) { ROS_INFO("Model of object %d: %s\n", i, objects[i].model); ROS_INFO("Id of object %d: %d\n", i, objects[i].id); ROS_INFO("Relative position of object %d: %lf %lf %lf\n", i, objects[i].position[0], objects[i].position[1], objects[i].position[2]); ROS_INFO("Relative orientation of object %d: %lf %lf %lf %lf\n", i, objects[i].orientation[0], objects[i].orientation[1], objects[i].orientation[2], objects[i].orientation[3]); ROS_INFO("Size of object %d: %lf %lf\n", i, objects[i].size[0], objects[i].size[1]); ROS_INFO("Position of the object %d on the camera image: %d %d\n", i, objects[i].position_on_image[0], objects[i].position_on_image[1]); ROS_INFO("Size of the object %d on the camera image: %d %d\n", i, objects[i].size_on_image[0], objects[i].size_on_image[1]); for (j = 0; j < objects[i].number_of_colors; ++j) ROS_INFO("- Color %d/%d: %lf %lf %lf\n", j + 1, objects[i].number_of_colors, objects[i].colors[3 * j], objects[i].colors[3 * j + 1], objects[i].colors[3 * j + 2]); } void-CameraCallback(const-webots\u-ros::RecognitionObject::ConstPtr&image){ int i; int j; 对象的整数; 常量*对象; //对象的整数=getRecognitionNumberOfObjects()常量;(摄影机); //ROS\u信息(“\n已识别%d个对象。\n”,对象的数量); ROS\u信息(“\n已识别%d个对象。\n”,对象的数量); /*获取并显示所有对象信息*/ const RecognitionObject*objects=wb\u摄像头\u识别\u获取\u对象(摄像头); 对于(i=0;i来翻译口语。你用同样的方式翻译代码:源代码> >规格->目标代码< /代码>。将C代码转换成规范,然后将其转换成C++。如果你只需要在相机识别部分的帮助,就不需要包括所有的OOT。r噪音。,c++,ros,webots,C++,Ros,Webots,这是原始的C代码。我正试图在webots上整合它 #include <stdio.h> #include <webots/camera.h> #include <webots/camera_recognition_object.h> #include <webots/motor.h> #include <webots/robot.h> #define SPEED 1.5 #define TIME_STEP 64 int main()

这是原始的C代码。我正试图在webots上整合它

#include <stdio.h>
#include <webots/camera.h>
#include <webots/camera_recognition_object.h>
#include <webots/motor.h>
#include <webots/robot.h>

#define SPEED 1.5
#define TIME_STEP 64

int main() {
  WbDeviceTag camera, left_motor, right_motor;
  int i, j;

  wb_robot_init();

  /* Get the camera device, enable it and the recognition */
  camera = wb_robot_get_device("camera");
  wb_camera_enable(camera, TIME_STEP);
  wb_camera_recognition_enable(camera, TIME_STEP);

  /* get a handler to the motors and set target position to infinity (speed control). */
  left_motor = wb_robot_get_device("left wheel motor");
  right_motor = wb_robot_get_device("right wheel motor");
  wb_motor_set_position(left_motor, INFINITY);
  wb_motor_set_position(right_motor, INFINITY);
  wb_motor_set_velocity(left_motor, 0.0);
  wb_motor_set_velocity(right_motor, 0.0);

  /* Set the motors speed */
  wb_motor_set_velocity(left_motor, -SPEED);
  wb_motor_set_velocity(right_motor, SPEED);

  /* Main loop */
  while (wb_robot_step(TIME_STEP) != -1) {
    /* Get current number of object recognized */
    int number_of_objects = wb_camera_recognition_get_number_of_objects(camera);
    printf("\nRecognized %d objects.\n", number_of_objects);

    /* Get and display all the objects information */
    const WbCameraRecognitionObject *objects = wb_camera_recognition_get_objects(camera);
    for (i = 0; i < number_of_objects; ++i) {
      printf("Model of object %d: %s\n", i, objects[i].model);
      printf("Id of object %d: %d\n", i, objects[i].id);
      printf("Relative position of object %d: %lf %lf %lf\n", i, objects[i].position[0], objects[i].position[1],
             objects[i].position[2]);
      printf("Relative orientation of object %d: %lf %lf %lf %lf\n", i, objects[i].orientation[0], objects[i].orientation[1],
             objects[i].orientation[2], objects[i].orientation[3]);
      printf("Size of object %d: %lf %lf\n", i, objects[i].size[0], objects[i].size[1]);
      printf("Position of the object %d on the camera image: %d %d\n", i, objects[i].position_on_image[0],
             objects[i].position_on_image[1]);
      printf("Size of the object %d on the camera image: %d %d\n", i, objects[i].size_on_image[0], objects[i].size_on_image[1]);
      for (j = 0; j < objects[i].number_of_colors; ++j)
        printf("- Color %d/%d: %lf %lf %lf\n", j + 1, objects[i].number_of_colors, objects[i].colors[3 * j],
               objects[i].colors[3 * j + 1], objects[i].colors[3 * j + 2]);
    }
  }

  wb_robot_cleanup();
#包括
#包括
#包括
#包括
#包括
#定义速度1.5
#第64步定义时间
int main(){
WbDeviceTag摄像机、左、右电机;
int i,j;
wb_robot_init();
/*获取相机设备,启用它并进行识别*/
摄像头=wb_机器人获取设备(“摄像头”);
wb_摄像头_启用(摄像头、时间步长);
wb_摄像头识别_启用(摄像头、时间步长);
/*让一个处理器连接电机,并将目标位置设置为无穷大(速度控制)*/
左_电机=wb_机器人_获取_设备(“左轮电机”);
右轮电机=wb_机器人获取设备(“右轮电机”);
wb_电机设置_位置(左_电机,无限大);
wb_电机设置_位置(右_电机,无限大);
wb_电机设置_速度(左电机,0.0);
wb_电机设置_速度(右电机,0.0);
/*设定马达的速度*/
wb_电机设置_速度(左电机,-速度);
wb_电机设置_速度(右电机,速度);
/*主回路*/
while(wb_机器人_步(时间步)!=-1){
/*获取当前识别的对象数*/
int number_of_objects=wb_camera_recognition_get_number_of_objects(camera));
printf(“\n已识别%d个对象。\n”,对象的数量);
/*获取并显示所有对象信息*/
const WbCameraRecognitionObject*objects=wb\u camera\u recognition\u get\u objects(camera);
对于(i=0;i<对象的数量;++i){
printf(“对象%d的模型:%s\n”,i,对象[i]。模型);
printf(“对象%d的Id:%d\n”,i,对象[i].Id);
printf(“对象%d的相对位置:%lf%lf%lf\n”,i,对象[i]。位置[0],对象[i]。位置[1],
对象[i]。位置[2];
printf(“对象%d的相对方向:%lf%lf%lf%lf\n”,i,对象[i]。方向[0],对象[i]。方向[1],
对象[i]。方向[2],对象[i]。方向[3]);
printf(“对象%d的大小:%lf%lf\n”,i,对象[i]。大小[0],对象[i]。大小[1]);
printf(“对象%d在相机图像上的位置:%d%d\n”,i,对象[i]。在图像[0]上的位置[u],
对象[i]。在图像[1]上定位图像[U];
printf(“摄影机图像上对象%d的大小:%d%d\n”,i,对象[i]。图像[0]上的大小[u],对象[i]。图像[1]上的大小[u];
对于(j=0;j<对象[i]。颜色的数量;++j)
printf(“-Color%d/%d:%lf%lf%lf\n”,j+1,对象[i]。颜色数,对象[i]。颜色[3*j],
对象[i]。颜色[3*j+1],对象[i]。颜色[3*j+2]);
}
}
wb_机器人_清理();

我只需要摄像头识别对象部分…因为目前我不知道如何理解ros c++

代码中的主要问题是您将ros服务/主题API与Webots API混合在一起,在您的节点中,您根本不应该使用Webots API

然后,您的
CameraCallback
回调函数将直接为摄像机识别的每个对象接收一个
webots\u ros::RecognitionObject
对象。因此,无需创建循环,每个对象都将调用此回调一次

您可以在此处找到
webots\u ros::RecognitionObject
消息的定义:

在回调函数中,您可以通过以下方式直接获取属性:

void CameraCallback(const webots_ros::RecognitionObject::ConstPtr &image) {
  double x = image->position.x
  // ...
}

你用“代码>源语言->思想->目标语言< /代码>来翻译口语。你用同样的方式翻译代码:<代码>源代码> >规格->目标代码< /代码>。将C代码转换成规范,然后将其转换成C++。如果你只需要在相机识别部分的帮助,就不需要包括所有的OOT。r噪音。