How to control my Drone with OpenCV?



  • What do I need to prepare before video call? I trying to use pycharm now .If I have any question , I will ask, thank you!


  • administrators

    Monday would be best I am free at 8am-10am Pacific Time which will be around 11pm in Taiwan @smilebean Just have pycharm setup and python 3.6. Try not to use the virtual env of python. Also have the windows computer and the IDE ready. Let me know if this is possible.



  • When I create a project , how not to use the virtual env of python?
    We date on monday 11pm in Taiwan.


  • administrators

    @smilebean I can explain everything over the video call. I will be on the website https://appear.in/robolink-support let me know if the site works for you. It is best if you use a google chrome browser.



  • This post is deleted!


  • When I use pycharm, I have the same problem(Key_Control).0_1530588853043_problem.png
    And the FPV transfer to PC have delay 3000~4000ms. Is it normal?



  • @robolink_arnold or @robolink_whoseop, can you take a look at this? Looks like we haven't gotten back to @smilebean yet.



  • The FPV transfer to PC have delay 3000~4000ms. Is it normal?
    I can use the Key_Control example thank you!
    Can you show me how to use OpenCV to control CoDrone?


  • administrators

    @smilebean So 4000ms and 3000ms delay is not normal, what code are you running? Do you have the BLE module driver installed on your computer? the SiLabs Driver? Also can you post the code you are trying to run here? Thank you!



  • I install drivers you say. About the delay, maybe it happened when I use pycharm and anaconda in the same time. I want to know how to do about this. I mean control the Drone with OpenCV. Is it Opencv image recognition?
    About this code,I can't save the video I catch with CoDrone, but computer camera can.0_1532325151639_code.png



  • @robolink_arnold About the delay , this is my code. Today I try the code, it happened. Maybe 1/10 , the delay above 2000ms.
    from time import sleep
    from petrone.drone import *
    from petrone.protocol import *
    from petrone.system import *
    import cv2

    def eventUpdateInformation(data):
    print("eventUpdateInformation() / {0} / {1} / {2} / Ver:{3} / 20{4:02}.{5}.{6}".format(data.modeUpdate,
    data.deviceType,
    data.imageType, data.version,
    data.year, data.month,
    data.day))

    cap = cv2.VideoCapture('rtsp://192.168.100.1/cam1/mpeg4')
    #cap = cv2.VideoCapture(0)
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter('outputVideo.avi',fourcc, 20.0, (640,480))

    drone = Drone(True, True, True, True, True)

    drone.connect()
    sleep(1)

    drone.sendTakeOff()
    sleep(1)

    while (cap.isOpened()):

    ret, frame = cap.read()
    
    out.write(frame)
    
    cv2.imshow('frame', frame)
    
    key = cv2.waitKey(1) & 0xFF
    
    if key == ord("W"):
        drone.sendControl(0, 0, 0, 70)
        print("T 60")
    
    if key == ord("S"):
        drone.sendControl(0, 0, 0, -70)
        print("T -60")
    
    if key == ord("A"):
        drone.sendControl(0, 0, 50, 0)
        print("Y 100")
    
    if key == ord("D"):
        drone.sendControl(0, 0, -50, 0)
        print("Y -100")
    
    if key == ord("i"):
        drone.sendControl(0, 50, 0, 0)
        print("P 100")
    
    if key == ord("k"):
        drone.sendControl(0, -50, 0, 0)
        print("P -100")
    
    if key == ord("j"):
        drone.sendControl(-50, 0, 0, 0)
        print("R 100")
    
    if key == ord("l"):
        drone.sendControl(50, 0, 0, 0)
        print("R -100")
    
    if key == ord("z"):
        drone.sendControl(0,0,0,0)
        print("hover")
    sleep(0.05)
    
    if key == ord("q"):
        drone.sendLanding()
        print("LANDING")
        cap.release()
        cv2.destroyAllWindows()
        sleep(2)
        drone.close()
        print("CLOSE")
        break
    
    if key == ord("x"):
        drone.sendStop()
        print("STOP")
        cap.release()
        cv2.destroyAllWindows()
        sleep(2)
        drone.close()
        print("CLOSE")
        break
    

    print("Disconnecting device.")
    drone.sendLinkDisconnect()
    sleep(0.2)
    drone.close()

    cap.release()
    out.release()

    cv2.destroyAllWindows()


  • administrators

    @smilebean said in How to control my Drone with OpenCV?:

    this
    You may need to change the size at which you are saving the video at. First find out what the size of the output video is.


  • administrators

    @smilebean You should not be getting a delay of 2000ms. I know however if you send a bunch of commands one after another the CoDrone will keep a buffer of all the commands therefore doing things you told it before. When using the keys you should not hold them down but instead tap them.



  • @robolink_arnold
    Thank you! If I have any questions about openCV , i will ask for help.


Log in to reply
 

Looks like your connection to Robolink community was lost, please wait while we try to reconnect.