添加camera相机

  • 1. 添加camera实体
  • 2. 添加camera控制接口代码
  • 3. 运行效果
  • 参考资料

1. 添加camera实体

step1: 在Robot中添加 camera(camera相机)


step2: 设置这个 camera 相机的children中添加 transform 节点,

step3: 设置这个 transform 节点的children中添加shape节点,并设置外观和形状。设置半径 0.01 高度0.02



step4: 设置camera 相机的名称(这个在控制器中会用到),同时设置相机的偏移量为(x=0,y=0.01,z=0.08),旋转偏移量(x=0,y=1.z=0,angle=3.14 rad)
注意:相机的方向的正前方应该是 -z方向,也就是图中蓝色箭头的负方向,在添加相机的时候应当注意。


在camera节点的属性栏中可以设置相机的宽、高和视场角等参数

注意:添加camera的过程中不设置boundingObject属性和 physics属性

2. 添加camera控制接口代码

注意:这里必须要添加了控制代码以后,图像的界面框才会显示图像信息,如果在添加了控制器代码以后还未出现图像则关闭webots 重新打开一次就好。

C++代码:

#include <webots/Camera.hpp>camera = getCamera("camera");camera->enable(4 * timeStep);

C代码:

  WbDeviceTag camera = wb_robot_get_device("camera");wb_camera_enable(camera, TIME_STEP);// update image(void)wb_camera_get_image(camera);

完整的控制器代码:

#include <webots/Robot.hpp>
#include <webots/GPS.hpp>
#include <webots/DistanceSensor.hpp>
#include <webots/Motor.hpp>
#include <webots/Keyboard.hpp>
#include <webots/InertialUnit.hpp>
#include <webots/Gyro.hpp>
#include <webots/Accelerometer.hpp>
#include <webots/Compass.hpp>
#include <webots/Camera.hpp>#include <webots/Receiver.hpp>#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <limits>
#include <string>#define TIME_STEP 64
// All the webots classes are defined in the "webots" namespace
using namespace webots;
using namespace std;
int main(int argc, char **argv) {// create the Robot instance.Robot *robot = new Robot();Keyboard kb;kb.enable(TIME_STEP);DistanceSensor *ds[2];char dsNames[2][10] = {"ds_right","ds_left"};for (int i = 0; i < 2; i++) {ds[i] = robot->getDistanceSensor(dsNames[i]);ds[i]->enable(TIME_STEP);}Camera *camera;//camera=getCamera("camera");camera=robot->getCamera("camera");camera->enable(TIME_STEP);// initialise motorsMotor *wheels[4];char wheels_names[4][8] = {"wheel1", "wheel2", "wheel3", "wheel4"};for (int i = 0; i < 4; i++) {wheels[i] = robot->getMotor(wheels_names[i]);wheels[i]->setPosition(INFINITY);wheels[i]->setVelocity(0);}printf("init successd ...\n");double leftSpeed = 0.0;double rightSpeed = 0.0;// Main loop:// - perform simulation steps until Webots is stopping the controllerwhile (robot->step(TIME_STEP) != -1){//const unsigned char *dat= camera->getImage();int key = kb.getKey();if(key== 315){leftSpeed = 3.0;rightSpeed = 3.0;}else if(key== 317){leftSpeed = -3.0;rightSpeed = -3.0;}else if(key== 314){leftSpeed = -3.0;rightSpeed = 3.0;}else if(key== 316){leftSpeed = 3.0;rightSpeed = -3.0;}else  {leftSpeed = 0.0;rightSpeed = 0.0;}wheels[0]->setVelocity(leftSpeed);wheels[1]->setVelocity(rightSpeed);wheels[2]->setVelocity(leftSpeed);wheels[3]->setVelocity(rightSpeed);};// Enter here exit cleanup code.delete robot;return 0;
}

3. 运行效果

参考资料

[1] 1https://cyberbotics.com/doc/reference/index?version=R2020a-rev1
[2] https://cyberbotics.com/doc/reference/camera

如果大家觉得文章对你有所帮助,请大家帮忙点个赞。O(∩_∩)O

欢迎大家在评论区交流讨论(cenruping@vip.qq.com)

上一篇:Webots 机器人仿真平台(九) 添加IMU传感器

