zoukankan      html  css  js  c++  java
  • webots自学笔记(六)实用控制器函数补充

    原创文章,来自博客园,_阿龙clliu http://www.cnblogs.com/clliu/,转载请注明原文章出处。

          用Webots软件做机器人仿真时,可以编辑自己的控制器,比较灵活,和现实中烧单片机的过程更接近,这一次介绍比较常用的函数。

          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
    ");
           //此处插入按指定代码
            break;
    
          case WB_ROBOT_KEYBOARD_DOWN:
            printf("DOWN pressed
    ");
           //此处插入按指定代码
            break;
    
          case WB_ROBOT_KEYBOARD_LEFT:
            printf("LEFT pressed
    ");
            //此处插入按指定代码
            break;
    
          case WB_ROBOT_KEYBOARD_RIGHT:
            printf("RIGHT pressed
    ");
            //此处插入按指定代码
            break;
    
          case 'A':
            printf("A pressed
    ");
            //此处插入按指定代码
            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改小吧。

  • 相关阅读:
    DateUtil(比较两个日期是否是同一天)
    用过的读写
    小笔记
    日志解析LogParse启动参数配置
    wow经典台词
    Quartz资源收藏
    Quartz Job基本示例
    已知两点坐标,及在从其中一点开始移动的距离,求移动到的坐标
    如何为SUSE配置IP地址,网关和DNS
    详解Linux Initrd
  • 原文地址:https://www.cnblogs.com/clliu/p/6645746.html
Copyright © 2011-2022 走看看