Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何以障碍达到目标和终点_Python_Ros_Robotics - Fatal编程技术网

Python 如何以障碍达到目标和终点

Python 如何以障碍达到目标和终点,python,ros,robotics,Python,Ros,Robotics,下面是控制器python脚本(controller.py)。如何达到某个目标(达到终点) 这有一个基本障碍(一堵墙) 只是不,罗斯,这方面的新手。到目前为止,我学得很好,我犯了什么错误 #!/usr/bin/env python import rospy from geometry_msgs.msg import Twist from sensor_msgs.msg import LaserScan from nav_msgs.msg import Odometry from tf.tran

下面是控制器python脚本(controller.py)。如何达到某个目标(达到终点)

这有一个基本障碍(一堵墙)

只是不,罗斯,这方面的新手。到目前为止,我学得很好,我犯了什么错误

#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Twist
from sensor_msgs.msg import LaserScan
from nav_msgs.msg import Odometry

from tf.transformations import euler_from_quaternion

import math

def Waypoints(t):
    x  = 0.2
    y  = 4
    return [x,y]

def control_loop():
    rospy.init_node('ebot_controller')

    pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)
    rospy.Subscriber('/ebot/laser/scan', LaserScan, laser_callback)
    rospy.Subscriber('/odom', Odometry, odom_callback)

    rate = rospy.Rate(10) 

    velocity_msg = Twist()
    velocity_msg.linear.x = 0
    velocity_msg.angular.z = 0
    pub.publish(velocity_msg)

    while not rospy.is_shutdown():
        velocity_msg = Twist()
        velocity_msg.linear.x = x 
        velocity_msg.angular.z = y
        pub.publish(velocity_msg)
        print("Controller message pushed at {}".format(rospy.get_time()))
        rospy.spin()
        rate.sleep()

def odom_callback(data):
    global pose
    x  = data.pose.pose.orientation.x;
    y  = data.pose.pose.orientation.y;
    z = data.pose.pose.orientation.z;
    w = data.pose.pose.orientation.w;
    pose = [data.pose.pose.position.x, data.pose.pose.position.y, euler_from_quaternion([x,y,z,w][2]]

def laser_callback(msg):
    global regions
    regions = {
        'bright':min(min(msg.ranges[300:420], 10),
        'fright':min(min(msg.ranges[144:287]), 10),
        'front':min(min(msg.ranges[288:431]), 10),
        'fleft':min(min(msg.ranges[432:575]), 10),
        'bleft':min(min(msg.ranges[300:420], 10),
    }

if __name__ == '__main__':
    try:
        control_loop()
    except rospy.ROSInterruptException:
        pass

如何达到某个目标(达到终点)


谢谢。

因为如果您只想让机器人移动到目标位置,可以使用movebase。Movebase提供了一个名为
move\u base/goal
的操作服务器,它通过将实时传感器值考虑在内来规划全局路径并在本地执行。请参见本页以获取帮助:

“如何实现某个目标(达到终点)?”——到目前为止,您尝试了哪些方法?此外,如何指定墙?还有,这是作业吗?不是作业,只是第一次学习ros,这是我的个人项目如何移动你的机器人。例如,使用姿势并让系统规划和执行路径,或者您希望使用其他预定义方式,还是希望实施您自己的执行程序?