最新消息:

linorobot入门教程-TF

ROBOTS/其他机器人 少儿编程 1677浏览 0评论
linorobot入门教程

linorobot入门教程-TF

说明:

  • TF是ROS确定机器人位置和坐标系之间关系的方式。
  • 有关TF的更全面的解释,请点击此处

机器人坐标系:

  • odom -> base_link

这种变换是机器人当前位置与其原点之间的关系。 当/odom话题从lino_base_node发布时,此变换将同时广播。
以下是广播TF的代码块。位于/linorobot/src/lino_base_node.cpp

geometry_msgs::Quaternion odom_quat = tf::createQuaternionMsgFromYaw(theta);
geometry_msgs::TransformStamped odom_trans;
odom_trans.header.frame_id = "odom";
odom_trans.child_frame_id = "base_link";

//robot's position in x,y, and z
odom_trans.transform.translation.x = x_pos;
odom_trans.transform.translation.y = y_pos;
odom_trans.transform.translation.z = 0.0;

//robot's heading in quaternion
odom_trans.transform.rotation = odom_quat;
odom_trans.header.stamp = current_time;
//publish robot's tf using odom_trans object
odom_broadcaster.sendTransform(odom_trans)
  • base_link -> laser

这种转换是激光雷达和机器人基座之间的静态关系。 基本上,这告诉ROS激光雷达在机器人基座中心的x,y和z轴上的偏移量。 设想一个激光雷达(安装在10厘米长的基座后面)可以检测机器人前方10厘米的障碍物。 机器人与障碍物的实际距离为5厘米,因为从基座中心向后方偏移5厘米。 如果没有这种变换,机器人会过早地撞到障碍物,因为它认为障碍物距离障碍物仅5厘米时仍然距离10厘米。

配置雷达的TF:

  • 打开laser.launch
roscd linorobot/launch
nano laser.launch
  • 从底座中心确定激光雷达的位置,并将“args”中的前三个数字更改为您测量的偏移量。
  • 这些数值意味着激光雷达的向前6.5厘米,距离地面19.6厘米。
  • 您可以点击这里了解更多关于配置变换的信息

检测雷达TF

  • 机器人电脑,打开2个终端:
  • 第一个终端:
roslaunch linorobot bringup.launch
  • 第二个终端:
roslaunch linorobot laser.launch
  • 开发电脑,执行:
roscd lino_visualize/rviz
rviz -d laser.rviz
  • 放置机器人离墙1米远,检查RVIZ是否机器人离墙约1米,每个方格是1平方
  • 如图:

linorobot入门教程-TF

问题:

  • 如果在rviz上检测到的墙壁和机器人之间与实际距离不匹配,请确认laser.launch中定义的x,y和z偏移量是否正确。

您必须 登录 才能发表评论!