рдПрд░реЛрдиреЗрдЯ рдПрдкрд┐рд╕реЛрдб 2 рдореЗрдВ рдкреНрд░рд╡реЗрд╢: рд╣реЛрдорд┐рдВрдЧ рдбреНрд░реЛрди


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдЖрднрд╛рд╕реА рдбреНрд░реЛрди рдХреЛ рд╣рд╡рд╛ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреАред рд╢рд┐рдХреНрд╖рдХ рдХреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдореЗрдВ, рд╕реНрдХреВрд▓реА рдмрдЪреНрдЪреЗ рднреА рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбреНрд░реЛрди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдЖрдЧреЗ рдХреНрдпрд╛? рдЕрдЪреНрдЫрд╛, рдбреНрд░реЛрди, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдврд╝ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрднрд╛рд╕реА - рдЦрд┐рд▓реМрдиреЗ рдФрд░ рд╕рд┐рдореБрд▓реЗрдЯрд░ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдЪрд┐рддреНрд░рд┐рддред


рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЖрдкрдХреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдорд┐рдВрдЧ рдбреНрд░реЛрди рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддреЗ рд╣реИрдВред рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд░рдВрдЧреАрди рдЧреБрдмреНрдмрд╛рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред


рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХрд╛рд░реНрдп (рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдбреНрд░реЛрди рдХреЗ рд╕рд╛рде рдПрдХ рдЧреЗрдВрдж рдХреЛ рдлреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП) рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдСрд▓-рд░реВрд╕реА рд░реЛрдмреЛрдХреНрд░реЙрд╕ -2019 рдХреЗ рдПрд░реЛрдиреЗрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдПрдХ рдЕрдореЗрд░рд┐рдХреА рд╕рдореВрд╣ рдХреА рдкрд╣рд▓реА рдПрд▓реНрдмрдо рдХреЗ рдЧреАрдд "рд╕реАрдХ рдПрдВрдб рдирд╖реНрдЯ" рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдереЗ рдЬреЛ рдореЗрд░реЗ рдЕрд╢рд╛рдВрдд рдпреБрд╡рд╛рдУрдВ рдХреЗ рджреМрд░рд╛рди рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдерд╛ред
рд▓реЗрдЦреЛрдВ рдХреА рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдбреНрд░реЛрди рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реНрдпреБрдХреНрдд рдЧреАрдд рдХреЗ рдкрд░рд╣реЗрдЬ рд╕реЗ рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред


рддреЛ, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  1. рдПрдХ рдЙрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдбреНрд░реЛрди рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  2. рд▓рдХреНрд╖реНрдп рдкрд╣рдЪрд╛рди рдФрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкреНрд░рдгрд╛рд▓реА
  3. рдкрд┐рдЫрд▓реЗ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдорд┐рд▓рд╛рдПрдВ - рдФрд░, рд╡реЙрдЗрд▓рд╛, рдЖрдк рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдбреНрд░реЛрди рддреЗрдЬреА рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЧреЗрдВрджреЛрдВ рдХреЛ рдЙрдбрд╝рд╛рдПрдЧрд╛ред

рдЕрдЧрд▓рд╛, рдкрд╣рд▓реА рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗред


jMAVSim рдХреАрдмреЛрд░реНрдб-рдирд┐рдпрдВрддреНрд░рд┐рдд


рдПрдХ рдбреНрд░реЛрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореЗрдВ, рдПрдХ рдЧреЗрдВрджред рдбреНрд░реЛрди рдХрд╛ рдХреИрдорд░рд╛ рд╕реАрдзрд╛ рдЖрдЧреЗ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред


рдЧреЗрдВрдж рдкрд░ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдбреНрд░реЛрди рдХреЛ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЖрдЧреЗ / рдкреАрдЫреЗ рдХреА рдУрд░ рдмрдврд╝рдирд╛, рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдореБрдбрд╝рдирд╛, рдЙрдЪреНрдЪ рдФрд░ рдирд┐рдореНрди рдЙрдбрд╝рд╛рди рднрд░рдирд╛ред рдЧреЗрдВрдж рди рдХреЗрд╡рд▓ рд╣рд╡рд╛ рдХреЗ рдЭреЛрдВрдХреЗ рд╕реЗ, рдмрд▓реНрдХрд┐ рд░реЛрд▓ рдФрд░ рдкрд┐рдЪ рдореЗрдВ рдбреНрд░реЛрди рдХреЗ рдЭреБрдХрд╛рд╡ рд╕реЗ рднреА рдХреИрдорд░реЗ рдХреЗ рд▓реЗрдВрд╕ рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдм рддрдХ рдЗрди рдЭреБрдХрд╛рд╡реЛрдВ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред


