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

文章介绍了如何利用Webots环境和DriverLibrary在Python中进行自动驾驶项目的开发,包括设置转向角、巡航速度、油门、刹车、指示器、灯光和雨刷等汽车控制功能。示例代码展示了如何实时更新转向角和巡航速度。
摘要由CSDN通过智能技术生成

近期在学习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函数允许用户获取指示器状态。

枚举价值
OFF0
RIGHT1个
LEFT2个

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使用Python实现A*算法路径规划,需要以下步骤: 1. 安装Python控制器:在Webots中打开“Tools”菜单,选择“Install Python Controller”,然后选择您想要安装的Python版本。 2. 创建机器人模型:在Webots中创建一个机器人模型,并使其与Python控制器关联。 3. 实现A*算法:使用Python编写A*算法的代码,实现路径规划功能。这个算法需要考虑机器人的起点和终点,以及机器人在环境中的障碍物。 4. 在Webots中运行Python控制器:在Webots中打开“World”菜单,选择“Preferences”,在“General”选项卡中设置“Controller”为“Python”,然后在“Project”选项卡中选择您的Python脚本。 5. 测试路径规划:在Webots中启动仿真,测试路径规划功能是否正常运行。 下面是一个简单的示例代码,演示如何在Webots使用Python实现A*算法路径规划: ```python # 路径规划示例代码 # 导入Webots控制器库 from controller import Robot # 导入A*算法库 from astar import AStar # 创建机器人实例 robot = Robot() # 获取机器人传感器 lidar = robot.getLidar("lidar") # 创建A*算法实例 astar = AStar() # 设置起点和终点 start = (0, 0) goal = (10, 10) # 添加障碍物 obstacles = [(5, 5), (6, 5), (7, 5), (8, 5)] # 运行A*算法进行路径规划 path = astar.search(start, goal, obstacles) # 打印路径 print(path) ``` 在这个示例中,我们首先导入了Webots控制器库和A*算法库。然后,我们创建了一个机器人实例和一个Lidar传感器实例。接下来,我们创建了一个A*算法实例,并设置了起点和终点,以及障碍物。最后,我们运行了A*算法进行路径规划,并打印了路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值