CARLA_autoware的配置流程(五)自定义高精地图导入运行

CARLA_autoware的配置流程(五)自定义高精地图导入运行

2023年 09月 19日 星期二 16:32:06 CST

此文件记录了在 CARLA 录制并创建了高精地图后 导入并运行

当在仿真中录制并创建好了 PCD 地图后,然后到 Unity 或者在 Vector Map Builder (ADAS Format) - Autoware Tools (tier4.jp) 中绘画完成后,需要将生成的矢量地图数据导入并调用

参考文件
https://zhuanlan.zhihu.com/p/411971947

bag包信息

rosbag info carla_lidar_test.bag 
path:        carla_lidar_test.bag
version:     2.0
duration:    1:26s (86s)
start:       Jan 01 1970 08:01:09.90 (69.90)
end:         Jan 01 1970 08:02:36.05 (156.05)
size:        205.7 MB
messages:    1724
compression: none [257/257 chunks]
types:       sensor_msgs/PointCloud2 [1158d486dd51d683ce2f1be655c3c181]
topics:      /points_raw   1724 msgs    : sensor_msgs/PointCloud2

保存的地图信息

~/.autoware
└── test
    └── map
        └── carla_autoware
            ├── carla_map_test.pcd
            ├── dtlane.csv
            ├── lane.csv
            ├── line.csv
            ├── node.csv
            ├── point.csv
            └── whiteline.csv

启动文件编辑

修改启动文件

/home/heying/carla_ws/src/carla-autoware/carla-autoware-agent/agent/launch/my_map_test.launch

<launch>

  <param name="/use_sim_time" value="true" />
  <param name="tf_x" value="0.45" />
  <param name="tf_y" value="0.0" />
  <param name="tf_z" value="1.35" />
  <param name="tf_yaw" value="0.0" />
  <param name="tf_pitch" value="0.0" />
  <param name="tf_roll" value="0.0" />
  <param name="localizer" value="velodyne" />

  <node pkg="tf" type="static_transform_publisher" name="base_link_to_localizer" args="0.45 0.0 1.45 0.0 0.0 0.0 /base_link /velodyne 10" />
  <node pkg="tf" type="static_transform_publisher" name="world_to_map" args="0 0 0 0 0 0 /world /map 10"/>

  <!--主要修改的就是以下的部分 这里需要指定指定 CARLA 的地图名称和 csv 与 PCD 的放置路径和 PCD 的名称-->
  <arg name='town' default='Town01'/>
  <arg name='path' default='/home/heying/.autoware/test/map/carla_autoware'/>
  <arg name='pcd_name' default='carla_map_test.pcd'/>

  <!--
    # point cloud map #
  -->
  <include file='$(find map_file)/launch/points_map_loader.launch'>
      <arg name='path_pcd' value='$(arg path)/$(arg pcd_name)'/>
  </include>

  <!--
    # vector map #
  -->
  <node pkg='map_file' type='vector_map_loader' name='vector_map_loader' args='
      $(arg path)/dtlane.csv
      $(arg path)/lane.csv
      $(arg path)/line.csv
      $(arg path)/node.csv
      $(arg path)/point.csv
      $(arg path)/whiteline.csv' 
  />

  <node pkg="rviz" type="rviz" name="carla_rviz" args=" -d $(find carla_autoware_agent)/agent/rviz/test_map.rviz" />


  <!--<include file='$(find map_file)/launch/lanelet2_map_loader.launch'>-->
    <!--<arg name='file_name' value='$(env CARLA_AUTOWARE_CONTENTS)/maps/vector_maps/lanelet2/$(arg town).osm'/>-->
  <!--</include>-->

  <!--
    # wayarea2grid #
    Out: /grid_map_wayarea [grid_map_msgs::GridMap]
    Out: /occupancy_wayarea [nav_msgs::OccupancyGrid] 

  <include file='$(find object_map)/launch/wayarea2grid.launch'>
  </include>
  -->
