рдРрд░реЛрдиреЗрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢, рдПрдкрд┐рд╕реЛрдб 4: рдЦреЛрдЬреЗрдВ рдФрд░ рдмрдХрд╡рд╛рд╕ рдХрд░реЗрдВ


рдЖрдЬ рд╣рдо рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдбреНрд░реЛрди рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рдмреЙрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдбреНрд░реЛрди рдХреЗ рд╕рд╛рде рдЧреЗрдВрдж рдХреЛ рдлрдЯрд╛ рдЬрд╛ рд╕рдХреЗред


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдЖрднрд╛рд╕реА рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреНрд░реЛрди рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреА рдЬрд╛рдВрдЪ рдХреА, рд╕рд╛рде рд╣реА рдПрдХ рдЖрд░рдУрдПрд╕ рдиреЛрдб рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдпрд╛ рдЬреЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдЧреЗрдВрдж рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ ред рдЕрдм рд╣рдо рдбреНрд░реЛрди рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд░реАрдореЗрдХ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЧреЗрдВрдж рдХреЛ рдлреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗред


рдЧреЗрдВрдж рдХреЗ рд▓рд┐рдП рдЙрдбрд╝рд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо


рдЧреЗрдВрдж рдХреЗ рд▓рд┐рдП рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореИрдиреНрдпреБрдЕрд▓ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдорд╛рди рдЧрддрд┐ рдирд┐рдпрдВрддреНрд░рдг рдЪрдХреНрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреБрдВрдЬреА рдХреЗ рдмрдЬрд╛рдп, рдбреНрд░реЛрди рд╡реЗрдЧ рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╡рд┐рд╖рдп /baloon_detector/twist рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЧреЗрдВрдж рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
setvel_forward рдЧрддрд┐ рдФрд░ setvel_forward рд╡реЗрдХреНрдЯрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбреНрд░реЛрди рд╕рд╣реА рдЧреЗрдВрдж рдореЗрдВ рдЙрдбрд╝ рдЬрд╛рдПред
рдпрджрд┐ рдбреНрд░реЛрди 0.2 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЧреЗрдВрдж рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдлрдЯ рджрд┐рдпрд╛ рдФрд░ рдбреНрд░реЛрди рдХреЛ рд▓реИрдВрдбрд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред


рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: (crash_baloon.py)
 #!/usr/bin/env python # coding=UTF-8 # baloon position steering import rospy import mavros import mavros.command as mc from mavros_msgs.msg import State from geometry_msgs.msg import PoseStamped, Twist, Quaternion, TwistStamped from mavros_msgs.srv import CommandBool from mavros_msgs.srv import SetMode import tf.transformations as t import math current_state=State() current_pose = PoseStamped() current_vel = Twist() baloon_twist = TwistStamped() def state_callback(data): global current_state current_state=data def localpose_callback(data): global current_pose current_pose = data def baloon_callback(data): global baloon_twist baloon_twist = data def publish_setvel(event): global current_pose, setvel_pub, setvel, setvel_forward, baloon_twist q=current_pose.pose.orientation.x, current_pose.pose.orientation.y,current_pose.pose.orientation.z,current_pose.pose.orientation.w roll, pitch, yaw = t.euler_from_quaternion(q) setvel.linear.x = setvel_forward * math.cos(yaw) setvel.linear.y = setvel_forward * math.sin(yaw) setvel_pub.publish(setvel) def main(): global current_pose, setvel, setvel_pub, setvel_forward, baloon_twist rospy.init_node("offbrd",anonymous=True) rate=rospy.Rate(10) state=rospy.Subscriber("/mavros/state",State,state_callback) pose_sub=rospy.Subscriber("/mavros/local_position/pose",PoseStamped,localpose_callback) baloon_sub=rospy.Subscriber("/baloon_detector/twist",TwistStamped,baloon_callback) setvel_pub=rospy.Publisher("/mavros/setpoint_velocity/cmd_vel_unstamped",Twist,queue_size=1) arming_s=rospy.ServiceProxy("/mavros/cmd/arming",CommandBool) set_mode=rospy.ServiceProxy("/mavros/set_mode",SetMode) setvel=Twist() setvel_forward = 0 arming_s(True) set_mode(0,"AUTO.TAKEOFF") print 'Taking off.....\r' rospy.sleep(5) for i in range (0,10): setvel_pub.publish(setvel) rate.sleep() set_mode(0,"OFFBOARD") setvel_timer = rospy.Timer(rospy.Duration(0.05), publish_setvel) while not rospy.is_shutdown(): time_delay = rospy.Time.now().to_sec() - baloon_twist.header.stamp.to_sec() #print baloon_twist print 'time delay = ',time_delay if time_delay<0.2:#    0.2   if baloon_twist.twist.linear.x > 0.8: setvel_forward = 1.5 elif baloon_twist.twist.linear.x > 0.8: setvel_forward = 0.0 else: setvel_forward = -0.5 setvel.angular.z = baloon_twist.twist.angular.z*4 if baloon_twist.twist.angular.y<0: setvel.linear.z=0.5 elif baloon_twist.twist.angular.y>0.2: setvel.linear.z=-0.25 else: setvel.linear.z=0 else:#    setvel.angular.z=setvel_forward=setvel.linear.z=0 print setvel, setvel_forward rate.sleep() set_mode(0,"AUTO.LAND") print 'Landing.......\r' setvel_timer.shutdown() rospy.sleep(5) if __name__=="__main__": main() 

рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдиреБрд╢рдВрд╕рд╛рдПрдБ


рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЦреБрд▓реА рдЬрдЧрд╣ рдЪреБрдирдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЧреЗрдВрдж рдХреЛ рдЖрдзрд╛рд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдкрд╛рд╕ рдореЗрдВ рдХреЛрдИ рд▓рд╛рд▓ рд╡рд╕реНрддреБрдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рддрд╛рдХрд┐ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рди рд╣реЛред
рдЙрдбрд╝рд╛рди рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕рдВрдЪрд╛рд▓рди, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 192.168.11.1:8080 рдкрд░ рдЬрд╛рдБрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:


рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдЧреЗрдВрдж рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред


рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреНрд░реЛрди рдХреЛ рдЯреЗрдХрдСрдлрд╝ рдХреЗ рдмрд╛рдж рдЧреЗрдВрдж рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдбреНрд░реЛрди рд╕реЛрдЪреЗрдЧрд╛ рдХрд┐ рдЧреЗрдВрдж рдкрд╣рд▓реЗ рд╣реА рдлрдЯ рдЪреБрдХреА рд╣реИ, рдФрд░ рд▓реИрдВрдбрд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреАред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, AUTO.MISSION рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЗрдВрдж рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрдирд╛рдПрдВред рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдЬреАрдкреАрдПрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рджреГрд╢реНрдп рдЦреЛрдЬ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдореБрдЦреНрдп рдЪрдХреНрд░ рдореЗрдВ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдЪрдпрди рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдбреНрд░реЛрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ, рдЧреЗрдВрдж рдХреЛ рдлреЛрдбрд╝рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рдереЗ:



рдореИрдВ рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрд░рдпреЛрдЧ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред


рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдЧрд┐рдердм рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ ред

Source: https://habr.com/ru/post/hi471450/


All Articles