ROS Learning-029 (提高篇-007 A Mobile Base-05) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(精确的制定目标位置)

ROS 提高篇 之 A Mobile Base-05 — 控制移动平台 — (Python编程)控制虚拟机器人的移动(精确的制定目标位置)

使用 odometry 消息类型 重写 out_and_back 程序。


我使用的虚拟机软件:VMware Workstation 11
使用的Ubuntu系统:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo


注意:
1 . ROS 提高篇这个专栏的教学有门槛。
2 . 如果你没有学习前面的教程,请想学习前面的 beginner_Tutorialslearning_tfROS 相关教程。


一 . 前言:

我们上一节编写的程序是通过 在前进1米的这段时间控制命令更新的次数 的方式,来让机器人移动指定的距离和转动指定的角度。
这种方式不是很好,还记得我们之前介绍的 odometry 消息类型吗?这一节,我们将使用 odometry 消息类型,重新上一节的程序。


二 . 运行程序,看看效果:

在查看代码之前,我们先来启动这个节点,看看运行效果:

新开一个终端,执行下面的命令,启动一个虚拟的 TurtleBot 机器人:

$ roslaunch rbx1_bringup fake_turtlebot.launch

再开一个终端,启动 RViz

$ rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz

最后开一个终端,运行 odom_out_and_back.py 节点:

$ rosrun rbx1_nav odom_out_and_back.py

当你将这句命令执行完,在 RVIz模拟器 中,你就可以看到下面图片里的运行效果。(运行效果和上一节,一模一样)

这里写图片描述


三 . 代码如下: odom_out_and_back.py

#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Twist, Point, Quaternion
import tf
from rbx1_nav.transform_utils import quat_to_angle, normalize_angle
from math import radians, copysign, sqrt, pow, pi

class OutAndBack():
    def __init__(self):
        # 给出节点的名字
        rospy.init_node('out_and_back', anonymous=False)

        # 设置rospy在程序退出时执行的关机函数      
        rospy.on_shutdown(self.shutdown)

        # Publisher(发布器):发布机器人运动的速度
        self.cmd_vel = rospy.Publisher('/cmd_vel', Twist, queue_size=5)

        # 我们将用多快的速度更新控制机器人运动的命令?
        rate = 20

        # 设定相同
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值