Webots学习(一)—— Webots for automobiles(Python API)

近期在学习Webots,基于Webots环境和强化学习写一个关于自动驾驶的项目,因此学习官方相关文档,翻译了一下API接口的功能。以便后续使用!

Webots for automobiles Car Library 和 Driver Library 学习

Webots documentation: Driver Library (cyberbotics.com)

Driver Library Functions(汽车驱动库函数)

from vehicle import Driver

class Driver:
    def __init__(self):
    def __del__(self):

该函数相当于任何常规机器人控制器的初始化、清理和步进功能。该init函数应在任何控制器程序的最开始调用,该cleanup函数应在控制器程序结束前退出,并且step应在主循环中调用该函数以运行一个模拟步骤。与机器人步骤不同,驱动程序步骤没有任何参数,使用世界的默认时间步骤。

class Driver:
    def setSteeringAngle(self, steeringAngle):
    def getSteeringAngle(self):

#角度设置的要求
angle_right = atan(1 / (cot(steering_angle) - trackFront / (2 * wheelbase)));
angle_left = atan(1 / (cot(steering_angle) + trackFront / (2 * wheelbase)));

获取和设置转向角

class Driver:
    def setCruisingSpeed(self, speed):
    def getTargetCruisingSpeed(self):

设置和获取目标巡航速度

class Driver:
    def setThrottle(self, throttle):
    def getThrottle(self):

设置和获取油门

wbu_driver_set_throttle函数用于控制汽车的扭矩,它设置油门的状态。该参数应介于 0.0 和 1.0 之间,0 表示发动机输出扭矩的 0% 发送到车轮,1.0 表示发动机输出扭矩的 100% 发送到车轮

class Driver:
    def setBrakeIntensity(self, intensity):
    def getBrakeIntensity(self):

设置和获取刹车强度

该功能通过增加四个车轮的每个旋转接头的系数来wbu_driver_set_brake_intensity制动汽车。参数应在 0.0 和 1.0 之间,0 表示没有在关节上添加阻尼常数(不断裂),1 表示Car节点的dampingConstant参数应用于每个关节(值将在 0 之间线性插值以及0 和 1 之间的任何参数)。

class Driver:
    INDICATOR_OFF, INDICATOR_RIGHT, INDICATOR_LEFT

    def setIndicator(self, state):
    def getIndicator(self):
    def setHazardFlashers(self, state):
    def getHazardFlashers(self):

设置和获取指示器状态

wbu_driver_set_indicator函数允许用户设置(使用枚举WbuDriverIndicatorState)指示器是否应该只在汽车的右侧、汽车的左侧打开或应该关闭。该wbu_driver_get_indicator函数允许用户获取指示器状态。

枚举 价值
OFF 0
RIGHT 1个
LEFT 2个

WbuDriverIndicatorState 枚举

wbu_driver_set_hazard_flashers功能允许用户打开或关闭危险闪光灯(汽车两侧的指示灯)。该wbu_driver_get_hazard_flashers函数允许用户获取危险闪光灯的状态。

class Driver:
    def setDippedBeams(self, state):
    def setAntifogLights(self, state):
    def getDippedBeams(self):
    def getAntifogLights(self):

设置和获取灯光

用于启用或禁用近光灯和防雾灯wbu_driver_set_dipped_beams,wbu_driver_set_antifog_lights

class Driver:
    def getRpm(self):

获取电机转速

该函数返回发动机转速的估计值。

注意:如果启用巡航速度控制,则此函数返回错误,因为启用巡航速度控制时没有发动机模型。

class Driver:
    def setGear(self, gear):
    def getGear(self):
    def getGearNumber(self):

获取并设置齿轮

wbu_driver_set_gear函数设置啮合档位。参数-1用于接合倒档,参数0用于分离变速箱。0除和之外的任何其他参数都应介于 1 和Car PROTO参数-1中设置的系数数之间。gearRatio

wbu_driver_get_gear函数返回当前啮合的档位。

wbu_driver_get_gear_number函数仅返回可用档位的数量(包括倒档)。

class Driver:
    SPEED, TORQUE

    def getControlMode(self):

获取控制模式

wbu_driver_get_control_mode将返回汽车的当前控制模式。

class Driver:
    DOWN, SLOW, NORMAL, FAST

    def setWiperMode(self, mode):
    def getWiperMode(self):

设置和获取雨刷模式

wbu_driver_set_wiper_mode函数允许用户设置(使用枚举WbuDriverWiperMode)从慢到快的各种雨刷速度。虽然慢速模式和正常模式共享相同的速度,但慢速模式每隔几秒就会启动一次雨刮器。该wbu_driver_get_wiper_mode功能允许用户获取雨刷器的模式。

该demo了如何在 Python 中设置巡航速度和转向角:

import math

from vehicle import Driver

#实例化对象
driver = Driver()
driver.setSteeringAngle(0.2)
driver.setCruisingSpeed(20)

#实时更新数据
while driver.step() != -1:
  angle = 0.3 * math.cos(driver.getTime())
  driver.setSteeringAngle(angle)

代码在pycharm运行如下

Webots学习(一)—— Webots for automobiles(Python API)_第1张图片

运行结果如下

你可能感兴趣的:(python,人工智能)