</launch>

在这里插入图片描述

然后启动 地图导入正常

在这里插入图片描述

然后启动测试

# CARLA 仿真
cd ~/CARLA_0.9.11
bash CarlaUE4.sh -prefernvidia

# CARLA to ROS
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch town:=town01

# 话题转发
roslaunch topic_forwarding autoware_carla.launch

# 自定义地图
roslaunch carla_autoware_agent my_map_test.launch 

# 传感器
roslaunch carla_autoware_agent my_sensing.launch 

# 定位
roslaunch carla_autoware_agent my_localization.launch

rviz 中给定位 发现问题

[RViz]-[2D Pose Estimate]

在这里插入图片描述

启动文件修改

在carla ros bridge中,Carla Spawn Objects节点下提供一项功能,当接收到2D pose initial话题(rviz中的2D Pose Estimate小按钮)后,会按照这个话题的位置和方向信息更新carla中车辆的位置,即使carla提供了点云图,用于rviz中的环境显示,但是carla仿真器与rviz中的坐标并不对应。简言之:在rviz中生成的位姿,很可能会导致carla中车辆从新初始化在不可预测的地方(比如生成在楼顶或者直接脱模)。

其次,在运行autoware中ndt_matching这些lidar定位节点时,需要使用rviz中的2D Pose Estimate进行初始位姿估计,一旦点了这个按钮,会导致carla中车辆位姿二次更新。所以,在没有找到rviz中点云图与carla仿真环境的坐标对应关系之前,还是注释掉位姿二次更新部分比较好。

检查了启动文件 launch 的嵌套逻辑 修改两个文件

修改一

修改CARLA to ROS的启动文件 为了不影响原先的配置 复制粘贴为carla_ros_bridge_with_example_ego_vehicle_test.launch

/home/heying/carla_ws/src/ros-bridge/carla_ros_bridge/launch/carla_ros_bridge_with_example_ego_vehicle_test.launch

<!-- -->
<launch>
  <!-- CARLA connection -->
  <arg name='host' default='localhost'/>
  <arg name='port' default='2000'/>
  <arg name='timeout' default='10'/>

  <!-- Ego vehicle -->
  <arg name='role_name' default='ego_vehicle'/>
  <arg name="vehicle_filter" default='vehicle.*'/>
  <arg name="spawn_point" default=""/><!-- use comma separated format "x,y,z,roll,pitch,yaw" -->

  <!-- Map to load on startup (either a predefined CARLA town (e.g. 'Town01'), or a OpenDRIVE map file) -->
  <arg name="town" default=''/>

  <!-- Enable/disable passive mode -->
  <arg name='passive' default=''/>

  <!-- Synchronous mode-->
  <arg name='synchronous_mode_wait_for_vehicle_control_command' default='False'/>
  <arg name='fixed_delta_seconds' default='0.05'/>


  <include file="$(find carla_ros_bridge)/launch/carla_ros_bridge.launch">
    <arg name='host' value='$(arg host)'/>
    <arg name='port' value='$(arg port)'/>
    <arg name='town' value='$(arg town)'/>
    <arg name='timeout' value='$(arg timeout)'/>
    <arg name='passive' value='$(arg passive)'/>
    <arg name='synchronous_mode_wait_for_vehicle_control_command' value='$(arg synchronous_mode_wait_for_vehicle_control_command)'/>
    <arg name='fixed_delta_seconds' value='$(arg fixed_delta_seconds)'/>
  </include>

  <!-- the ego vehicle, that will be controlled by an agent (e.g. carla_ad_agent) -->
  <!-- 2023年 09月 19日 星期二 16:46:25 CST 启动文件修改 用于取消掉 CARLA 的 2D pose initial 实时更新位置信息的功能-->
  <include file="$(find carla_spawn_objects)/launch/carla_example_ego_vehicle_test.launch">
    <arg name="objects_definition_file" value='$(find carla_spawn_objects)/config/objects.json'/>
    <arg name='role_name' value='$(arg role_name)'/>
    <arg name="spawn_point_ego_vehicle" value="$(arg spawn_point)"/>
    <arg name="spawn_sensors_only" value="false"/>
  </include>

  <include file="$(find carla_manual_control)/launch/carla_manual_control.launch">
    <arg name='role_name' value='$(arg role_name)'/>
  </include>

