第一篇博客
由于学习资料太多,需要将每天所学的内容进行整理。
webots在vs中的controller配置
vs环境搭建
1.SDK更换
2.vc++下包含目录和库目录的配置
包含目录需要包含c和cpp文件,库目录则需要添加lib
3.常规中的配置
注意¥(符号打不出来)的使用。如果添加了这个程序还是找不到路径,需要更改环境变量。具体更改方式可以通过调试的方法,比如看下面显示的路径,如果多了一些目录的名称,删掉即可。(尤其是重装webots的一定要注意环境变量的问题)
4.链接器的配置
添加controller文件
:----------注意controller的c要小写(好像图片下加描述文字的方法和左对齐还是不会啊)
总之,到这里,vs环境就配置好了
webots调试的技巧
1.reset or reload?
之前在调试的时候,总是要先把webots世界reload一次,然后再在vs里点击本地windows调试器,这样一来一去很浪费时间。尤其是电脑不好的,reload又卡又慢。如果是每次调整参数吧,由于default value是(0,0,0),而我调试的小车位置并不在(0,0,0),那这个样子也比较麻烦。
一种可行的方法是,在机器人动起来之前就点击translation,这样小车在运动过程中,虽然实时坐标改变,但改变并不会同步到(x,y,z)框框里,直接按下enter就可以重置了。
后来意外发现还有箭头,点击一下就可以回到0s的位置,也就是小车的初始位置。这样直接点一下箭头,再点一下本地windows调试器,就很快了。
2.如何调试小车?
(1)由于webots里面看结构比较麻烦,我打算直接调参,结果调整了一两个小时,小车还在原地打转。后来还是看了一下原有的代码和同学整理的小车车轮和传感器的位置,花了十几分钟就可以控制小车的行动。所以建议还是先弄清楚结构,再进行控制。
(2)利用传感器等信息输出小车的位置,或者在每一次改变的时候,在控制台输出相应信息。由于小车要拐好几个弯,很容易分不清。
(3)建议不要用距离传感器控制小车定点转弯。根据输出结果,传感器的精度并不是很高,每走一段距离就会有一些偏差。如果用距离传感器,条件复杂不说(一个点由于误差的原因升级成为一块区域,无形中加了许多条件),也不太可能做到准确控制,很有可能形成死角(小车在某一块区域不受约束)
下面给出这次作业的代码
#include <webots/DistanceSensor.hpp>
#include <webots/Motor.hpp>
#include <webots/Robot.hpp>
#include<stdio.h>
#define TIME_STEP 64
using namespace webots;
using namespace std;
int main(int argc, char **argv)
{
Robot *robot = new Robot(); //实例化机器人
Motor *d_motors[4]; //实例化驱动电机: 4个
Motor *r_motors[4]; //实例化转向电机: 4个
char d_motor_names[4][