рд╣рдо рдбреНрд░реЛрди рдХреА рдЧрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдореИрд╡рд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрд╕реЗрдЬ /mavros/setpoint_velocity/cmd_vel_unstamped рд╡рд┐рд╖рдп /mavros/setpoint_velocity/cmd_vel_unstamped cmd_vel_unstamped рдХреЛ рд╕рдВрджреЗрд╢ /mavros/setpoint_velocity/cmd_vel_unstamped ред


рдХреАрдмреЛрд░реНрдб рд╕реЗ рдбреНрд░реЛрди рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╢рд╛рдк рдореЙрдбреНрдпреВрд▓ ( рд░реВрд╕реА рдореЗрдВ , рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╡рд░реНрдгрди ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд░рд▓ рд╣реИ: рд╡рд╛рдВрдЫрд┐рдд рдЧрддрд┐ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЯрд╛рдЗрдк рдЬреНрдпрд╛рдорд┐рддрд┐_ msgs.msg.Twist рдХреЗ рд╕реЗрдЯрд╡реЗрд▓ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдХреАрдмреЛрд░реНрдб рдкрд░ рдПрдХ рдмрдЯрди рджрдмрд╛рдХрд░, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдЧрддрд┐ рдШрдЯрдХ рдХреЛ рдмрдврд╝рд╛рддреЗ / рдШрдЯрд╛рддреЗ рд╣реИрдВред рдЯрд╛рдЗрдорд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 20 рдмрд╛рд░ рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рд╖рдп рдореЗрдВ рдЧрддрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдлреЙрд░рд╡рд░реНрдб рд╕реНрдкреАрдб (рдбреНрд░реЛрди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖) рдХреЗ рд▓рд┐рдП, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЙрдбрд╝рд╛рди рдХреА рдЧрддрд┐ рдХреЛ "рджреБрдирд┐рдпрд╛" рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдбреНрд░реЛрди рдЙрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдбреНрд░реЛрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рдореБрджреНрд░рд╛) рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбреНрд░реЛрди рдХрд╛ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдг yaw рджреНрд╡рд╛рд░рд╛ "рджреБрдирд┐рдпрд╛" рдХреЗ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Mavros рд╡рд┐рд╖рдп /mavros/local_position/pose рдореЗрдВ "рджреБрдирд┐рдпрд╛" рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдбреНрд░реЛрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ /mavros/local_position/pose ред рд╡рд┐рд╢реНрд╡ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдбреНрд░реЛрди рдЧрддрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреЛрдг yaw рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреНрд░рдорд╢рдГ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд▓рд┐рдП cos (yaw) рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдВрдЫрд┐рдд рдЖрдЧреЗ рдХреА рдЧрддрд┐ setvel_forward рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреНрд░рдорд╢рдГ рджреБрдирд┐рдпрд╛ рдХреЗ Y рдЕрдХреНрд╖ рдХреЗ рд▓рд┐рдП sin (yaw)ред



рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда:
 #!/usr/bin/env python # coding=UTF-8 import rospy import mavros import mavros.command as mc from mavros_msgs.msg import State from geometry_msgs.msg import PoseStamped, Twist, Quaternion 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() def localpose_callback(data): global current_pose current_pose = data def publish_setvel(event): global current_pose, setvel_pub, setvel, setvel_forward 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 rospy.init_node("offbrd",anonymous=True) rate=rospy.Rate(10) pose_sub=rospy.Subscriber("/mavros/local_position/pose",PoseStamped,localpose_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) # keyboard manipulation import curses stdscr = curses.initscr() curses.noecho() stdscr.nodelay(1) stdscr.keypad(1) 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 (rospy.is_shutdown()==False): rate.sleep() # keyboard hcommands handling c = stdscr.getch() if c == ord('q'): break # Exit the while() elif c == ord('u'): setvel.linear.z += 0.25 elif c == ord('d'): setvel.linear.z -= 0.25 elif c == curses.KEY_LEFT: setvel.angular.z += 0.25 elif c == curses.KEY_RIGHT: setvel.angular.z -= 0.25 elif c == curses.KEY_UP: setvel_forward += 0.25 elif c == curses.KEY_DOWN: setvel_forward -= 0.25 elif c == ord('s'): setvel_forward=setvel.linear.z=setvel.angular.z=0 if c!=curses.ERR: print setvel,'\r' curses.endwin() set_mode(0,"AUTO.LAND") print 'Landing.......\r' if __name__=="__main__": main() 

рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ jMAVSim рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд░реЛрдЬрд╡реЙрдЪ рдорд╛рд╡рд░реЛрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд╡рд░реНрд╕ рдХреЛ рдЗрд╕рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ (рдпрджрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ рддреЛ рд░рд╕реНрдХрдХреЛрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж):


 roslaunch mavros mavros_sitl.launch fcu_url:="udp://@192.168.7.14:14580" 

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдо рд░реЛрд╕реНрдЯреЛрдкрд┐рдХ рдЗрдХреЛ / рдорд╛рд╡рд░реЛрд╕ / рд╕реНрдЯреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдХрдиреЗрдХреНрдЯреЗрдб рдлрд╝реАрд▓реНрдб = рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЗрд╕реЗ python fly_mavsim.py рд░рди рдХрд░реЗрдВред рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд╡рд╛рдбреНрд░реЛрдХреЙрдкреНрдЯрд░ рд▓рдЧрднрдЧ 2 рдореАрдЯрд░ рдХреА рдКрдБрдЪрд╛рдИ рддрдХ рдмрдврд╝ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЯреЗрдХрдСрдлрд╝ рдКрдВрдЪрд╛рдИ QGroundControl рдореЗрдВ MIS_TAKEOFF_ALT рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рд╣реИ) рдФрд░ рдлреНрд░реАрдЬред рдХреАрдмреЛрд░реНрдб рдкрд░ рдмрдЯрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рджрд╛рдПрдВ-рдмрд╛рдПрдВ рддреАрд░ - рдмрд╛рд░реА, рдКрдкрд░-рдиреАрдЪреЗ рддреАрд░ - рдЖрдЧреЗ / рдкреАрдЫреЗ рдХреА рдУрд░ рдЖрдВрджреЛрд▓рди, рдпреВ - рдлреНрд▓рд╛рдИ рдЕрдк (рдпреВрдкреА), рдбреА - рдлреНрд▓рд╛рдИ рдбрд╛рдЙрди (рдиреАрдЪреЗ), рдПрд╕ - рдЬрдЧрд╣ рдореЗрдВ рд▓рдЯрдХрд╛ (рдПрд╕рдЯреАрдкреА, рд╕рднреА рдЧрддрд┐ = 0), q - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ (QUIT) рдФрд░ рдХреНрд╡рд╛рдбреНрд░реЛрдХреЛрдкреНрдЯрд░ рдХреЛ рд▓реИрдВрдб рдХрд░реЗрдВред


рдЖрдк рдЖрднрд╛рд╕реА рджреБрдирд┐рдпрд╛ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЙрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЖрджрд░реНрд╢ рдЖрднрд╛рд╕реА рдбреНрд░реЛрди рдЙрдбрд╝рд╛рди рдореЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред


рдЗрди-рдлреНрд▓рд╛рдЗрдЯ рдбреНрд░реЛрди


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


рдлрд┐рд░ рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ: рдПрдХ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рдбреНрд░реЛрди рд╕реЗ, рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред


рдХреАрдмреЛрд░реНрдб рдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреНрд░реЛрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛


рдкреАрдПрдХреНрд╕ 4 рд╕реНрдЯреИрдХ рдкрд░ рдХреЙрдкрд░реНрд╕ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдИ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред


рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рд░реЗрдбреА-рдореЗрдб рдбреНрд░реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХрдИ рд╕реНрдХреНрд╡реИрдЯреНрд╕ рд╕реЗ рдмрдЪрд╛рдпрд╛ред


рдСрди-рдмреЛрд░реНрдб рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкреАрдЖрдИ 3 рдореЙрдбрд▓ рдмреА + рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд░рд╛рд╕реНрдкрд┐рдпрди + рдЖрд░рдУрдПрд╕ рдХрд╛рдЗрдиреЗрдЯрд┐рдХ рдХреЗ рд╕рд╛рдеред рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реНрдХреАрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЙрдХрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Pixracer рдЙрдбрд╝рд╛рди рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ:


Pixracer + рд░рд╛рд╕реНрдкрдмреЗрд░реА PI


рдЬреАрдкреАрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдЙрдбрд╝рд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЬреАрдкреАрдПрд╕ рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдореИрдВ Radiolink рд╕реЗ TS100 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЧреБрдгрд╡рддреНрддрд╛ рдЕрдЪреНрдЫреА рд╣реИ, рд▓рд╛рдЧрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред


