ubuntu版本:20.04
webots版本:2021a
控制器:C语言
为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接

1. 识别效果

2. 普通相机及识别

在节点树下先添加一个Robot节点,在其节点下添加Camera节点。如下所示:

在控制器中输入如下代码可以对相机始能。

WbDeviceTag CAMERA = wb_robot_get_device("camera");
wb_camera_enable(CAMERA,TIME_STEP);

重新启动世界后相机就能成功运行了。

2.1 普通相机

添加通用的Camera节点已经足够我们去开发了。通用相机可以自定义分辨率、视野、噪点等参数,一般情况下也支持相机的变焦和聚焦机制。在特殊情况下还提供了运动模糊、各种噪声模型、镜头畸变、球型投影等参数供我们去设置。

Camera {SFFloat  fieldOfView            0.7854  # 视野                 [0, pi]SFInt32  width                  64      # 图像宽度             [0, inf)SFInt32  height                 64      # 图像高度             [0, inf)SFBool   spherical              FALSE   # 球型投影             {TRUE, FALSE}SFFloat  near                   0.01    # 相机到近剪裁平面的距离 [0, inf)SFFloat  far                    0.0     # 相机到远剪裁平面的距离 [0, inf)SFFloat  exposure               1.0     # 暴光度              [near, inf)SFBool   antiAliasing           FALSE   # 抗拒齿              {TRUE, FALSE}SFFloat  ambientOcclusionRadius 0       # 环境光遮挡半径       [0, inf)SFFloat  bloomThreshold         -1.0    # 泛光阈值            [-1, inf)SFFloat  motionBlur             0.0     # 运动模糊            [0, inf)SFFloat  noise                  0.0     # 噪声                [0, 1]SFString noiseMaskUrl           ""      # 噪声遮蔽图           any stringSFNode   lens                   NULL    # 可以定义图像失真      {Lens, PROTO}SFNode   focus                  NULL    # 焦点                {Focus, PROTO}SFNode   zoom                   NULL    # 镜头缩放             {Zoom, PROTO}SFNode   recognition            NULL    # 识别                {Recognition, PROTO}SFNode   lensFlare              NULL    # 镜头光晕             {LensFlare, PROTO}
}

2.2 Webots下的视觉识别介绍

Camera节点通过Recognition节点实现了对象识别功能。通过设置物体的recognitionColors参数可以让相机识别。
此外,识别还提供了图像分割功能,效果如下图所示,左侧是相机图像,右侧是分割图像。如果物体的identificationColors参数为空,分割时以黑色显示,反则以设置的颜色进行着色

Recognition 节点下的参数:

Recognition {SFFloat  maxRange       100     # 最大值范围          [0, inf)SFInt32  maxObjects     -1      # 物体数量最大值       {-1, [0, inf)}SFBool   occlusion      TRUE    # 遮挡               {TRUE, FALSE}SFColor  frameColor     1 0 0   # 方框颜色            any colorSFInt32  frameThickness 1       # 方框线粗细          [0, inf)SFBool   segmentation   FALSE   # 分割               {TRUE, FALSE}
}

3. 设置图像识别

  1. camera节点下找到Recognition参数,并且在Recognition节点下添加识别实例。如下图所示。

使用如下代码始能识别:

wb_camera_recognition_enable(CAMERA,TIME_STEP);

重新运行世界,就可以看到如下情景。可以看到苹果和玩具鸭可以被识别出来了。

  1. 既然上面介绍到识别功能可以获取在相机中物体的位置。那我们可以通过printf将所有信息输出出来。代码如下所示
//获取识别出来的物体
int number_of_objects = wb_camera_recognition_get_number_of_objects(CAMERA);
printf("\nRecognized %d objects.\n", number_of_objects);
for (i = 0; i < number_of_objects; ++i) {//输出物体的名称printf("Model of object %d: %s\n", i, objects[i].model);//输出物体的IDprintf("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]);
}

4. 设置物体的可识别性

选中啤酒瓶,在节点树中右击它,然后选择Convert to Base Node,啤酒瓶的在节点树中变成了solid,而且我们可以双击recognitionColors参数。

可以看到啤酒瓶也能被正确识别出来了。

结语

本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~
这个教程能手把手带领大家解决webots和ROS联合仿真的问题,我也是摸爬滚打完成的,希望能帮助到大家。

✌Bye

为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接