</launch>

修改二

修改CARLA to ROS启动文件内嵌套的文件 为了不影响原先的配置 复制粘贴为carla_example_ego_vehicle_test.launch

/home/heying/carla_ws/src/ros-bridge/carla_spawn_objects/launch/carla_example_ego_vehicle_test.launch

<!-- -->
<launch>
  <arg name="role_name" default="ego_vehicle"/>
  <arg name="objects_definition_file" default='$(find carla_spawn_objects)/config/objects.json'/>
  <!-- use comma separated format "x,y,z,roll,pitch,yaw", 
    and parameter name spawn_point_<vehicle_name>. You can add
    as many spawn_point as vehicles defined in objects_definition_file-->
  <!-- <arg name="spawn_point_ego_vehicle" default='390.0,-87.0,0.3,0.0,0.0,90.0'/> -->
  <arg name="spawn_point_ego_vehicle" default=''/>
  <arg name="spawn_sensors_only" default="false"/>

  <arg name="control_id" default="control"/>

  <include file="$(find carla_spawn_objects)/launch/carla_spawn_objects.launch">
    <arg name="objects_definition_file" value='$(arg objects_definition_file)'/>
    <arg name="spawn_point_ego_vehicle" value="$(arg spawn_point_ego_vehicle)"/>
    <arg name="spawn_sensors_only" value="$(arg spawn_sensors_only)" />
  </include>

  <!-- 取消掉 CARLA 的 2D pose initial 实时更新位置信息的功能  2023年 09月 19日 星期二 15:45:12 CST -->
  <!-- This nodes allows to respawn the vehicle <role_name> by publishing on topic /initialpose -->
  <!-- <include file="$(find carla_spawn_objects)/launch/set_initial_pose.launch">
    <arg name="role_name" value="$(arg role_name)"/>
    <arg name="control_id" value="$(arg control_id)"/>
  </include> -->
</launch>

在这里插入图片描述

再次启动测试

# CARLA 仿真
cd ~/CARLA_0.9.11
bash CarlaUE4.sh -prefernvidia

# CARLA to ROS
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle_test.launch town:=town01

# 话题转发
roslaunch topic_forwarding autoware_carla.launch

# 自定义地图
roslaunch carla_autoware_agent my_map_test.launch 

# 传感器
roslaunch carla_autoware_agent my_sensing.launch 

# 定位
roslaunch carla_autoware_agent my_localization.launch

定位正常 但是由于 CARLA 的每次重新启动生成都是随机位置 所以需要手动将仿真内的车辆开到高精地图指定的起点

在这里插入图片描述

然后这里有 TF 转换的问题
在这里插入图片描述

这个在 autoware 的测试中不是重要的,先跳过

可以在 rviz 中的 TF 可视化选项卡的所有 ego...开头的取消选择

# 全局路径
roslaunch carla_autoware_agent my_mission_planning.launch

# 目标点
[RViz]-[2D Nav Goal]

# 局部路径
roslaunch carla_autoware_agent my_motion_planning.launch 

在这里插入图片描述

继续流程

# 驱动控制
roslaunch carla_twist_to_control carla_twist_to_control.launch role_name:="ego_vehicle"

启动正常运行

在这里插入图片描述

在这里插入图片描述

到达终点

在这里插入图片描述

至此 自定义高精地图的导入与运行流程至此结束

上一节 CARLA_autoware的配置流程(四)在 CARLA 中生成自定义高精地图-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值