下一篇:Webots 机器人仿真平台(十一) 添加激光传感器(laser)

Webots 机器人仿真平台(十) 添加camera相机相关推荐

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

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

  2. Webots 机器人仿真平台(五) 新建四轮小车模型

    新建机器人模型 1 添加机器人本体 1.1 添加Body 1.2 添加机器人轮子 2 添加距离传感器 3 小结 参考资料 下图为我们这篇博客创建的小车效果,接下来我们一步一步的实现在webots中搭建 ...

  3. Webots 机器人仿真平台(二) 与ROS通讯

    Webot 与ROS通讯 1 Webot Ubuntu客户端与ROS通讯 1.1 配置webots_ros包 1.2 启动webots_ros包 1.3 gmapping建图测试 1.4 键盘遥控we ...

  4. Webots 机器人仿真平台(一) 系统安装

    系统安装 1 Webot介绍 2 Webot安装 2.1 ubuntu环境安装 2.2 Windows环境安装 3 参考资料 1 Webot介绍 Webots是一个开源的三维移动机器人模拟器,它与ga ...

  5. Webots 机器人仿真平台(三) 新建环境模型

    新建环境模型 1 新建世界模型 2 添加机器人模型 3 添加机器人控制器 参考资料 这篇博客介绍如何在webot中新建一个世界并在该环境中加入障碍物.机器人等元素,并添加机器人对应的控制器.这可以帮助 ...

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

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

  7. Webots 机器人仿真平台(六) 新建四轮小车控制器

    新建机器人控制器 1 新建控制器 2 控制器说明 3 运行效果 参考资料 1 新建控制器 这里我们为上一篇博客中创建的小车模型建立一个控制器,让小车在环境中避障运行.首先在 Wizards->N ...

  8. 干货 | 浅谈机器人仿真平台

    " 仿真是机器人学习和研究过程中最重要的工具之一,是指通过计算机对实际的物理系统进行模拟的技术.机器人仿真基于交互式计算机图形技术和机器人学理论,生成机器人的几何图形,并对其进行三维显示,用 ...

  9. 机器人仿真平台——RobotHw

    说明:本次内容基于本博客中每章内容进行代码整合和重构,设计了一个新的机器人仿真平台软件RobotHw(纯完全个人设计) 一.新增和改动内容包括 1.界面UI重构,设计了新的界面操作系统,优化操作逻辑 ...

最新文章

  1. Spring Cloud Stream同一通道根据消息内容分发不同的消费逻辑
  2. spring boot(一)创建项目
  3. 【SD】交货单如何在保存时更改LIKP表的值?
  4. 异常 try catch finally return 执行关系 MD
  5. 计算机java考试_2017年计算机java考试试题
  6. XML基本知识(三)
  7. 早上发现还是问题不断
  8. Java中对象池的本质是什么?(实战分析版)
  9. 怎么安装python2.7_python2.7环境如何安装
  10. 立创EDA封装命名规范参考
  11. wincc控件之FlexGrid系列(注册安装)
  12. 代码自动生成-宏带来的奇计淫巧
  13. 部分商誉确认法和全部商誉确认法
  14. 搭档之家|立秋·暑去凉来 叶落知秋
  15. jmeter性能测试步骤实战教程
  16. Dreamweaver制作简易的拼图游戏教程
  17. An overview of color constancy algorithms论文笔记
  18. 用Latex输入微米(micron)或者微秒的方法
  19. 1月第2周小红书、抖音、B站、淘宝KOL排行榜
  20. Vue自定义组件npm上传私服,且从私服下载使用

热门文章

  1. 【秒懂音视频开发】02_重识声音
  2. twilio python_在Python中用Twilio接收和处理短消息
  3. 正码、反码、补码区别
  4. 学习笔记3:字符串库函数模拟实现(上)
  5. 关于AxGlyph软件
  6. 40张风韵别致的海报设计(经典欣赏)
  7. Java 关于序列化、Json和Gson详解
  8. SQL*Plus break与compute的简单用法
  9. 鼠标事件:onclick、onmousedown、onmouseup、onmouseover、onmouseout、onmouseenter、onmouseleave、鼠标的按键、 div简单拖拽
  10. 微信小程序调试模式请求失败,真机模式、调试带控制台模式却都成功