apollo学习

查看信息

容器内:

cyber_monitor

找到tf_static,右键(或者回车):
在这里插入图片描述
transforms: +[4 items] 处右键:
在这里插入图片描述
transforms: [0]处按逗号键,有:
在这里插入图片描述

record信息

在Apollo容器中输入以下指令记录数据,按ctrl+C停止记录

cyber_recorder record -a -i 600 -o calib_camera2lidar.record
  • -a :表示对所有数据的channel进行记录;
  • -i :表示记录600s为一个数据包,这是为了保证尽量所有数据都在一个包内;
  • -o :指定输出文件的名称。
    查看记录的数据:
cyber_recorder info calib_camera2lidar.record.0000*

其中,calib_camera2lidar.record.0000*为存储记录数据的名称,一般后缀为时间,如calib_camera2lidar.record.0000.20231223214231若只有一个文件,可直接输入用tab键补全,否则,找对应时间的文件,上例中为2023.12.23.21:42:31时间点记录的数据。

lidar数据解析

  1. 修改数据解析脚本
    如果是第一次运行数据解析功能,在/apollo/scripts/文件夹下新建 lidar_parse.sh脚本文件,复制粘贴以下程序:
#! /bin/bash
if [ $# -lt 3 ]; then
	echo "Usage: msf_simple_map_creator.sh [records folder][output folder]
[extrinsic_file] [lidar_type]"
	exit 1
fi

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "${DIR}/.."

source "${DIR}/apollo_base.sh"

GNSS_LOC_TOPIC="/apollo/localization/msf_gnss"
LIDAR_LOC_TOPIC="/apollo/localization/msf_lidar"
FUSION_LOC_TOPIC="/apollo/localization/pose"
ODOMETRY_LOC_TOPIC="/apollo/sensor/gnss/odometry"
GNSS_LOC_FILE="gnss_loc.txt"
LIDAR_LOC_FILE="lidar_loc.txt"
FUSION_LOC_FILE="fusion_loc.txt"
ODOMETRY_LOC_FILE="odometry_loc.txt"

IN_FOLDER=$1
OUT_MAP_FOLDER=$2
EXTRINSIC_FILE=$3
LIDAR_TYPE=${4:-lidar}

PARSED_DATA_FOLDER="$OUT_MAP_FOLDER/parsed_data"
CLOUD_TOPIC="/apollo/sensor/$LIDAR_TYPE/PointCloud2"
#CLOUD_TOPIC="/apollo/sensor/$LIDAR_TYPE/compensator/PointCloud2"

function data_exporter() {
	local BAG_FILE=$1
	local OUT_FOLDER=$2
	/apollo/bazel-bin/modules/localization/msf/local_tool/data_extraction/cyber_record_parser \
		--bag_file $BAG_FILE \
		--out_folder $OUT_FOLDER \
		--cloud_topic $CLOUD_TOPIC \
		--gnss_loc_topic $GNSS_LOC_TOPIC \
		--lidar_loc_topic $LIDAR_LOC_TOPIC \
		--fusion_loc_topic $FUSION_LOC_TOPIC \
		--odometry_loc_topic $ODOMETRY_LOC_TOPIC
}
function poses_interpolation() {
	local INPUT_POSES_PATH=$1
	local REF_TIMESTAMPS_PATH=$2
	local EXTRINSIC_PATH=$3
	local OUTPUT_POSES_PATH=$4
	/apollo/bazel-bin/modules/localization/msf/local_tool/map_creation/poses_interpolator \
		--input_poses_path $INPUT_POSES_PATH \
		--ref_timestamps_path $REF_TIMESTAMPS_PATH \
		--extrinsic_path $EXTRINSIC_PATH \
		--output_poses_path $OUTPUT_POSES_PATH
}

cd $IN_FOLDER
mkdir -p $OUT_MAP_FOLDER
mkdir -p $PARSED_DATA_FOLDER
for item in $(ls -l *.record* | awk '{print $9}'); do
	SEGMENTS=$(echo $item | awk -F'.' '{print NF}')
	DIR_NAME=$(echo $item | cut -d . -f ${SEGMENTS})
	DIR_NAME="${PARSED_DATA_FOLDER}/${DIR_NAME}"
	mkdir -p ${DIR_NAME}
	
	data_exporter "${item}" "${DIR_NAME}"
	poses_interpolation "${DIR_NAME}/pcd/${ODOMETRY_LOC_FILE}"
"${DIR_NAME}/pcd/pcd_timestamp.txt" "${EXTRINSIC_FILE}"
"${DIR_NAME}/pcd/corrected_poses.txt"

done

echo "Done."

注意:如果在室内标定,由于没有gps信号、无运动,所以需要将点云的topic改为原始的激光
topic( /apollo/sensor/lidar/PointCloud2 )。数据解析的脚本提供的是一个数据解析运行
的模板,后续的针对不同类型的数据解析,需要根据消息类型等信息及时修改此脚本。

  1. 执行数据解析
    • 运行数据解析脚本文件
bash scripts/lidar_parse.sh \
> /apollo/data/bag/calib_camera2lidar \
> /apollo/data/bag/calib_camera2lidar \
> /apollo/modules/calibration/data/mkz_example/camera_params \      
> /apollo/modules/calibration/data/mkz_example/velodyne_params/velodyne64_novatel_extrinsics_example.yaml \
> lidar
#注意:此处的雷达外参文件不起作用,只是指令结构需要
# 此处的mkz_example为车辆名称,可以换为自己所用的车辆名称

会生成/apollo/data/bag/calib_camera2lidar/parsed_data/文件夹,里面存放了Lidar点云的
pcd文件,用于之后标定流程。

手动控车

在Apollo容器中使用命令:

 bash scripts/canbus_teleop.sh

控制方法:

I0122 17:22:30.044783 509383 scheduler.cc:55] [teleop]create croutine: teleop_/apollo/canbus/chassis
Teleop:
Reading from keyboard now.
---------------------------
Use arrow keys to drive the car.
 
=====================    KEYBOARD MAP   ===================
HELP:               [h]     |
Set Action:         [m]+Num
                     0 RESET ACTION
                     1 START ACTION
                     2 VIN_REQ ACTION

-----------------------------------------------------------
Set Gear:           [G]+Num
                     0 GEAR_NEUTRAL
                     1 GEAR_DRIVE
                     2 GEAR_REVERSE
                     3 GEAR_PARKING
                     4 GEAR_LOW
                     5 GEAR_INVALID
                     6 GEAR_NONE

-----------------------------------------------------------
Throttle/Speed up:  [W]     |  
Brake/Speed down:   [S]     |  
Steer LEFT:         [A]     |  Steer RIGHT:        [D]
Parking Brake:      [P]     |  Emergency Stop      [E]
Left/Right Lamp:    [Q]     |  Low beam            [L]

-----------------------------------------------------------
Exit: Ctrl + C, then press enter to normal terminal
===========================================================
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值