【ROS学习】-tf学习-tf使⽤过程中遇到的坑.....
⽂章⽬录
写在前⾯
try catch的使用方法本博客主要记录 ⾃⼰在使⽤ROS - tf 过程中,也给朋友们⼀些参考,遇到的⼀些坑…
1.使⽤tf过程中,topic的 frame_id 不能包含 ‘/’,只能是字母、数字、下划线组成。
1.1 问题描述
⾃⼰在如下 c++ 程序中使⽤ lookupTransform() 进⾏查 tf 的时候,
try
{
geometry_msgs::TransformStamped trans = tfbuf_.lookupTransform( params_.frame_ids_["base_link"], msg->header.frame_id, ros::Time(0));
}
catch(tf2::TransformException& e)
{
ROS_INFO("Failed to transform : %s", e.what());
return;
}
在运⾏的时候 出现如下报错:
Failed to transform : Invalid argument "/imu" passed to lookupTransform argument source_frame in tf2 frame_ids cannot start with a '/' like:
出现这个报错的原因是 ⾃⼰的数据集中 imu 数据的 frame_id 是 /imu,但是tf 认为 名称为 /imu 的 frame是⽆效的的,所以对于frame_id 的设置,只能是由 字母、下划线 组成。
1.2 解决⽅法
解决⽅法很简单,把数据集中的话题 imu 数据的 frame_id 从 /imu 改为 imu。也就是说,在 imu 的驱
动包中,修改 参数 frame_id , 从/imu 改为 imu,就可以啦~~~
(刚开始⾃⼰还没有使⽤ catch (tf2::TransformException& e),仅仅使⽤catch,也没有在 catch 中打印异常信息,所以搞得⾃⼰郁闷好久都没到问题在哪,所以 try catch 太好⽤了啊)
2. 陆续更新中…