rosserial_arduino 中文教程5: 使用time和TF

使用时间和TF

rosserial_arduino 中文教程 专栏
原文:http://wiki.ros.org/rosserial_arduino/Tutorials/Time%20and%20TF

**描述:**本教程演示如何使用ros::Time和TF在Arduino上创建TF发布服务器。

**教程级别:**中级

**下一教程:**添加自定义消息

目录

在Arduino上使用时间和TF

守则

代码说明

上传代码

运行代码

进一步阅读

在Arduino上使用时间和TF

rosserial_arduino包包含用于在arduino上生成时间戳的库,这些时间戳与运行roscore实例的PC/平板电脑同步。本教程使用发布tf转换的示例演示如何访问时间。

守则

如果您已经遵循了Arduino IDE设置教程,那么您可以从Arduino示例菜单中选择ros_lib->TimeTf来打开下面的草图。

这将在IDE中打开以下代码:

/*
 * rosserial Time and TF Example
 * Publishes a transform at current time
 */

#include <ros.h>
#include <ros/time.h>
#include <tf/transform_broadcaster.h>

ros::NodeHandle  nh;

geometry_msgs::TransformStamped t;
tf::TransformBroadcaster broadcaster;

char base_link[] = "/base_link";
char odom[] = "/odom";

void setup()
{
  nh.initNode();
  broadcaster.init(nh);
}

void loop()
{
  t.header.frame_id = odom;
  t.child_frame_id = base_link;
  t.transform.translation.x = 1.0;
  t.transform.rotation.x = 0.0;
  t.transform.rotation.y = 0.0;
  t.transform.rotation.z = 0.0;
  t.transform.rotation.w = 1.0;
  t.header.stamp = nh.now();
  broadcaster.sendTransform(t);
  nh.spinOnce();
  delay(10);
}

代码说明

现在,让我们把代码分解。

错误:找不到代码块,我们需要包含典型的ROS内容以及转换广播程序。

错误:接下来找不到代码块,我们实例化要使用的TransformStamped消息和广播程序。我们还需要指定要为其发布转换的帧的名称。

错误:在setup()函数中找不到代码块,我们必须在TransformBroadcaster上调用init(),并将节点句柄作为参数。如果不这样做,广播公司就不能正确地发布。

错误:在loop()函数中找不到代码块,我们将填充转换的字段。帧id设置为正确的字符串名称,并设置平移和旋转的值。

错误:找不到调用nh.now()的代码块,将当前时间作为ros::time实例返回,就像使用roscpp的ros::time::now()一样。

错误:最后找不到代码块,我们发布转换,然后旋转一次并稍等片刻,然后再次执行转换。转换应始终以固定的速率发布,尽管通常数据字段将从实际数据中填充。

上传代码

要将代码上载到Arduino,请使用Arduino IDE中的上载功能。这与上传其他草图没有区别。

运行代码

现在,在新的终端窗口中启动roscore:

roscore

接下来,运行rosserial客户机应用程序,将Arduino消息转发给ROS的其余部分。确保使用正确的串行端口:

rosrun rosserial_python serial_node.py/dev/ttyUSB0

最后,可以使用以下方法检查转换:

rosrun tf tf_echo odom base_link

默认情况下,这将大约每秒回显一次从Arduino发送的转换。请注意,Arduino可能以更高的速率广播(当连接到57600时,Mega2560以约57hz的频率发布)

或者,通过运行:

rosrun tf view_frames

最后一个命令将运行约5秒,并在运行该命令的目录中生成“frames.pdf”文件。

进一步阅读

有关使用时间实例的更多信息,请参见rosserial/Overview。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值