• 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框架,机器人的位置表示的是机器人“觉得”它相对于开始位置的坐标。

  • 相关阅读:
    pytest.mark.parametrize里面indirect参数详细解释
    linux环境安装python环境
    gitlab怎么给别人新增项目权限
    VMware虚拟机下的CentOS7如果Ping不通百度,解决办法
    ip configuration could not be reserved (no available address timeout etc.)虚拟机连接不上网卡解决办法
    虚拟机安装教程
    auto_now与auto_now_add之间的区别
    【二分答案】洛谷P2678 [NOIP2015 提高组] 跳石头/P1824 进击的奶牛/P2440木材加工/P1873 砍树
    团体程序设计天梯赛PTA L2-021点赞狂魔
    团体程序设计天梯赛PTA L2-020功夫传人
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6644642.html
Copyright © 2020-2023  润新知