如何解决如何达到障碍的终点
这是控制器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]),'front':min(min(msg.ranges[288:431]),'fleft':min(min(msg.ranges[432:575]),'bleft':min(min(msg.ranges[300:420],}
if __name__ == '__main__':
try:
control_loop()
except rospy.ROSInterruptException:
pass
如何实现某个目标(达到终点)?
谢谢。
解决方法
因为如果您只想让机器人移动到目标位置,则可以使用movebase。 Movebase为动作服务器提供了名称move_base/goal
,您可以通过向目标服务器发送目标,计划全局路径并通过考虑实时传感器值在本地执行路径。请参阅此面以寻求帮助:http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。