正在加载图片...
"move base_simple/goal" geometry_msgs/PoseStamped map_server amcl nove_base /map" nav msgs/GetMap giobal_planner global_costmap intema nav msgs/Pa ecovery beha transtorms sensor topics ocaI olann cal_costmap provided node optional provided node platform specific node 1. 创建transform 导航包需要知道传感器,车轮和关节相对于机器人的位置。 为此,我们使用TF(Transform Frames)软件库。TF管理一个变换树。当然你可以手 动用数学公式来做这个变换,但是如果有很多帧需要计算,这会有点复杂和凌乱。 利用TF,我们可以为机器人添加更多的传感器和部件,而T℉将会为我们处理好所有的位 姿关系。 如果我们把激光放在坐标系base_1ink的原点以上20厘米,以后10厘米的我们需要添加 在转换树中添加一个带有这些偏移量的新的坐标系。 一旦插入和创建成功,我们可以很容易地知道激光 相对于base_link或车轮的位置。我们唯一需要做的是调用TF库并获得这个转换。 1.1发布传感器信息 在chapter7?_tutorials/src下创建一个新文件名为tf_broadcaster.cpp,输入一下代码 #include <ros/ros.h> #include <tf/transform_broadcaster.h> int main(int argc,char**argv)( ros::init(argc,argv,"robot_tf_publisher"); ros::NodeHandle n; ros::Rate r(100); tf::TransformBroadcaster broadcaster; while(n.ok0){ broadcaster.sendTransform( tf::StampedTransform( tf::Transform(tf::Quaternion(0,0,0,1),tf::Vector3(0.1, 0.0,0.2) 3.- 3 - 1. 创建transform 导航包需要知道传感器,车轮和关节相对于机器人的位置。 为此,我们使用TF(Transform Frames)软件库。TF管理一个变换树。 当然你可以手 动用数学公式来做这个变换,但是如果有很多帧需要计算,这会有点复杂和凌乱。 利用TF,我们可以为机器人添加更多的传感器和部件,而TF将会为我们处理好所有的位 姿关系。 如果我们把激光放在坐标系base_link的原点以上20厘米,以后10厘米的我们需要添加 在转换树中添加一个带有这些偏移量的新的坐标系。 一旦插入和创建成功,我们可以很容易地知道激光 相对于base_link或车轮的位置。 我们唯一需要做的是调用TF库并获得这个转换。 1.1发布传感器信息 在chapter7_tutorials/src下创建一个新文件名为tf_broadcaster.cpp,输入一下代码 #include <ros/ros.h> #include <tf/transform_broadcaster.h> int main(int argc, char** argv){ ros::init(argc, argv, "robot_tf_publisher"); ros::NodeHandle n; ros::Rate r(100); tf::TransformBroadcaster broadcaster; while(n.ok()){ broadcaster.sendTransform( tf::StampedTransform( tf::Transform(tf::Quaternion(0, 0, 0, 1), tf::Vector3(0.1, 0.0, 0.2))
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有