惊了,webots自带视觉识别相关推荐

  1. ROS联合webots实战案例目录

    注意: 在学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识 这个教程能手把手带领大家解决webots和ROS联合仿真的问题,我也是摸爬滚打完成的,希望能帮助到大家. 后续依旧会发 ...

  2. Webots 机器人仿真平台(四) 机器人基础控制器

    新建环境模型 1 控制器结构 2 操作函数 2.1 初始化函数 2.2 距离传感器操作函数 2.3 ground_sensors 操作函数 2.4 激光雷达传感器操作函数 2.5 LED灯作函数 2. ...

  3. Webots构建四轮小车模型

    文章目录 前言 一.机器人车身主体 二.机器人车轮 三.机器人控制器 总结 前言 上篇文章简单介绍了一下webots这款机器人仿真软件,本篇文章结合官方文档中的tutorial简单构建一个四轮小车来学 ...

  4. Webots 机器人仿真平台(十二) 与ROS节点通讯

    与ROS节点通讯 1 设置webots控制器 2 创建ROS节点 3 代码分析 3.1 设置电机位置 3.2 设置电机速度 3.3 读取时间节拍 参考资料 在前面的教程中我们描述了如何在webots中 ...

  5. webots联合Cartographyer建图教程

    一.忠告 ubuntu版本:20.04 ros版本:noetic webots版本:webots_2021a_amd64.deb 所有版本严格按照教程的来,如版本不一样, 报错自己解决. ------ ...

  6. HTML5 和 JavaScript 特效

    这篇文章向大家展示8个惊艳的 HTML5 和 JavaScript 特效.作为下一代网页语言,HTML5 拥有很多让人期待已久的新特性,越来越多的开发人员开始使用 HTML5 来制作各种交互性强.效果 ...

  7. 平板触控笔哪些品牌好?ipad触控笔推荐平价

    苹果电容笔与平替电容笔两者需要根据我们的预算以及需求去选择,要是日常多用于用于绘画,建议可以用Apple Pencil,而对于日常仅仅用于学习与记笔记,可以用平替电容笔,由于平替电容笔的品质与表现都非 ...

  8. 中式红木整装定制——吸引着越来越多的人去解读它

    中式红木整装定制,不仅仅是空间感的独特,个性化的体现,还是中国传统文化美学的承载体,每一种图案,每一个符号,都是我们对中国文化的传承.而红木的美,华丽天成!自然而纯美,简洁中蕴含着端庄与典雅,深邃中浸 ...

  9. 高速柔性分选摆盘设备全自动IC芯片整列摆盘机半导体自动排列机

    [品牌]中天智能 [型号]ZTi-FB800 [机架]钣金一体成型机架 [运动模组]直线电机.双动子 [视觉系统]上视觉*3  下视觉飞拍*2 [吸头结构]ZR运动吸头*8 [柔性振动盘]取料范围30 ...

最新文章

  1. [Spring 深度解析]第3章 核心容器
  2. 网络编程学习笔记(poll函数)
  3. 我在ChinaUnix上看到的有点点用的帖子
  4. sql like语句中的通配符:百分号、下划线和escape
  5. Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
  6. android 检测应用程序信息
  7. cgi web 调用多次启动_全面了解CGI、FastCGI、PHPFPM
  8. 《Thinking in java》 读了个开头
  9. 2017.08.15【NOIP提高组】模拟赛B组 生日聚餐
  10. 无人驾驶是好,但晕车咋办?
  11. 李炎恢的课程中心(JQUERY视频)
  12. 【Matlab】Matlab2014修改默认工作目录
  13. linux制作win7启动u盘
  14. SQL Server 2008 SP3简体中文版官方下载
  15. 分切机设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 薛之谦明星人物介绍html源码 html期末大作业 课程设计
  17. c语言程序代码有什么用,用c语言编写的代码程序是什么?
  18. OpenCASCADE 获取面中心点法向
  19. 模拟喷泉码(入门二):Seamless Rate Adaptation for Wireless Networking
  20. HTML之FrameSet,Frame和Iframe区别

热门文章

  1. 谷歌浏览器实现视频播放加速功能
  2. C++之string长度
  3. 猴赛礼™二维码礼品卡券提货兑换系统使用教程
  4. 阿里云挖矿./trace -r 2 -R 2 --keepalive --no-color --donate-level 1 --max-cpu-usage 10
  5. 各态历经平稳高斯白噪声
  6. 从零开始 荔枝派nano TF卡启动
  7. Fritzing软件绘制Arduino面包板接线图传感器模块库文件280
  8. 网易我的世界地图共享(手机地图导入到电脑)
  9. 数字电路硬件设计系列(十九)之温控电路设计
  10. SQLServer--------附加数据库以及解决附加时出现的错误