正在加载图片...
\"base_laser to \"base_link\":%s",ex.what(); int main(int argc,char**argv)( ros::init(argc,argv,"robot_tf_listener"); ros::NodeHandle n; tf::TransformListener listener(ros::Duration(10)); //we'll transform a point once every second ros::Timer timer n.createTimer(ros::Duration(1.0), boost::bind(&transformPoint,boost::ref(listener))); ros::spin(; } 同样在CMakelist..tbxt中添加新可执行文件。编译包并运行两个node rosmake chapter7_tutorials rosrun chapter7_tutorials tf_broadcaster rosrun chapter7_tutorials tf_listener 可以在终端上获得以下输出 [INFO][1368521854.336910465J:base_laser::(1.00,2.00.0.00)--> base_link:(1.10,2.00,0.20)at time1368521854.33 [INFo][1368521855.336347545J:base_laser::(1.00,2.00.0.00)--> base_link:(1.10,2.00,0.20)at time1368521855.33 这就意味着在节点中发布的相对于base_laser的一个(1,2,0)的点,在base_Iink中的位 置为(1.1,2,0.2)。 这样可以看到,tf函数库提供了所以需要数学函数可以用来获得一个点或者joit在其他 坐标系中的位姿。 一个TF树定义了所有不同坐标系间的移动和旋转变换。 测试以下例子,进一步理解℉。使用前面D模型和仿真实验中完成的一个小车,并在车 背上添加一个其它的laser -5-- 5 - \"base_laser\" to \"base_link\": %s", ex.what()); } int main(int argc, char** argv){ ros::init(argc, argv, "robot_tf_listener"); ros::NodeHandle n; tf::TransformListener listener(ros::Duration(10)); //we'll transform a point once every second ros::Timer timer = n.createTimer(ros::Duration(1.0), boost::bind(&transformPoint, boost::ref(listener))); ros::spin(); } 同样在CMakelist.txt中添加新可执行文件。编译包并运行两个node $ rosmake chapter7_tutorials $ rosrun chapter7_tutorials tf_broadcaster $ rosrun chapter7_tutorials tf_listener 可以在终端上获得以下输出 [ INFO] [1368521854.336910465]: base_laser: (1.00, 2.00. 0.00) -----> base_link: (1.10, 2.00, 0.20) at time 1368521854.33 [ INFO] [1368521855.336347545]: base_laser: (1.00, 2.00. 0.00) -----> base_link: (1.10, 2.00, 0.20) at time 1368521855.33 这就意味着在节点中发布的相对于base_laser的一个(1,2,0)的点,在base_link中的位 置为(1.1,2,0.2)。 这样可以看到,tf函数库提供了所以需要数学函数可以用来获得一个点或者joint在其他 坐标系中的位姿。 一个TF树定义了所有不同坐标系间的移动和旋转变换。 测试以下例子,进一步理解TF。使用前面3D模型和仿真实验中完成的一个小车,并在车 背上添加一个其它的laser
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有