#!/usr/bin/env python
#
# Copyright (c) 2019 Intel Corporation
#
# This work is licensed under the terms of the MIT license.
# For a copy, see <https://opensource.org/licenses/MIT>.
#
"""
Control Carla ego vehicle by using AckermannDrive messages
"""
import ros_compatibility as roscomp
from ros_compatibility.node import CompatibleNode
# from nav_msgs.msg._Path import globalroute_msg
from nav_msgs.msg import Path
from geometry_msgs.msg import PoseStamped
import csv
ROS_VERSION = roscomp.get_ros_version()
class Send_globalroute(CompatibleNode):
def __init__(self):
self.global_route_publisher = self.new_publisher(
Path,
"/carla/ego_vehicle/waypoints",
qos_profile=1)
self.csv_data= open("./src/ros-bridge/ros-bridge-master/carla_globalroute/src/global_route/test.csv")
self.reader = csv.reader(self.csv_data)
def run(self):
self.info=Path()
self.info_point=PoseStamped()
line_cout=0
for row in self.reader:
if line_cout==0:
line_cout=line_cout+1
continue
else:
self.info_point.pose.position.x=float(row[4])
self.info_point.pose.position.y=float(row[5])
self.info_point.pose.position.z=float(row[6])
self.info_point.pose.orientation.x=float(row[7])
self.info_point.pose.orientation.y=float(row[8])
self.info_point.pose.orientation.z=float(row[9])
self.info_point.pose.orientation.w=float(row[10])
self.info.poses.append(self.info_point)
roscomp.loginfo("The path start is:{start} ".format(start=self.info.poses[0]))
roscomp.loginfo("The path end is:{end} ".format(self.info.poses[-1]))
self.csv_data.close()
while not roscomp.shutdown():
self.global_route_publisher.publish(self.info)
def main(args=None):
roscomp.init("carla_send_globalroute", args=args)
try:
Send_globalroute_tmp = Send_globalroute()
Send_globalroute_tmp.run()
except KeyboardInterrupt:
pass
finally:
roscomp.shutdown()
if __name__ == "__main__":
main()
主要是在仿真过程中发送自车全局路径,读取方式是读取csv文件