Carla 轨迹点生成

个人备份用

import carla
import xmltodict

def get_vehicle_transforms(vehicle, distance=1.0, num_points=10):
    trajectory_points = []

    for i in range(num_points):
        location = vehicle.get_location()
        transform = vehicle.get_transform()
        forward_vector = transform.rotation.get_forward_vector()

        # 计算下一个点的位置
        next_point = location + distance * (i + 1) / num_points * forward_vector

        # 获取yaw角度
        yaw = transform.rotation.yaw

        trajectory_points.append((next_point.x, next_point.y, next_point.z, yaw))

    return trajectory_points

def save_trajectory_to_xml(trajectory_points, xml_filename):
    data = {'trajectory': {'point': []}}

    for point in trajectory_points:
        x, y, z, yaw = point
        data['trajectory']['point'].append({'x': x, 'y': y, 'z': z, 'yaw': yaw})

    with open(xml_filename, 'w') as xml_file:
        xml_file.write(xmltodict.unparse(data, pretty=True))

def draw_trajectory_points(world, trajectory_points):
    for point in trajectory_points:
        x, y, z, _ = point
        location = carla.Location(x, y, z)
        world.debug.draw_point(location, size=0.1, color=carla.Color(255, 0, 0), life_time=1.0)

if __name__ == "__main__":
    # 连接到Carla服务器
    client = carla.Client('localhost', 2000)
    client.set_timeout(10.0)

    # 获取世界
    world = client.get_world()

    # 获取车辆
    vehicle = world.get_actors().find(123)  # 替换为你车辆的ID

    try:
        while True:
            # 获取车辆轨迹点
            trajectory_points = get_vehicle_transforms(vehicle)

            # 保存轨迹点到XML文件
            xml_filename = 'carla_trajectory.xml'
            save_trajectory_to_xml(trajectory_points, xml_filename)

            # 在Carla中显示红色的轨迹点
            draw_trajectory_points(world, trajectory_points)

            print(f'Trajectory points saved to {xml_filename}')

            # 可以根据需要调整时间间隔
            carla.World.wait_for_tick(seconds=0.1)

    except KeyboardInterrupt:
        print("User interrupted the script.")
    finally:
        print("Script terminated.")

2.

import carla
import xmltodict

def get_vehicle_transforms(vehicle, distance=1.0, num_points=10):
    trajectory_points = []

    for i in range(num_points):
        location = vehicle.get_location()
        transform = vehicle.get_transform()
        forward_vector = transform.rotation.get_forward_vector()

        # 计算下一个点的位置
        next_point = location + distance * (i + 1) / num_points * forward_vector

        # 获取yaw角度
        yaw = transform.rotation.yaw

        trajectory_points.append((next_point.x, next_point.y, next_point.z, yaw))

    return trajectory_points

def save_trajectory_to_xml(trajectory_points, xml_filename):
    data = {'trajectory': {'point': []}}

    for point in trajectory_points:
        x, y, z, yaw = point
        data['trajectory']['point'].append({'x': x, 'y': y, 'z': z, 'yaw': yaw})

    with open(xml_filename, 'w') as xml_file:
        xml_file.write(xmltodict.unparse(data, pretty=True))

if __name__ == "__main__":
    # 连接到Carla服务器
    client = carla.Client('localhost', 2000)
    client.set_timeout(10.0)

    # 获取世界
    world = client.get_world()

    # 获取车辆
    vehicle = world.get_actors().find(123)  # 替换为你车辆的ID

    try:
        while True:
            # 获取车辆轨迹点
            trajectory_points = get_vehicle_transforms(vehicle)

            # 保存轨迹点到XML文件
            xml_filename = 'carla_trajectory.xml'
            save_trajectory_to_xml(trajectory_points, xml_filename)

            print(f'Trajectory points saved to {xml_filename}')

            # 可以根据需要调整时间间隔
            carla.World.wait_for_tick(seconds=0.1)

    except KeyboardInterrupt:
        print("User interrupted the script.")
    finally:
        print("Script terminated.")

 

https://www.starflow.tech/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值