1. Autoware环境搭建与仿真器配置

任务目标

在Ubuntu 20.04系统上完成Autoware.Universe的源码安装,配置LGSVL仿真器桥接,启动基础仿真环境并验证车辆模型在虚拟场景中正常响应控制指令。

环境依赖

  • Ubuntu 20.04 LTS(x86_64)
  • NVIDIA GPU驱动 ≥ 460(用于CUDA加速)
  • ROS 2 Galactic(Autoware.Universe依赖版本)
  • LGSVL仿真器 2021.3版本

安装步骤

首先安装ROS 2 Galactic基础环境,随后通过Autoware官方提供的自动化脚本完成依赖安装与源码编译。LGSVL仿真器作为独立进程运行,通过ROS 2桥接节点与Autoware通信。

核心实现

以下代码实现LGSVL与Autoware之间的车辆状态订阅与控制指令发布,是仿真环境运行的最小闭环:

# vehicle_bridge.py
import rclpy
from rclpy.node import Node
from autoware_auto_vehicle_msgs.msg import VehicleStateCommand, VehicleKinematicState
from geometry_msgs.msg import PoseStamped

class LGSVLBridge(Node):
    def __init__(self):
        super().__init__('lgsvl_bridge')
        # 订阅Autoware控制指令
        self.cmd_sub = self.create_subscription(
            VehicleStateCommand,
            '/control/vehicle_cmd',
            self.cmd_callback,
            10)
        # 发布车辆状态给Autoware
        self.state_pub = self.create_publisher(
            VehicleKinematicState,
            '/vehicle/kinematic_state',
            10)
        # LGSVL ROS2桥接话题(需在仿真器中启用)
        self.lgsvl_cmd_pub = self.create_publisher(
            PoseStamped,
            '/lgsvl/vehicle_command',
            10)
        self.get_logger().info('LGSVL Bridge 已启动')

    def cmd_callback(self, msg):
        # 将Autoware控制指令转发至LGSVL
        pose_msg = PoseStamped()
        pose_msg.header.stamp = self.get_clock().now().to_msg()
        pose_msg.header.frame_id = 'map'
        pose_msg.pose.position.x = float(msg.longitudinal_accel_mps2)
        pose_msg.pose.position.y = float(msg.lateral_accel_mps2)
        pose_msg.pose.orientation.z = float(msg.steering_tire_angle_rad)
        self.lgsvl_cmd_pub.publish(pose_msg)

def main(args=None):
    rclpy.init(args=args)
    node = LGSVLBridge()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

运行与验证

  1. 启动LGSVL仿真器,加载Autoware示例地图(如San Francisco道路),选择车辆型号为Lexus RX450h
  2. 在LGSVL界面启用"ROS 2 Bridge"功能,设置桥接地址为本机
  3. 运行桥接节点:python3 vehicle_bridge.py
  4. 启动Autoware规划与控制模块:ros2 launch autoware_launch planning_launch.py

通过条件

  • 桥接节点启动后无报错,日志显示"LGSVL Bridge 已启动"
  • 在LGSVL中手动设置目标点后,车辆模型开始沿规划路径移动
  • 执行ros2 topic echo /vehicle/kinematic_state能持续收到车辆位置与速度信息
  • 执行ros2 topic echo /lgsvl/vehicle_command能看到非零控制指令输出

满足以上全部条件即表示Autoware与LGSVL仿真器已完成基础联调,可进行后续算法开发验证。