2019-03-15 03:19:29 +08:00
|
|
|
# Copyright (c) 2019 Computer Vision Center (CVC) at the Universitat Autonoma de
|
2018-07-04 17:12:14 +08:00
|
|
|
# Barcelona (UAB).
|
|
|
|
#
|
|
|
|
# This work is licensed under the terms of the MIT license.
|
|
|
|
# For a copy, see <https://opensource.org/licenses/MIT>.
|
|
|
|
|
|
|
|
import carla
|
|
|
|
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
2019-03-08 21:41:23 +08:00
|
|
|
class TestVehicleControl(unittest.TestCase):
|
2018-07-04 17:12:14 +08:00
|
|
|
def test_default_values(self):
|
|
|
|
c = carla.VehicleControl()
|
|
|
|
self.assertEqual(c.throttle, 0.0)
|
|
|
|
self.assertEqual(c.steer, 0.0)
|
|
|
|
self.assertEqual(c.brake, 0.0)
|
|
|
|
self.assertEqual(c.hand_brake, False)
|
|
|
|
self.assertEqual(c.reverse, False)
|
|
|
|
c = carla.VehicleControl(1.0, 2.0, 3.0, True, True)
|
|
|
|
self.assertEqual(c.throttle, 1.0)
|
|
|
|
self.assertEqual(c.steer, 2.0)
|
|
|
|
self.assertEqual(c.brake, 3.0)
|
|
|
|
self.assertEqual(c.hand_brake, True)
|
|
|
|
self.assertEqual(c.reverse, True)
|
|
|
|
|
|
|
|
def test_named_args(self):
|
|
|
|
c = carla.VehicleControl(
|
|
|
|
throttle=1.0,
|
|
|
|
steer=2.0,
|
|
|
|
brake=3.0,
|
|
|
|
hand_brake=True,
|
|
|
|
reverse=True)
|
|
|
|
self.assertEqual(c.throttle, 1.0)
|
|
|
|
self.assertEqual(c.steer, 2.0)
|
|
|
|
self.assertEqual(c.brake, 3.0)
|
|
|
|
self.assertEqual(c.hand_brake, True)
|
|
|
|
self.assertEqual(c.reverse, True)
|
2019-02-21 18:19:30 +08:00
|
|
|
|
2019-02-25 02:47:35 +08:00
|
|
|
|
2019-03-08 21:41:23 +08:00
|
|
|
class TestVehiclePhysicsControl(unittest.TestCase):
|
2019-02-21 18:19:30 +08:00
|
|
|
def test_named_args(self):
|
|
|
|
|
2019-02-25 02:47:35 +08:00
|
|
|
torque_curve = [[0, 400],
|
|
|
|
[24, 56],
|
|
|
|
[24, 56],
|
|
|
|
[1315.47, 654.445],
|
|
|
|
[5729, 400]]
|
2019-02-21 18:19:30 +08:00
|
|
|
|
2019-02-25 02:47:35 +08:00
|
|
|
steering_curve = [carla.Vector2D(x=0, y=1),
|
2019-02-21 18:19:30 +08:00
|
|
|
carla.Vector2D(x=20.0, y=0.9),
|
|
|
|
carla.Vector2D(x=63.0868, y=0.703473),
|
|
|
|
carla.Vector2D(x=119.12, y=0.573047)]
|
|
|
|
|
2019-05-22 22:15:33 +08:00
|
|
|
wheels = [carla.WheelPhysicsControl(tire_friction=2, damping_rate=0, max_steer_angle=30, radius=10),
|
|
|
|
carla.WheelPhysicsControl(tire_friction=3, damping_rate=1, max_steer_angle=40, radius=20),
|
|
|
|
carla.WheelPhysicsControl(tire_friction=4, damping_rate=2, max_steer_angle=50, radius=30),
|
|
|
|
carla.WheelPhysicsControl(tire_friction=5, damping_rate=3, max_steer_angle=60, radius=40)]
|
2019-02-21 18:19:30 +08:00
|
|
|
|
2019-02-25 02:47:35 +08:00
|
|
|
pc = carla.VehiclePhysicsControl(
|
|
|
|
torque_curve=torque_curve,
|
|
|
|
max_rpm=5729,
|
|
|
|
moi=1,
|
|
|
|
damping_rate_full_throttle=0.15,
|
|
|
|
damping_rate_zero_throttle_clutch_engaged=2,
|
|
|
|
damping_rate_zero_throttle_clutch_disengaged=0.35,
|
|
|
|
|
|
|
|
use_gear_autobox=1,
|
|
|
|
gear_switch_time=0.5,
|
|
|
|
clutch_strength=10,
|
|
|
|
|
|
|
|
mass=5500,
|
|
|
|
drag_coefficient=0.3,
|
|
|
|
|
|
|
|
center_of_mass=carla.Vector3D(x=0.5, y=1, z=1),
|
|
|
|
steering_curve=steering_curve,
|
|
|
|
wheels=wheels)
|
|
|
|
|
|
|
|
error = .001
|
2019-03-19 19:20:59 +08:00
|
|
|
for i in range(0, len(torque_curve)):
|
2019-02-25 02:47:35 +08:00
|
|
|
self.assertTrue(abs(pc.torque_curve[i].x - torque_curve[i][0]) <= error)
|
|
|
|
self.assertTrue(abs(pc.torque_curve[i].y - torque_curve[i][1]) <= error)
|
|
|
|
|
|
|
|
self.assertTrue(abs(pc.max_rpm - 5729) <= error)
|
|
|
|
self.assertTrue(abs(pc.moi - 1) <= error)
|
|
|
|
self.assertTrue(abs(pc.damping_rate_full_throttle - 0.15) <= error)
|
|
|
|
self.assertTrue(abs(pc.damping_rate_zero_throttle_clutch_engaged - 2) <= error)
|
|
|
|
self.assertTrue(abs(pc.damping_rate_zero_throttle_clutch_disengaged - 0.35) <= error)
|
|
|
|
|
|
|
|
self.assertTrue(abs(pc.use_gear_autobox - 1) <= error)
|
|
|
|
self.assertTrue(abs(pc.gear_switch_time - 0.5) <= error)
|
|
|
|
self.assertTrue(abs(pc.clutch_strength - 10) <= error)
|
|
|
|
|
|
|
|
self.assertTrue(abs(pc.mass - 5500) <= error)
|
|
|
|
self.assertTrue(abs(pc.drag_coefficient - 0.3) <= error)
|
|
|
|
|
|
|
|
self.assertTrue(abs(pc.center_of_mass.x - 0.5) <= error)
|
|
|
|
self.assertTrue(abs(pc.center_of_mass.y - 1) <= error)
|
|
|
|
self.assertTrue(abs(pc.center_of_mass.z - 1) <= error)
|
|
|
|
|
2019-03-19 19:20:59 +08:00
|
|
|
for i in range(0, len(steering_curve)):
|
2019-02-25 02:47:35 +08:00
|
|
|
self.assertTrue(abs(pc.steering_curve[i].x - steering_curve[i].x) <= error)
|
|
|
|
self.assertTrue(abs(pc.steering_curve[i].y - steering_curve[i].y) <= error)
|
|
|
|
|
2019-03-19 19:20:59 +08:00
|
|
|
for i in range(0, len(wheels)):
|
2019-02-25 02:47:35 +08:00
|
|
|
self.assertTrue(abs(pc.wheels[i].tire_friction - wheels[i].tire_friction) <= error)
|
|
|
|
self.assertTrue(abs(pc.wheels[i].damping_rate - wheels[i].damping_rate) <= error)
|
2019-04-24 20:47:03 +08:00
|
|
|
self.assertTrue(abs(pc.wheels[i].max_steer_angle - wheels[i].max_steer_angle) <= error)
|
2019-05-22 22:15:33 +08:00
|
|
|
self.assertTrue(abs(pc.wheels[i].radius - wheels[i].radius) <= error)
|
|
|
|
|
|
|
|
self.assertTrue(abs(pc.wheels[i].position.x - wheels[i].position.x) <= error)
|
|
|
|
self.assertTrue(abs(pc.wheels[i].position.y - wheels[i].position.y) <= error)
|
|
|
|
self.assertTrue(abs(pc.wheels[i].position.z - wheels[i].position.z) <= error)
|