关于控制器

本章目标:介绍Webots的基本编程
1.scene tree node和控制器API的关系
2.控制器如何初始化、清理,如何初始化机器人设备,如何获取传感器值,如何控制执行器,如何编写简单反馈回路。

新世界/新控制器

$ 将之前的世界另存为collision_avoidance.wbt
$ 创建一个C控制器,命名为e-puck_avoid_collision,并将其与e-puck node的controller filed关联。

了解e-puck 模型

initialize_robot
simulation_step
read_sensors
process_behavior
write_actuators
cleanup_robot

code

#include <webots/robot.h>
#include <webots/distance_sensor.h>
#include <webots/motor.h>// time in [ms] of a simulation step
#define TIME_STEP 64#define MAX_SPEED 6.28// entry point of the controller
int main(int argc, char **argv)
{// initialize the Webots APIwb_robot_init();// internal variablesint i;WbDeviceTag ps[8];char ps_names[8][4] = {"ps0", "ps1", "ps2", "ps3","ps4", "ps5", "ps6", "ps7"};// initialize devicesfor (i = 0; i < 8 ; i++) {ps[i] = wb_robot_get_device(ps_names[i]);wb_distance_sensor_enable(ps[i], TIME_STEP);}WbDeviceTag left_motor = wb_robot_get_device("left wheel motor");WbDeviceTag 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);// feedback loop: step simulation until an exit event is receivedwhile (wb_robot_step(TIME_STEP) != -1) {// read sensors outputsdouble ps_values[8];for (i = 0; i < 8 ; i++)ps_values[i] = wb_distance_sensor_get_value(ps[i]);// detect obstaclesbool right_obstacle =ps_values[0] > 70.0 ||ps_values[1] > 70.0 ||ps_values[2] > 70.0;bool left_obstacle =ps_values[5] > 70.0 ||ps_values[6] > 70.0 ||ps_values[7] > 70.0;// initialize motor speeds at 50% of MAX_SPEED.double left_speed  = 0.5 * MAX_SPEED;double right_speed = 0.5 * MAX_SPEED;// modify speeds according to obstaclesif (left_obstacle) {// turn rightleft_speed  += 0.5 * MAX_SPEED;right_speed -= 0.5 * MAX_SPEED;}else if (right_obstacle) {// turn leftleft_speed  -= 0.5 * MAX_SPEED;right_speed += 0.5 * MAX_SPEED;}// write actuators inputswb_motor_set_velocity(left_motor, left_speed);wb_motor_set_velocity(right_motor, right_speed);}// cleanup the Webots APIwb_robot_cleanup();return 0; //EXIT_SUCCESS
}

总结

1.wb_robot_init 头。
2.wb_robot_cleanup 尾。

3.设备根据设备节点的域名调用:
a. 拿句柄,wb_robot_get_device
b.使能,wb_distance_sensor_enable
c.读数据,wb_distance_sensor_get_value

4.每个控制器进程跟Webots进程独立,控制器的代码跟libController动态库关联,该库处理控制器跟Webots进程间通信。

Webots学习笔记 4.机器人控制器代码介绍相关推荐

  1. python计算机器人运动学分析_V-rep学习笔记:机器人逆运动学数值解法(The Jacobian Transpose Method)...

    机器人运动学逆解的问题经常出现在动画仿真和工业机器人的轨迹规划中:We want to know how the upper joints of the hierarchy would rotate ...

  2. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  3. Unity DOTS 学习笔记1 - ECS 0.50介绍和安装

    Unity DOTS 学习笔记1 - ECS 0.50介绍和安装 为什么学习这个技术 ECS的全称为Entity Component System,是最早由暴雪在GDC2017上提出的一个新的游戏设计 ...

  4. 点云学习笔记11——VoxelNet算法+代码运行

    点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...

  5. Lasso线性回归学习笔记(公式与代码实现)

    目录 Lasso线性回归学习笔记(公式与代码实现) 1 为什么要在线性回归中引入正则化项(简介) 2 常见正则化项 3 损失函数图像与正则化之后的图像 3.1损失函数图像 3.2 加了 L~1~ 正则 ...

  6. 嵌入式学习笔记——基于Cortex-M的单片机介绍

    基于Cortex-M的单片机介绍 前言 1生产厂商及其产品线 1.1ARM单片机的产品线 1.2命名规则 作业1 2习单片机的资料准备 2.1STM32开发所需手册 2.1.1芯片的数据手册 芯片基本 ...

  7. V-rep学习笔记:机器人模型创建2—添加关节

    下面接着之前经过简化并调整好视觉效果的模型继续工作流,为了使模型能受控制运动起来必须在合适的位置上添加相应的运动副/关节.一般情况下我们可以查阅手册或根据设计图纸获得这些关节的准确位置和姿态,知道这些 ...

  8. Windows保护模式学习笔记(二)—— 代码跨段跳转

    Windows保护模式学习笔记(二)-- 代码跨段跳转 要点回顾 代码跨段跳转 执行流程 1)段选择子拆分 2)查表得到段描述符 3)权限检查 4)加载段描述符 5)代码执行 6)总结 一致代码段(共 ...

  9. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

最新文章

  1. 2021年春季学期-信号与系统-第一次作业参考答案-第一题
  2. 使用common-fileUpload制作文件上传【转】
  3. deno学习一 安装试用几个问题解决
  4. 华月互网获得2012全国十大IDC服务商
  5. sql 数据库中只靠一个数据,查询到所在表和列名
  6. MySQL 高级 - 视图 - 概述
  7. LeetCode 533. 孤独像素 II
  8. 震惊!阿里的程序员竟被一个简单的 SQL 查询难住了!
  9. 数字系统设计学习之QuartusII9的安装
  10. 同步和异步概念(由DZW前端框架引发的百度地图api无法加载问题总结)
  11. 后台图片验证码功能是什么实现的
  12. Redis笔记(六)Redis的消息通知
  13. android图片加水印,文字
  14. Android 增强版百分比布局库 为了适配而扩展
  15. 【3D建模制作技巧分享】3dmax如何设置视图布局
  16. Mac制作Windows 10 U盘启动盘
  17. 美国软件公司Salesforce获得区块链反垃圾邮件解决方案专利
  18. lisp实战文库_lisp编程实例
  19. 第十六章 二次根式 教案
  20. html静态商城网页制作 基于HTML+CSS+JavaScript在线服装商城店铺商城设计毕业论文源码

热门文章

  1. CV学习笔记-相机模型(欧式变换及仿射变换)
  2. python也能控制芯片吗?MicroPython了解一下
  3. 《C语言程序设计》(谭浩强第五版) 第6章 利用数组处理批量数据 习题解析与答案
  4. 如何在线CAJ转换成Word文档
  5. NTT Docomo公布公司LTE投资计划
  6. 目标跟踪“Staple: Complementary Learners for Real-Time Tracking”
  7. 代码开发--查漏补缺
  8. 爬取论坛标题与链接存入excel
  9. 百度地图点标记以及点击弹出对应信息窗口自定义样式--infoBox
  10. ai怎么做盒子效果图_AI利用3d效果制作包装图