ROS是机器人操作系统的简称,本文介绍ROS应用开发入门,TF坐标系广播与监听的编程。小乌龟仿真中有2只乌龟,键盘控制第1只乌龟走动,2只乌龟都都广播自己的坐标。监听器听取2个乌龟的坐标,获得相对位置,控制第2只乌龟不断追随第1只乌龟。代码是c++。测试验证有2种方式,普通方式和launch 方式。
工程包建立
在 ROS 开发应用准备:创建工作空间 一文中建立了ROS工作空间,现在就建立一个功能包:
cd ~/catkin_ws/src
catkin_create_pkg learning_tf roscpp rospy tf turtlesim
第1行是回到工作空间的src 目录,功能包建立必须在这个目录下运行。
第2行是建立功能包的命令,第一个参数是功能包的名字,这里是learning_tf , 接下来是功能包的依赖库,这里是roscpp rospy tf turtlesim共4个依赖库。
上面命令执行后,可以在src 目录下看到有一个目录,名字是learning_tf,其下有下面内容:
CMakeLists.txt include package.xml src
广播器代码
在工程目录的 src 目录下,也是~/catkin_ws/src/learning_tf/src 目录, 建立一个文件turtle_tf_broadcaster.cpp,
cd ~//catkin_ws/src/learning_tf/src
nano turtle_tf_broadcaster.cpp
内容为:
/**
* 该例程产生tf数据,并计算、发布turtle2的速度指令
*/
#include <ros/ros.h>
#include <tf/transform_broadcaster.h>
#include <turtlesim/Pose.h>
std::string turtle_name;
void poseCallback(const turtlesim::PoseConstPtr& msg)
{
// 创建tf的广播器
static tf::TransformBroadcaster br;
// 初始化tf数据
tf::Transform transform;
transform.setOrigin( tf::Vector3(msg->x, msg->y,