美文网首页
Youbot根据马克点移动

Youbot根据马克点移动

作者: 月巴大叔 | 来源:发表于2018-11-30 21:18 被阅读0次

    对于Youbot的基本移动我写了一段代码,可以根据马克点的坐标移动。

代码如下

#!/usr/bin/env python coding=utf-8

import rospy

from geometry_msgs.msg import Twist

import math

import tf

import geometry_msgs.msg

k11=0.0005

k22=0.0005

if __name__ == '__main__':

    rospy.init_node('youbot_tf_listener')

    pub=rospy.Publisher('cmd_vel',Twist,queue_size=3)

    listener = tf.TransformListener()

    rate = rospy.Rate(50.0)

    listener.waitForTransform("world", "youbot", rospy.Time(), rospy.Duration(4.0))

    listener.waitForTransform("world", "object", rospy.Time(), rospy.Duration(4.0))

    while not rospy.is_shutdown():

        try:

            (trans1,rot1) = listener.lookupTransform('world','youbot',rospy.Time(0))

            (trans2,rot2) = listener.lookupTransform('world','object',rospy.Time(0))

        except(tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException):

            continue

        rospy.loginfo('距离远点的位置:x=%f, y=%f,z=%f \n 旋转四元数:a=%f,b=%f,c=%f,d=%f',trans1[0],trans1[1],trans1[2],rot1[0],rot1[1],rot1[2],rot1[3])

        rospy.loginfo('距离远点的位置:x=%f, y=%f,z=%f \n 旋转四元数:a=%f,b=%f,c=%f,d=%f',trans2[0],trans2[1],trans2[2],rot2[0],rot2[1],rot2[2],rot2[3])

        print(trans2[0]-trans1[0], trans2[2]-trans1[2])

        twist=Twist()

        #if abs((trans2[0]-trans1[0]))<200 and ((trans2[3]-trans1[3]))<200:

        if abs((trans2[0]-trans1[0]))<100 and abs((trans2[2]-trans1[2]))<100:

    v1=0

    v2 = 0

            print(v1,v2)

            twist.linear.x = v2

            twist.linear.y= v1

            pub.publish(twist)

            rate.sleep()

        else:

            v1 = (trans2[0]-trans1[0])*k11

    v2 = (trans2[2]-trans1[2])*k22

            print(v1,v2)

            twist.linear.x = v2

            twist.linear.y = v1

            pub.publish(twist)

            rate.sleep()

        #v1 = trans[0] * k11

        #v2 = trans[1] * k22

        #twist=Twist()

        #if abs((trans)[0])<200 and abs((trans[1]))<200:

    #v1=0

    #v2=0

            #twist.linear.x = v1

            #twist.linear.y = v2

            #pub.publish(twist)

    #break

#else:

            #v1 = trans[0] * k11

    #v2 = trans[1] * k22

            #twist.linear.x = v1

            #twist.linear.y = v2

            #pub.publish(twist) 

        #pub.publish(twist)

        rate.sleep()

    #twist.linear.x = 0.0

    #twist.linear.y = 0.0

    #pub.publish(twist)

相关文章

网友评论

      本文标题:Youbot根据马克点移动

      本文链接:https://www.haomeiwen.com/subject/jpvptqtx.html