• 02---控制移动底座3


    1、/odom : (odometry : 里程计,就是车子方向盘下面的各种表)下面是它内部的参数:

    它包含了一个机器人当前运动状态的所有信息。

    其中 child_frame_id 就是机器人它自己的名字。

    2、编码器

    什么是编码器编码器的原理,如何使用,程序如何控制。这些问题如果你不懂,请看:电子模块 — 编码器 这一节的内容。

    1、ROS中Twist消息和轮子转动

    ROS使用Twist消息类型发布运动指令给基控制器。虽然话题可以随意命名,但一般我们会使用/cmd_vel作为话题名。基控制器节点订阅/cmd_vel话题,然后把Twist消息翻译转换成发动机信号,从而使轮子转动。

    运行如下命令可以查看Twist消息的组成:

    rosmsg show geometry_msgs/Twist

    执行后结果如下:

    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z
    一个Twist消息由两个类型为Vector3的子消息组成,其中一个子消息是用x,y,z来表示线速度;而另一个是用来表示角速度。对于在二维平面运动的差速驱动机器人,只需要用到线速度的x部分和角速度的z部分。因为它只能前进或者后退,或者绕z轴旋转。

    全方向移动的机器人就会用到线速度的y部分;而飞行机器人或者水下机器人就可能用到上述所有变量。

    1)Twist消息的例子

    假设想让机器人以0.1m/s的速度向前走,则在命令行表示这个Twist消息,它会是以下的形式:

    rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: -0.1,y: 0,z: 0},angular: {x: 0,y: 0,z: -1}}'

    注意上面Twist消息格式中怎样用大括号区分一个子消息,并用冒号、逗号和空格(空格是必不可少的)来分开变量名和值。

    其实这种方式很少使用,我们实际可以用其他ROS节点把Twist消息传给机器人。

    2)用Rviz监视机器人运动

    在尝试不同的Twist命令和运动控制脚本的过程中,我们将使用RVIZ来把机器人的运动可视化。我们可以使用Odometry Display类型去跟踪机器人的方位(坐标和方向)。机器人的每一个方位状态是用一个箭头来表示的,这个箭头指向机器人在这个坐标时所面对的方向。注意这个状态反应的是机器人的测量数据。它与机器人在现实世界的状态是有差距的。

    接下来我们尝试试用ArbotiX模拟器去运行几个例子。首先用以下命令启动一个模拟的TurtleBot:

    roslaunch rbx1_bringup fake_turtlebot.launch
    在另一个终端,用设置好的Odometry Display配置文件启动RVIZ:

    rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz
    最后,再启动一个终端窗口,发布以下Twist消息,使机器人顺时针转圈。

    rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.1,y: 0,z: 0},angular: {x: 0,y: 0,z: -0.5}}'

    我们可以通过设定参数-r,以10Hz的频率发布Twist消息。在运行ArbotiX模拟器的时候,这个参数并不是必须的,加上也没关系。

    需要注意的是,在Odometry Display配置中的keep参数设置为100,这说明我们想显示在最早的箭头消失前最新的100个箭头。而Position Tolerance(单位为m)和Angle Tolerance(单位为rad)两个参数可以让你控制多久显示一个新的箭头。

    点击Reset按钮,或者先取消选择Odometry Display旁边的选项框然后再选上,都可以在任意一点去掉已经显示的箭头。

    在刚才发布消息的同一个窗口下按下“Ctrl-C”,然后发布一条空的Twist消息,可以让机器人停止旋转:

     rostopic pub -1 /cmd_vel geometry_msgs/Twist '{}'
    在一个现实的机器人尝试Twist消息之前,需要花一点时间介绍校准问题。

  • 相关阅读:
    组装query,query汇总,query字段
    POJ 1276, Cash Machine
    POJ 1129, Channel Allocation
    POJ 2531, Network Saboteur
    POJ 1837, Balance
    POJ 3278, Catch That Cow
    POJ 2676, Sudoku
    POJ 3126, Prime Path
    POJ 3414, Pots
    POJ 1426, Find The Multiple
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6640028.html
Copyright © 2020-2023  润新知