-
Notifications
You must be signed in to change notification settings - Fork 124
Open
Description
在标定是发现,如果雷达与相机朝向一样的情况下,标定是很准确的,但是如果雷达倒立,相机正立(机器人头部的安装方式),会出现标定结果有很大错误的问题
我的雷达相机安装方式
对程序解读后,发现程序中在include/common_lib.h函数中有一段是对相机与雷达位姿的定义,这里我增加了对倒装雷达的变换关系。
if (axis_mode == "lidar") {
for (const auto& p : *pc) {
pcl::PointXYZ pt;
pt.x = -p.y; // LiDAR Y -> Cam -X
pt.y = -p.z; // LiDAR Z -> Cam -Y
pt.z = p.x; // LiDAR X -> Cam Z
// 正装雷达的变换(LiDAR: X前Y左Z上 -> Camera: X右Y下Z前)
// pt.x = -p.y; // LiDAR Y(左)-> Cam -X(左)
// pt.y = -p.z; // LiDAR Z(上)-> Cam -Y(上)
// pt.z = p.x; // LiDAR X(前)-> Cam Z(前)
// 倒装雷达的变换(绕X轴旋转180°,Y和Z轴反向)
pt.x = p.y; // LiDAR Y(右)-> Cam X(右)
pt.y = p.z; // LiDAR Z(下)-> Cam Y(下)
pt.z = p.x; // LiDAR X(前)-> Cam Z(前)
work_pc->push_back(pt);
}
if (axis_mode == "lidar") {
for (auto& point : v->points) {
// 正装雷达的逆变换
// float x_new = point.z; // Cam Z -> LiDAR X
// float y_new = -point.x; // Cam -X -> LiDAR Y
// float z_new = -point.y; // Cam -Y -> LiDAR Z
// 倒装雷达的逆变换
float x_new = point.z; // Cam Z -> LiDAR X
float y_new = -point.x; // Cam -X -> LiDAR Y
float z_new = -point.y; // Cam -Y -> LiDAR Z
float y_new = point.x; // Cam X -> LiDAR Y
float z_new = point.y; // Cam Y -> LiDAR Z
point.x = x_new;
point.y = y_new;
point.z = z_new;
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels


