1、先行将天准授时(主从机)及授时三行脚本(主机)打开
主从机起终端授时:
sudo tztek-jetson-tool-cpld-test -d /dev/ttyTHS1 -t 3 -l 232 -b 9600
sudo systemctl restart gpsd
sudo systemctl restart chrony
主机起终端(目前采用的是交换机,只对一个网口进行天准授时,后续采用域控制器直插就需要对每一个网口进行授时):
sudo jetson_clocks
sudo ptp4l -i eth1 -H -m --step_threshold=1
在主机上新起一个终端(不关闭上一个终端),将主机的系统时间同步到eth1网口 (目前采用的是交换机,只对一个网口进行天准授时,后续采用域控制器直插就需要对每一个网口进行授时):
sudo phc2sys -s CLOCK_REALTIME -c eth1 -w -E linreg -m -S 0.1
2、128线束激光雷达与32线束激光雷达时间相差8小时(UTC+8/UTC+0),保持时间一致性,在128线束激光雷达驱动中找到 lslidar_driver.cpp文件,找到PTP授时(硬件授时)在
if (use_time_service)
{
if ("ch128x1" == lidar_type || "ch64w" == lidar_type)
{
if (packet->data[1205] == 0x01)
{
this->packetTimeStamp[4] = packet->data[1199];
this->packetTimeStamp[5] = packet->data[1198];
this->packetTimeStamp[6] = packet->data[1197];
}
else if (packet->data[1205] == 0x02)
{
this->packetTimeStamp[4] = packet->data[1199];
}
// struct tm cur_time{};
memset(&cur_time, 0, sizeof(cur_time));
cur_time.tm_sec = this->packetTimeStamp[4];
cur_time.tm_min = this->packetTimeStamp[5];
cur_time.tm_hour = this->packetTimeStamp[6];
cur_time.tm_mday = this->packetTimeStamp[7];
cur_time.tm_mon = this->packetTimeStamp[8] - 1;
cur_time.tm_year = this->packetTimeStamp[9] + 2000 - 1900;
packet_timestamp_s = timegm(&cur_time);
if (time_service_mode == "gps")
{ // gps
packet_timestamp_ns = (packet->data[1203] +
packet->data[1202] * pow(2, 8) +
packet->data[1201] * pow(2, 16) +
packet->data[1200] * pow(2, 24)) *
1e3; // ns
}
else
{ // ptp
packet_timestamp_ns = packet->data[1203] +
packet->data[1202] * pow(2, 8) +
packet->data[1201] * pow(2, 16) +
packet->data[1200] * pow(2, 24); // ns
}
//packet_timestamp = packet_timestamp_s + packet_timestamp_ns * 1e-9;
packet_timestamp = packet_timestamp_s + 28800 + packet_timestamp_ns * 1e-9;
packet_timestamp_s后+28800及在128线束激光雷达的params/lslidar_t23_ch128x1_main.yaml文件中use_time_service:true即可
/ch128x1_main/lslidar_driver_soild:
ros__parameters:
device_ip: 192.168.1.200
lidar_type: ch128x1 # 雷达类型 ch16x1/ch64w/ch128x1/ch128s1
msop_port: 2000
difop_port: 2001
# pcl_type: true
pcl_type: false #false
add_multicast: false
group_ip: 224.1.1.2
frame_id: laser_link
min_range: 0.15
max_range: 60.0
packet_rate: 6737.0
angle_disable_min: 0.0
angle_disable_max: 0.0
topic_name: /lslidar/main #主雷达
horizontal_angle_resolution: 0.2 #10Hz:0.2 20Hz:0.4 5Hz: 0.1
use_time_service: true #是否使用GPS/ptp/ntp授时
echo_num: 0 #仅双回波模式下有效,0表示发布所有点云,1表示发布第一次回波点云,2表示发布第二次回波点云
publish_scan: false
channel_num: 8
lidar_index: 1
is_pretreatment: false #是否开启预处理