webots自学笔记(六)实用控制器函数补充
2017-11-16 17:12
956 查看
用Webots软件做机器人仿真时,可以编辑自己的控制器,比较灵活,和现实中烧单片机的过程更接近,这一次介绍比较常用的函数。
1.玩机器人的时候都会用到手柄或者其他设备来控制机器人,使它完成不同的指令,在webots仿真中,可以用键盘输入来控制机器人。(这个代码来之例程 GhostDog)如下:
2.延时(等待)函数
有时候做完一件事需要延时几毫秒,有些单片机里是用Delay()来表示,有些地方是用Thread.Sleep()表示,不管哪个函数,webots里用哪个呢。
wb_robot_step();
在webots用这个函数,可以模拟控制器进行延时,而仿真的世界继续运行的情况。和单片机延时差不多的意思。
在用这个函数需要注意一点,webots里的控制器并不是以最快的速度一直循环执行代码,而是间隔basicTimeStep(worldInfo下的属性)时间执行一次,单位是ms。假设 basicTimeStep = 32,我们需要在每次循环延迟100ms,应该在循环中写wb_robot_step(68);才能达到指定的效果。如果你的延时较短,将basicTimeStep改小吧。
1.玩机器人的时候都会用到手柄或者其他设备来控制机器人,使它完成不同的指令,在webots仿真中,可以用键盘输入来控制机器人。(这个代码来之例程 GhostDog)如下:
//原创文章,来自“博客园,_阿龙clliu” http://www.cnblogs.com/clliu/,转载请注明原文章出处 //得到新按键值 new_key = wb_robot_keyboard_get_key(); //按键改变后执行 if (new_key != prev_key) { switch (new_key) { case WB_ROBOT_KEYBOARD_UP: printf("UP pressed\n"); //此处插入按指定代码 break; case WB_ROBOT_KEYBOARD_DOWN: printf("DOWN pressed\n"); //此处插入按指定代码 break; case WB_ROBOT_KEYBOARD_LEFT: printf("LEFT pressed\n"); //此处插入按指定代码 break; case WB_ROBOT_KEYBOARD_RIGHT: printf("RIGHT pressed\n"); //此处插入按指定代码 break; case 'A': printf("A pressed\n"); //此处插入按指定代码 break; default: break; } prev_key = new_key;
2.延时(等待)函数
有时候做完一件事需要延时几毫秒,有些单片机里是用Delay()来表示,有些地方是用Thread.Sleep()表示,不管哪个函数,webots里用哪个呢。
wb_robot_step();
在webots用这个函数,可以模拟控制器进行延时,而仿真的世界继续运行的情况。和单片机延时差不多的意思。
在用这个函数需要注意一点,webots里的控制器并不是以最快的速度一直循环执行代码,而是间隔basicTimeStep(worldInfo下的属性)时间执行一次,单位是ms。假设 basicTimeStep = 32,我们需要在每次循环延迟100ms,应该在循环中写wb_robot_step(68);才能达到指定的效果。如果你的延时较短,将basicTimeStep改小吧。
相关文章推荐
- webots自学笔记(三)控制器与电机控制
- webots自学笔记(一)软件界面和简单模型仿真
- 菜鸟C++自学笔记【包含函数的结构】
- LUA TABLE 函数库(二)——实用笔记
- ffmpeg的tutorial中文版学习笔记(四)(新版函数额外补充)
- 自学笔记の函数的参数传递
- Python自学笔记之函数2——定义函数以及函数的参数
- ffmpeg的tutorial中文版学习笔记(四)(新版函数额外补充)
- php自学笔记外传---部分内建函数
- es6 学习笔记 之 函数 数组 补充
- 菜鸟C++自学笔记【包含函数的结构】
- 【郝斌数据结构自学笔记】49-52_递归的定义和不同函数之间相互调程序举例_一个函数自己调自己程序举例
- webots自学笔记(二)节点与机器人建模
- 黑马程序员--C语言自学笔记---06函数简介和简单UNIX指令
- Linux笔记——shell补充:参数传递&函数等
- Java自学笔记(第三天)-while循环-do while循环-for循环-函数-函数重载
- Linux笔记——shell补充:参数传递&函数等
- Python2.7自学笔记4――定义函数
- 实用各类函数学习笔记
- 【郝斌数据结构自学笔记】53-56_一个函数为什么可以自己调用自己_递归必须满足三个条件_循环和递归的比较