zoukankan      html  css  js  c++  java
  • 02---控制移动底座7

    我们到了吗?根据测量来到达目的距离

    机器人的基处理器节点利用测程法和PID控制来把运行要求转化成现实世界的速度。这个过程的精确度和可靠性依赖于机器人内部的感应器、校准过程的精确度和周围环境的条件。

    机器人通过对外部的测量获得自己的位置和方向,是可以对机器人的内部测量进行补充的。举例来说,机器人可以利用ROS的ar_pose包、ar_kinect包或ar_track_alvar包,根据诸如基准线等固定在墙上的可视标准,得到机器人在房间中相对精确的定位。一个相似的技术利用的是环境中的可视的标识来做定位,而不是人工标志物(ccny_rgbd_tools,rgbdslam)。还有一些包(laser_scan_matcher)使用激光扫描来定位。室外机器人通常使用GPS,而室内机器人可以使用其他主动定位技术,如Evolution Robotics的NorthStar系统。

    本书中将会用“测量”这个词标识内部的位置数据。然而,不管测量数据从何而来,ROS都提供了一个消息类型来存储这些信息,即nav/msgs/Odometry。该消息的缩写版本定义如下:

    Header header

    string child_frame_id

    geometry_msgs/PoseWithCovariance pose

    geometry_msgs/TwistWithCovariance twist

    可以看到它由一个头Hearder、一个标识符为child_frame_id的string以及两个分别名为PoseWithCovariance 和TwistWithCovariance的子消息组成。

    运行以下命令,可以查看详细定义:

    PoseWithCovariance子消息记录了机器人的位置和方向。而TwistWithCovariance子消息告诉了线速度和角速度。covariance矩阵为位置pose和速度twist补充了不同的测量的不确定性。

    Header和child_frame_id定义了我们用来测量距离和角度的框架。它同时为每一个消息提供了一个时间戳,让我们知道在何时何地。ROS在测量中约定俗成地用/odom作为父框架的id,而用/base_link(或/base_footprint)作为子框架的id。框架/base_link代表的是现实中的机器人,而/odom则是由测量数据中平移与旋转定义的。这些变换是相对于/odom框架来移动机器人的。

    如果我们在RViz上现实模拟机器人,并设置固定到/odom框架,机器人的位置表示的是机器人“觉得”它相对于开始位置的坐标。

  • 相关阅读:
    3.3 React Hooks
    ES6高阶函数
    ES6扩展运算符
    4.0不用npm,cnpm。使用yarn包启动react项目
    4.3 webpack打包学习
    4.2 Node.js模块化教程
    4.1React模块化
    vue组件化开发
    js箭头函数
    weblogic_exploit
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6644642.html
Copyright © 2011-2022 走看看