Webots入门(二)-build up a controller
A simple controller
控制器程序读取传感器的值,然后修改行走速度来避开障碍物。
下面是控制器源代码mybot_simple.c:
#include<webots/robot.h> #include<webots/differential_wheels.h> #include<webots/distance_sensor.h> #define SPEED 60 #define TIME_STEP 64 int main() { wb_robot_init();//初始化webots //获取并使能距离传感器 WbDeviceTag ir0 = wb_robot_get_device("ir0"); WbDeviceTag ir1 = wb_robot_get_device("ir1"); wb_distance_sensor_enable(ir0,TIME_STEP); wb_distance_sensor_enable(ir1,TIME_STEP); while(wb_robot_step(TIME_STEP)!=-1){ //GET distance sensor values double ir0_value = wb_distance_sensor_get_value(ir0); double ir1_value = wb_distance_sensor_get_value(ir1); //Computer the motor speeds double left_speed, right_speed; if (ir1_value > 500) { /* *如果两个传感器都检测到了某物,这意味着面对着一堵墙。这种状况我们需要后退。 */ if(ir0_value > 500){ left_speed = -SPEED; right_speed = -SPEED/2; } else{ left_speed = -ir1_value /10; right_speed = (ir0_value / 10) + 5; } } else if(ir0_value>500){ left_speed = (ir1_value / 10) + 5; right_speed = -ir0_value /10; } else{ left_speed = SPEED; right_speed = SPEED; } //设置移动速度 wb_differential_wheels_set_speed(left_speed, right_speed); } return 0; }
代码根据注释很容易理解,但是以后扩展需要用到更多的函数就要查看reference manual了,大家一起学习。那么我把如何使用controller操控robot的注意事项说一下
1)world建立完成以后,我们就要建立controller,这里我们要记得我们当初在differentialWheels节点的controller域填的名字吗,那么我们就要严格按照这个名字在Wizard->new Robot Controller填上完全一致的名字,否则在链接controller源文件时会报错。
2)我们也可以使用VC6.0来进行源文件的编写,这样更方便快捷,这里要注意的要在VC6.0中添加代码根据注释很容易理解,但是以后扩展需要用到更多的函数就要查看reference manual了,大家一起学习。那么我把如何使用controller操控robot的注意事项说一下world建立完成以后,我们就要建立controller,这里我们要记得我们当初在differentialWheels节点的controller域填的名字吗,那么我们就要严格按照这个名字在Wizard->new Robot Controller填上完全一致的名字,否则在链接controller源文件时会报错。我们也可以使用VC6.0来进行源文件的编写,这样更方便快捷。
(1) 选择Project菜单栏中的Setting菜单项,在弹出的Project Settings对话框中选择C\C++属性页后,然后在该属性页中的Category下拉框中选择Preprocessor在其Additional Include Directories文本框中手动输入{$WEBOTSHOME}\include
(2) 然后再到Link属性页中,在该属性页中的Category下拉框中选择General选项,将Output Files Name文本框中的Release\simulation.exe,改为simulation.exe,然后在其Object/library modules文本框中手动添加controller.lib
(3) 最后在Category下拉框中选择Input选项,在其Additional library path文本框中输入{$WEBOTSHOME}\lib。
3) 最后运行时要注意将WorldInfo的runRealTime 改为true 否则,机器人会跟打了鸡血一样。
这个完整的例子讲的差不多了,后面就要进入深入的研究了,大家一起学习~
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。