这是相机到激光的外参文件,我需要更改rotation的w,x,y,z,但是不改其他的node
header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: velodyne128
child_frame_id: right_front
transform:
translation:
x: 0.51
y: 0.31
z: -0.10
rotation:
w: 0.20917936691977584
x: -0.393691854453879
y: 0.74159674408047471
z: -0.50128333840348849
YAML::Node _baseNode = YAML::LoadFile("right_front_extrinsics.yaml");
_baseNode["transform"]["rotation"]["w"]= q.w;
_baseNode["transform"]["rotation"]["x"]= q.x;
_baseNode["transform"]["rotation"]["y"]= q.y;
_baseNode["transform"]["rotation"]["z"]= q.z;
ofstream fout("right_front_extrinsics.yaml"); //保存
fout << _baseNode;
fout.close();
需要注意的是,这里先加载yaml文件,再覆盖,最后写入。
参考:C++ YAML: How to edit/write to a node in a .yaml file - Stack Overflow