基本使用

本体安装

Visual Studio

机器人控制器的 IDE 。

练习1 webot 的 hello world

  • 基本的场景创建

  • 控制器编程

https://www.cyberbotics.com/doc/guide/tutorial-1-your-first-simulation-in-webots

  • 建立新项目

  • 添加地板(floor)

  • 添加障碍物(WoodenBox) 可以使用ctrlcv复制,shift拖动移动

  • 添加机器人(e-puck)

此机器人自带控制器,直接启动仿真即可避障。

自己写一个控制器。

#include <webots/robot.h>
#include <webots/motor.h>

#define TIME_STEP   64
#define MAX_SPEED   6.28


int main(int argc, char** argv)
{
    wb_robot_init();    

    WbDeviceTag left_motor  = wb_robot_get_device("left wheel motor");
    WbDeviceTag right_motor = wb_robot_get_device("right wheel motor");

    wb_motor_set_position(left_motor, INFINITY);
    wb_motor_set_position(right_motor, INFINITY);

    wb_motor_set_velocity(left_motor, 0.1 * MAX_SPEED);
    wb_motor_set_velocity(right_motor, -0.1 * MAX_SPEED);

    while (wb_robot_step(TIME_STEP) != -1)
    {
    }

    wb_robot_cleanup();

    return 0;
}

练习2

场景物品修改

形状和边界、物理属性

DEF-USE机制

还有不太重要的外观。

控制器

机器人避障的例子。

  • 控制器入口为 main

  • 每个控制器都作为 Webots 进程的子进程。不共享内存(除相机图像),因此控制器可以在另一个CPU上运行

  • 控制器代码与 libController 动态库链接,这个库处理控制器和 Webots 的通信

场景

  • Solid

    • Children

      • Shape 看起来的形状

    • boundingObject 仿真时候的碰撞边界

    • physics

一般就让碰撞边界就是看起来的外观形状,这样符合实际世界。但是呢如果使用的是自己设计的Solidworks模型,也可以适当简化碰撞边界,减少仿真运算量。

在 Shape 这可以在面下 DEF 起个名字,相当于复制一份。

机器人相关

运动结构

joint与电机

旋转轮胎,或者普通的旋转结构

  • HingeJoint

    • JointParameters

      • axis 旋转轴

      • anchor 锚点

      • position 位置

    • endPoint 末端必须连接刚体

      • Solid

    • device 可以添加电机驱动

Last updated