近期在学习Webots,基于Webots环境和强化学习写一个关于自动驾驶的项目,因此学习官方相关文档,翻译了一下API接口的功能。以便后续使用!
Webots for automobiles Car Library 和 Driver Library 学习
Webots documentation: Driver Library (cyberbotics.com)
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运行如下
运行结果如下