ROS рдХрд╛рдЗрдиреЗрдЯрд┐рдХ рдХреЛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░, рдЖрдкрдХреЛ рд╡рд╛рдИрдлрд╝рд╛рдИ рдФрд░ рдПрд╕рдПрдЪрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ( рдпрд╣рд╛рдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП )ред


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


 sudo systemctl stop clever sudo systemctl disable clever 

ROS рдФрд░ OpenCV рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдЫрд╡рд┐ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реИ , рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдирд╣реАрдВ рдЖрдЬрдорд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрдкрдХрд░рдг рд╕рдорд╛рди рд╣реИрдВред


рдбреНрд░реЛрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдФрд░ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдорд╛рд╡рд░реНрд╕ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдбрд╝рд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ:


 roslaunch mavros px4.launch fcu_url:='/dev/ttyAMA0:921600' gcs_url:='tcp-l://0.0.0.0:5760' rostopic echo /mavros/state 

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдмрд╛рд░ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рд╣рдо рдХрдиреЗрдХреНрдЯреЗрдб = рдЯреНрд░реВ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред



gcs_url рдХреЙрд▓ рдореЗрдВ gcs_url рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рд╣рдо QGroundControl рдХреЛ рдбреНрд░реЛрди рдХреЗ рдлреНрд▓рд╛рдЗрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рд╡рд╛рдИрдлрд╛рдИ рд╕реЗ рдЯреАрд╕реАрдкреА-рдмреНрд░рд┐рдЬ рдХреЗ рдЬрд░рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХреЗрдВред рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ QGroundControl рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ:



рд╕реНрд╡рд╛рдпрддреНрдд рдЙрдбрд╝рд╛рди рдХреЗ рд▓рд┐рдП рдбреНрд░реЛрди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреБрдЫ рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ:


1. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбреНрд░реЛрди рдореИрдиреНрдпреБрдЕрд▓ рдореЛрдб рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЙрдбрд╝рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рднреА рд╕реЗрдВрд╕рд░ рдХреИрд▓рд┐рдмреНрд░реЗрдЯреЗрдб рд╣реИрдВред рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдбреНрд░реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЭреЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдмрдЪрд╛рдпрд╛ред рдореИрдВрдиреЗ GPS рд╕рдХреНрд╖рдо рдФрд░ рдПрдХ рдмреИрд░реЛрдореАрдЯрд░ рдХреЗ рд╕рд╛рде LPE рдЖрдХрд▓рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:



2. рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рдирдП рд╕реНрдерд╛рди рдкрд░ рдпрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЬреАрдкреАрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ "рд╡рд╛рд░реНрдо рдЕрдк" рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд╕рдбрд╝рдХ рдкрд░ рдирд┐рдпрдорд┐рдд рдХрд╛рдо рдХреЗ рд╕рд╛рде, рдЬреАрдкреАрдПрд╕ рдЖрдорддреМрд░ рдкрд░ 16 рд╕реЗ 22 рдЙрдкрдЧреНрд░рд╣реЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИред



3. рдПрдХ рдирдИ рдЬрдЧрд╣ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдФрд░ рдЕрдЧрд░ рдбреНрд░реЛрди рдПрдХ рдмрд┐рдВрджреБ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрдореНрдкрд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП:



рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд╣рд░реА рдХрдореНрдкрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рд╣реА рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рд╕реЗрдЯ рд╣реИ:



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


рдореИрдиреНрдпреБрдЕрд▓ рдореЛрдб рдореЗрдВ рд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдЙрдбрд╝рд╛рдиреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ fly_jmavsim.py рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреНрд░реЛрди: рд╡реАрдбрд┐рдпреЛ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдПрдХ рдЕрд╕рд▓реА рдбреНрд░реЛрди рдПрдХ рдЖрднрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реА рдЙрдбрд╝рд╛рди рдирд╣реАрдВ рднрд░рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЙрдбрд╝рдирд╛ рдФрд░ рдХрдорд╛рдВрдб рдкрд░ рд░реЛрдХрдирд╛ред


рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреАрдмреЛрд░реНрдб рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реЗ рдмреЙрд▓-рд╣рдВрдЯрд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗред


рд╣рдорд╛рд░реЗ рдлреНрд▓рд╛рдЗрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ + рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдЧрд┐рдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ ред

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


All Articles