vs下webots环境的配置

第一篇博客

由于学习资料太多,需要将每天所学的内容进行整理。

webots在vs中的controller配置

vs环境搭建

1.SDK更换vs下webots环境的配置_第1张图片
2.vc++下包含目录和库目录的配置
vs下webots环境的配置_第2张图片
包含目录需要包含c和cpp文件,库目录则需要添加lib

3.常规中的配置
vs下webots环境的配置_第3张图片
注意¥(符号打不出来)的使用。如果添加了这个程序还是找不到路径,需要更改环境变量。具体更改方式可以通过调试的方法,比如看下面显示的路径,如果多了一些目录的名称,删掉即可。(尤其是重装webots的一定要注意环境变量的问题)

4.链接器的配置
vs下webots环境的配置_第4张图片
添加controller文件
vs下webots环境的配置_第5张图片
:----------注意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 
#include 
#include 
#include

#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][20] = { "driver_motor1", "driver_motor2", "driver_motor3", "driver_motor4" };      //驱动电机
 char r_motor_names[4][20] = { "rotate_motor1", "rotate_motor2", "rotate_motor3", "rotate_motor4" };      //转向电机
 for (int i = 0; i < 4; i++) {
  //驱动电机初始化
  d_motors[i] = robot->getMotor(d_motor_names[i]);
  d_motors[i]->setPosition(INFINITY);
  d_motors[i]->setVelocity(0.0);
  //转向电机初始化
  r_motors[i] = robot->getMotor(r_motor_names[i]);
  r_motors[i]->setPosition(0.0);
  r_motors[i]->setVelocity(0.0);
 }
 
 double motor_angle = 1.5708 / 1.9;
 double motor_vel = 17.0;
 
//main loop
  for(int key =1;key<7;key++) {
  double leftSpeed = 50;
  double rightSpeed = 50;
  
  d_motors[0]->setVelocity(leftSpeed);
  d_motors[1]->setVelocity(rightSpeed);
  d_motors[2]->setVelocity(leftSpeed);
  d_motors[3]->setVelocity(rightSpeed);
  
  r_motors[0]->setPosition(motor_angle);
  r_motors[1]->setPosition(motor_angle);
  r_motors[2]->setPosition(motor_angle);
  r_motors[3]->setPosition(motor_angle);
  
  r_motors[0]->setVelocity(motor_vel);
  r_motors[1]->setVelocity(motor_vel);
  r_motors[2]->setVelocity(motor_vel);
  r_motors[3]->setVelocity(motor_vel);
  
  switch (key)
  {
 
  case(1)://右转准备
   robot->step(700);
   motor_angle = -1.5708 / 2;
   break;
  case(2)://左转准备
   robot->step(700 + 700 / 14);
   motor_angle = 1.5708 / 2;
   break;
  case(3)://右转
   robot->step(800);
   motor_angle = -(1.5708/2)/1.5;
   break;
  case(4)://直行
   robot->step(700);
   motor_angle = 0;
   break;
  case(5)://左转
   robot->step(700 * 1.3);
   motor_angle = (1.5708 / 2)*2;
   break;
  case(6):
   robot->step(700*2.5);
   break;
  default:
   break;
  }
 }
 
 delete robot;
 return 0;  // EXIT_SUCCESS
}
/*
 下面是运用传感器但是失败了的代码
 1.要注意随时输出,便于调试
 2.注意传感器的使用方法
 3.如果问题太过复杂,及时放弃或者问问同学
*/
 DistanceSensor *ds[4];
 char sensor_names[4][20] = { "ds_front","ds_back","ds_left","ds_right" };
//double dis[4];
//for (int i = 0; i < 4; i++) {
// dis[i] = ds[i]->getValue();
// cout << "dis[i]: " << dis[i] << "     ";
//}
//cout << endl;
//if (dis[0] < 8040)
//{
// if (dis[2] < 1450 && dis[2]>1350) {
//  motor_angle = -3.14 / 2;
//  cout << "right" << endl;
// }
// if (dis[2] > 208 && dis[2] < 240) {
//  motor_angle = 3.14 / 2;
//  cout << "left" << endl;
// }
//}
//else
//{
// motor_angle = 3.14 / 2;
// cout << "left" << endl;
// if (dis[2] > 4000) 
// {
//  motor_angle = -3.14 / 2;
//  cout << "right" << endl;
//  flag = 1;
//  if (flag) 
//  { 
//   motor_angle = -3.14 / 2; 
//   if (dis[2] < 2000) return 0;
//  }
// }
//}

最后的作业,耗时7s到达终点(由于参数是参考了同学的,所以调试起来并没有让小车加速。一个个调整参数太麻烦了,在同学数据的基础上还硬生生调整了两个小时)
vs下webots环境的配置_第6张图片

Microsoft edge打不开的情况

问题描述:装了一个软件之后,edge突然就不能用了。可我习惯用edge,所以花了半个小时找解决方案。

控制面板->网络Internet->Internet选项(左下角)->Internet属性->高级-> 重置 并删除个人设置->重启

整理自:https://blog.csdn.net/weixin_39976450/article/details/98480148

你可能感兴趣的:(vs下webots环境的配置)