Git Product home page Git Product logo

tello-gesture-control's Introduction

DJI Tello Hand Gesture control


🏆 This project featured in Official Google Dev Blog


The main goal of this project is to control the drone using hand gestures without any gloves or additional equipment. Just camera on the drone or your smartphone(soon), laptop and human hand.

demo_gif

Index

  1. Introduction
  2. Setup
    1. Install pip packages
    2. Connect and test Tello
  3. Usage
  4. Adding new gestures
  5. Repository structure

Introduction

This project relies on two main parts - DJI Tello drone and Mediapipe fast hand keypoints recognition.

DJI Tello is a perfect drone for any kind of programming experiments. It has a rich Python API (also Swift is available) which helps to almost fully control a drone, create drone swarms and utilise its camera for Computer vision.

Mediapipe is an amazing ML platform with many robust solutions like Face mesh, Hand Keypoints detection and Objectron. Moreover, their model can be used on the mobile platforms with on-device acceleration.

Here is a starter-pack that you need:

starter_pack

Setup

1. Installing pip packages

First, we need to install python dependencies. Make sure you that you are using python3.7

List of packages

ConfigArgParse == 1.2.3
djitellopy == 1.5
numpy == 1.19.3
opencv_python == 4.5.1.48
tensorflow == 2.4.1
mediapipe == 0.8.2

Install

pip3 install -r requirements.txt

2. Connect Tello

Turn on drone and connect computer to its WiFi

wifi_connection

Next, run the following code to verify connectivity

python3 tests/connection_test.py

On successful connection

1. Connection test:
Send command: command
Response: b'ok'


2. Video stream test:
Send command: streamon
Response: b'ok'

If you get such output, you may need to check your connection with the drone

1. Connection test:
Send command: command
Timeout exceed on command command
Command command was unsuccessful. Message: False


2. Video stream test:
Send command: streamon
Timeout exceed on command streamon
Command streamon was unsuccessful. Message: False

Usage

The most interesting part is demo. There are 2 types of control: keyboard and gesture. You can change between control types during the flight. Below is a complete description of both types.

Run the following command to start the tello control :

python3 main.py

This script will start the python window with visualization like this:

window

Keyboard control

To control the drone with your keyboard at any time - press the k key.

The following is a list of keys and action description -

  • k -> Toggle Keyboard controls
  • g -> Toggle Gesture controls
  • Space -> Take off drone(if landed) OR Land drone(if in flight)
  • w -> Move forward
  • s -> Move back
  • a -> Move left
  • d -> Move right
  • e -> Rotate clockwise
  • q -> Rotate counter-clockwise
  • r -> Move up
  • f -> Move down
  • Esc -> End program and land the drone

Gesture control

By pressing g you activate gesture control mode. Here is a full list of gestures that are available now.

gestures_list

Adding new gestures

Hand recognition detector can add and change training data to retrain the model on the own gestures. But before this, there are technical details of the detector to understand how it works and how it can be improved

Technical details of gesture detector

Mediapipe Hand keypoints recognition is returning 3D coordinated of 20 hand landmarks. For our model we will use only 2D coordinates.

gestures_list

Then, these points are preprocessed for training the model in the following way.

preprocessing

After that, we can use data to train our model. Keypoint classifier is a simple Neural network with such structure

model_structure

check here to understand how the architecture was selected

Creating dataset with new gestures

First, pull datasets from Git LFS. Here is the instruction of how to install LFS. Then, run the command to pull default csv files

git lfs install
git lfs pull

After that, run main.py and press "n" to enter the mode to save key points (displayed as MODE:Logging Key Point

writing_mode

If you press "0" to "9", the key points will be added to model/keypoint_classifier/keypoint.csv as shown below.
1st column: Pressed number (class ID), 2nd and subsequent columns: Keypoint coordinates

keypoints_table

In the initial state, 7 types of learning data are included as was shown here. If necessary, add 3 or later, or delete the existing data of csv to prepare the training data.

Notebook for retraining model

Open In Colab

Open Keypoint_model_training.ipynb in Jupyter Notebook or Google Colab. Change the number of training data classes,the value of NUM_CLASSES = 3, and path to the dataset. Then, execute all cells and download .tflite model

notebook_gif

Do not forget to modify or add labels in "model/keypoint_classifier/keypoint_classifier_label.csv"

Grid Search

❗️ Important ❗️ The last part of the notebook is an experimental part of the notebook which main functionality is to test hyperparameters of the model structure. In a nutshell: grid search using TensorBoard visualization. Feel free to use it for your experiments.

grid_search

Repository structure

│  main.py
│  Keypoint_model_training.ipynb
│  config.txt
│  requirements.txt
│  
├─model
│  └─keypoint_classifier
│      │  keypoint.csv
│      │  keypoint_classifier.hdf5
│      │  keypoint_classifier.py
│      │  keypoint_classifier.tflite
│      └─ keypoint_classifier_label.csv
│ 
├─gestures
│   │  gesture_recognition.py
│   │  tello_gesture_controller.py
│   └─ tello_keyboard_controller.py
│          
├─tests
│   └─connection_test.py
│ 
└─utils
    └─cvfpscalc.py

app.py

Main app which controls the functionality of drone control and gesture recognition
App also includes mode to collect training data for adding new gestures.

keypoint_classification.ipynb

This is a model training script for hand sign recognition.

model/keypoint_classifier

This directory stores files related to gesture recognition.

  • Training data(keypoint.csv)
  • Trained model(keypoint_classifier.tflite)
  • Label data(keypoint_classifier_label.csv)
  • Inference module(keypoint_classifier.py)

gestures/

This directory stores files related to drone controllers and gesture modules.

  • Keyboard controller (tello_keyboard_controller.py)
  • Gesture controller(tello_keyboard_controller.py)
  • Gesture recognition module(keypoint_classifier_label.csv)

utils/cvfpscalc.py

Module for FPS measurement.

TODO

  • Motion gesture support (LSTM)
  • Web UI for mobile on-device gesture control
  • Add Holistic model support

Reference

Author

Nikita Kiselov(https://github.com/kinivi)

License

tello-gesture-control is under Apache-2.0 License.

tello-gesture-control's People

Contributors

kinivi avatar nkise-nlab avatar xingruic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tello-gesture-control's Issues

wrong filename

in readme.md it says test_connection.py, actual file is called connection_test.py

Error when trying to land

Installation is successful there are no problems when I start the main.py.
The problem occurs when I hit the spacebar to take off, then hit it again to land. It takes off perfectly, but when it tries to land, the window shows Not Responding and there is an error.
Full Output

  • OS: Windows 10 Professional 64 bit running on MacBook pro
  • Python version: 3.7.10

I can use the Tello_Video example (it has controls, video stream, and picture functions) from the official repository just fine.

Testing in Windows

Hello, have you done any testing of the project in Windows? Its saying that its having an issue opening the keypoint classifier of the model

Incorrect number of initial gesture types

In README.md in the Creating dataset with new gestures section @kinivi put "In the initial state, 7 types of learning data are included as was shown here." Am I misunderstanding or is this just a simple typo and it should say "8 types"?

It doesn't work in my Mac enviroment

As follow python commands output:

python3 tests/connection_test.py

  1. Connection test:
    [INFO] tello.py - 129 - Tello instance was initialized. Host: '192.168.1.142'. Port: '8889'.
    [INFO] tello.py - 438 - Send command: 'command'
    [INFO] tello.py - 462 - Response command: 'ok'

  2. Video stream test:
    [INFO] tello.py - 438 - Send command: 'streamon'
    [INFO] tello.py - 462 - Response streamon: 'ok'

[INFO] tello.py - 438 - Send command: 'streamoff'
[INFO] tello.py - 462 - Response streamoff: 'ok'


python3 main.py

Reading configuration

[INFO] tello.py - 129 - Tello instance was initialized. Host: '192.168.1.142'. Port: '8889'.
[INFO] tello.py - 438 - Send command: 'command'
[INFO] tello.py - 462 - Response command: 'ok'
[INFO] tello.py - 438 - Send command: 'streamon'
[INFO] tello.py - 462 - Response streamon: 'ok'
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1702369536.445340 1 gl_context.cc:344] GL version: 2.1 (2.1 Metal - 88), renderer: Apple M2 Max
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
[INFO] tello.py - 438 - Send command: 'down 20'
No accelerated colorspace conversion found from yuv420p to rgb24.
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
[INFO] tello.py - 462 - Response down 20: 'error Motor stop'
[INFO] tello.py - 438 - Send command: 'down 20'
[INFO] tello.py - 462 - Response down 20: 'error Motor stop'
[INFO] tello.py - 438 - Send command: 'down 20'
[INFO] tello.py - 462 - Response down 20: 'error Motor stop'
Traceback (most recent call last):
File "main.py", line 163, in
main()
File "main.py", line 103, in main
tello.move_down(20)
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/enforce_types.py", line 54, in wrapper
return func(*args, **kwargs)
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/tello.py", line 635, in move_down
self.move("down", x)
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/enforce_types.py", line 54, in wrapper
return func(*args, **kwargs)
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/tello.py", line 621, in move
self.send_control_command("{} {}".format(direction, x))
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/enforce_types.py", line 54, in wrapper
return func(*args, **kwargs)
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/tello.py", line 487, in send_control_command
self.raise_result_error(command, response)
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/enforce_types.py", line 54, in wrapper
return func(*args, **kwargs)
File "/opt/homebrew/anaconda3/envs/tello2/lib/python3.8/site-packages/djitellopy/tello.py", line 529, in raise_result_error
raise TelloException("Command '{}' was unsuccessful for {} tries. Latest response:\t'{}'"
djitellopy.tello.TelloException: Command 'down 20' was unsuccessful for 4 tries. Latest response: 'error Motor stop'
[INFO] tello.py - 438 - Send command: 'streamoff'
[WARNING] tello.py - 448 - Aborting command 'streamoff'. Did not receive a response after 7 seconds
[INFO] tello.py - 438 - Send command: 'streamoff'
[WARNING] tello.py - 448 - Aborting command 'streamoff'. Did not receive a response after 7 seconds
[INFO] tello.py - 438 - Send command: 'streamoff'
[WARNING] tello.py - 448 - Aborting command 'streamoff'. Did not receive a response after 7 seconds

Point History Classifier

Hey, I was unable to understand the use of the point history classifier, can you please shed light on it.

Installation of requirements failed on macOS Sonoma

I get an error trying to install the requirements.

MacOS Sonoma 14.1.1
Python 3.7.17 Installed yesterday from source (https://www.python.org/downloads/release/python-3717/) because brew said "Error: [email protected] has been disabled because it is deprecated upstream!"

Installed by using
./configure
make
make test
sudo make install

Changed to standard version by using:
vi ~/.bash_profile
alias python='/usr/local/bin/python3.7'

Tried with different python versions (3.8, 3.11 and 3.12), Same Error

Can you please help me? Thanks in advance.


sinasteinmuller@MBP-von-Sina ~ % python --version
Python 3.7.17
sinasteinmuller@MBP-von-Sina ~ % cd Developer/tello-gesture-control-main
sinasteinmuller@MBP-von-Sina tello-gesture-control-main % pip3 install -r requirements.txt
Collecting ConfigArgParse==1.2.3 (from -r requirements.txt (line 3))
Using cached ConfigArgParse-1.2.3.tar.gz (42 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting djitellopy==1.5 (from -r requirements.txt (line 4))
Using cached djitellopy-1.5.tar.gz (5.8 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting numpy==1.19.3 (from -r requirements.txt (line 5))
Using cached numpy-1.19.3.zip (7.3 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting opencv_python==4.5.1.48 (from -r requirements.txt (line 6))
Using cached opencv-python-4.5.1.48.tar.gz (88.3 MB)
Installing build dependencies ... error
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> [1230 lines of output]
Ignoring numpy: markers 'python_version == "3.6" and platform_machine != "aarch64"' don't match your environment
Ignoring numpy: markers 'python_version >= "3.6" and sys_platform == "linux" and platform_machine == "aarch64"' don't match your environment
Ignoring numpy: markers 'python_version == "3.7" and platform_machine != "aarch64"' don't match your environment
Ignoring numpy: markers 'python_version == "3.8" and platform_machine != "aarch64"' don't match your environment
Collecting setuptools
Using cached setuptools-69.0.2-py3-none-any.whl.metadata (6.3 kB)
Collecting wheel
Using cached wheel-0.42.0-py3-none-any.whl.metadata (2.2 kB)
Collecting scikit-build
Using cached scikit_build-0.17.6-py3-none-any.whl.metadata (14 kB)
Collecting cmake
Downloading cmake-3.28.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl.metadata (6.3 kB)
Collecting pip
Using cached pip-23.3.1-py3-none-any.whl.metadata (3.5 kB)
Collecting numpy==1.19.3
Using cached numpy-1.19.3.zip (7.3 MB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status 'done'
Collecting distro (from scikit-build)
Using cached distro-1.8.0-py3-none-any.whl (20 kB)
Collecting packaging (from scikit-build)
Using cached packaging-23.2-py3-none-any.whl.metadata (3.2 kB)
Using cached setuptools-69.0.2-py3-none-any.whl (819 kB)
Using cached wheel-0.42.0-py3-none-any.whl (65 kB)
Using cached scikit_build-0.17.6-py3-none-any.whl (84 kB)
Downloading cmake-3.28.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl (48.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.5/48.5 MB 11.7 MB/s eta 0:00:00
Using cached pip-23.3.1-py3-none-any.whl (2.1 MB)
Using cached packaging-23.2-py3-none-any.whl (53 kB)
Building wheels for collected packages: numpy
Building wheel for numpy (pyproject.toml): started
Building wheel for numpy (pyproject.toml): still running...
Building wheel for numpy (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error

    × Building wheel for numpy (pyproject.toml) did not run successfully.
    │ exit code: 1
    ╰─> [1182 lines of output]
        setup.py:67: RuntimeWarning: NumPy 1.19.3 may not yet support Python 3.11.
          warnings.warn(
        Running from numpy source directory.
        numpy/random/_bounded_integers.pxd.in has not changed
        numpy/random/_philox.pyx has not changed
        numpy/random/_bounded_integers.pyx.in has not changed
        numpy/random/_sfc64.pyx has not changed
        numpy/random/_mt19937.pyx has not changed
        numpy/random/bit_generator.pyx has not changed
        Processing numpy/random/_bounded_integers.pyx
        numpy/random/mtrand.pyx has not changed
        numpy/random/_generator.pyx has not changed
        numpy/random/_pcg64.pyx has not changed
        numpy/random/_common.pyx has not changed
        Cythonizing sources
        blas_opt_info:
        blas_mkl_info:
        customize UnixCCompiler
          libraries mkl_rt not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        blis_info:
          libraries blis not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        openblas_info:
          libraries openblas not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        atlas_3_10_blas_threads_info:
        Setting PTATLAS=ATLAS
          libraries tatlas not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        atlas_3_10_blas_info:
          libraries satlas not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        atlas_blas_threads_info:
        Setting PTATLAS=ATLAS
          libraries ptf77blas,ptcblas,atlas not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        atlas_blas_info:
          libraries f77blas,cblas,atlas not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        accelerate_info:
          libraries accelerate not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
        Library accelerate was not found. Ignoring
          libraries veclib not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
        Library veclib was not found. Ignoring
          FOUND:
            extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
            extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
            define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
  
          FOUND:
            extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
            extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
            define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
  
        non-existing path in 'numpy/distutils': 'site.cfg'
        lapack_opt_info:
        lapack_mkl_info:
          libraries mkl_rt not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        openblas_lapack_info:
          libraries openblas not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        openblas_clapack_info:
          libraries openblas,lapack not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        flame_info:
          libraries flame not found in ['/Library/Frameworks/Python.framework/Versions/3.11/lib', '/usr/local/lib', '/usr/lib']
          NOT AVAILABLE
  
        atlas_3_10_threads_info:
        Setting PTATLAS=ATLAS
          libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries tatlas,tatlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries lapack_atlas not found in /usr/local/lib
          libraries tatlas,tatlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries tatlas,tatlas not found in /usr/lib
        <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
          NOT AVAILABLE
  
        atlas_3_10_info:
          libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries satlas,satlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries lapack_atlas not found in /usr/local/lib
          libraries satlas,satlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries satlas,satlas not found in /usr/lib
        <class 'numpy.distutils.system_info.atlas_3_10_info'>
          NOT AVAILABLE
  
        atlas_threads_info:
        Setting PTATLAS=ATLAS
          libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries ptf77blas,ptcblas,atlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries lapack_atlas not found in /usr/local/lib
          libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries ptf77blas,ptcblas,atlas not found in /usr/lib
        <class 'numpy.distutils.system_info.atlas_threads_info'>
          NOT AVAILABLE
  
        atlas_info:
          libraries lapack_atlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries f77blas,cblas,atlas not found in /Library/Frameworks/Python.framework/Versions/3.11/lib
          libraries lapack_atlas not found in /usr/local/lib
          libraries f77blas,cblas,atlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries f77blas,cblas,atlas not found in /usr/lib
        <class 'numpy.distutils.system_info.atlas_info'>
          NOT AVAILABLE
  
          FOUND:
            extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
            extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
            define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
  
        /private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-build-env-a3z4ds76/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py:275: UserWarning: Unknown distribution option: 'define_macros'
          warnings.warn(msg)
        running bdist_wheel
        running build
        running config_cc
        unifing config_cc, config, build_clib, build_ext, build commands --compiler options
        running config_fc
        unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
        running build_src
        build_src
        building py_modules sources
        building library "npymath" sources
          adding 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath' to include_dirs.
        None - nothing done with h_files = ['build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath/npy_math_internal.h']
        building library "npysort" sources
          adding 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/common' to include_dirs.
        None - nothing done with h_files = ['build/src.macosx-10.9-universal2-3.11/numpy/core/src/common/npy_sort.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/common/npy_partition.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/common/npy_binsearch.h']
        building library "npyrandom" sources
        building extension "numpy.core._multiarray_tests" sources
        building extension "numpy.core._multiarray_umath" sources
          adding 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath' to include_dirs.
          adding 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath' to include_dirs.
          adding 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/common' to include_dirs.
        numpy.core - nothing done with h_files = ['build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/funcs.inc', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/simd.inc', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/loops.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/matmul.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/clip.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath/npy_math_internal.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/src/common/templ_common.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy/config.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy/_numpyconfig.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy/__multiarray_api.h', 'build/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy/__ufunc_api.h']
        building extension "numpy.core._umath_tests" sources
        building extension "numpy.core._rational_tests" sources
        building extension "numpy.core._struct_ufunc_tests" sources
        building extension "numpy.core._operand_flag_tests" sources



        compile options: '-Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -c'
        clang: numpy/core/src/npymath/npy_math.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath/ieee754.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath/npy_math_complex.c
        clang: numpy/core/src/npymath/halffloat.c
        xcrun: adding 4 object files to build/temp.macosx-10.9-universal2-3.11/libnpymath.a
        warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: build/temp.macosx-10.9-universal2-3.11/libnpymath.a will be fat and ar(1) will not be able to operate on it
        ranlib:@ build/temp.macosx-10.9-universal2-3.11/libnpymath.a
        building 'npysort' library
        compiling C sources
        C compiler: clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g
  
        creating build/temp.macosx-10.9-universal2-3.11/build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort
        compile options: '-Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -c'
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort/mergesort.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort/quicksort.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort/heapsort.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort/radixsort.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort/timsort.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort/binsearch.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npysort/selection.c
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        22 warnings generated.
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        numpy/core/src/npysort/selection.c.src:328:9: warning: code will never be executed [-Wunreachable-code]
                npy_intp k;
                ^~~~~~~~~~~
        numpy/core/src/npysort/selection.c.src:326:14: note: silence by adding parentheses to mark code as explicitly dead
            else if (0 && kth == num - 1) {
                     ^
                     /* DISABLES CODE */ ( )
        22 warnings generated.
        xcrun: adding 7 object files to build/temp.macosx-10.9-universal2-3.11/libnpysort.a
        warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: build/temp.macosx-10.9-universal2-3.11/libnpysort.a will be fat and ar(1) will not be able to operate on it
        ranlib:@ build/temp.macosx-10.9-universal2-3.11/libnpysort.a
        building 'npyrandom' library
        compiling C sources
        C compiler: clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g
  
        creating build/temp.macosx-10.9-universal2-3.11/numpy/random
        creating build/temp.macosx-10.9-universal2-3.11/numpy/random/src
        creating build/temp.macosx-10.9-universal2-3.11/numpy/random/src/distributions
        compile options: '-Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -c'
        clang: numpy/random/src/distributions/logfactorial.c
        clang: numpy/random/src/distributions/distributions.c
        clang: numpy/random/src/distributions/random_mvhg_count.c
        clang: numpy/random/src/distributions/random_mvhg_marginals.c
        clang: numpy/random/src/distributions/random_hypergeometric.c
        xcrun: adding 5 object files to build/temp.macosx-10.9-universal2-3.11/libnpyrandom.a
        warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: build/temp.macosx-10.9-universal2-3.11/libnpyrandom.a will be fat and ar(1) will not be able to operate on it
        ranlib:@ build/temp.macosx-10.9-universal2-3.11/libnpyrandom.a
        running build_ext
        customize UnixCCompiler
        customize UnixCCompiler using new_build_ext
        building 'numpy.core._multiarray_tests' extension
        compiling C sources
        C compiler: clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g
  
        creating build/temp.macosx-10.9-universal2-3.11/build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray
        creating build/temp.macosx-10.9-universal2-3.11/numpy/core/src/common
        compile options: '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -c'
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/_multiarray_tests.c
        clang: numpy/core/src/common/mem_overlap.c
        clang -bundle -undefined dynamic_lookup -arch arm64 -arch x86_64 -g build/temp.macosx-10.9-universal2-3.11/build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/_multiarray_tests.o build/temp.macosx-10.9-universal2-3.11/numpy/core/src/common/mem_overlap.o -Lbuild/temp.macosx-10.9-universal2-3.11 -lnpymath -o build/lib.macosx-10.9-universal2-3.11/numpy/core/_multiarray_tests.cpython-311-darwin.so
        building 'numpy.core._multiarray_umath' extension
        compiling C sources
        C compiler: clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g
  
        creating build/temp.macosx-10.9-universal2-3.11/numpy/core/src/multiarray
        creating build/temp.macosx-10.9-universal2-3.11/numpy/core/src/umath
        creating build/temp.macosx-10.9-universal2-3.11/build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath
        creating build/temp.macosx-10.9-universal2-3.11/build/src.macosx-10.9-universal2-3.11/numpy/core/src/common
        creating build/temp.macosx-10.9-universal2-3.11/private
        creating build/temp.macosx-10.9-universal2-3.11/private/var
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny/numpy_1c4c756b71c748ebb5b03e5cd497f363
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny/numpy_1c4c756b71c748ebb5b03e5cd497f363/numpy
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny/numpy_1c4c756b71c748ebb5b03e5cd497f363/numpy/_build_utils
        creating build/temp.macosx-10.9-universal2-3.11/private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny/numpy_1c4c756b71c748ebb5b03e5cd497f363/numpy/_build_utils/src
        compile options: '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DNO_ATLAS_INFO=3 -DHAVE_CBLAS -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/umath -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -c'
        extra options: '-msse3 -I/System/Library/Frameworks/vecLib.framework/Headers'
        clang: numpy/core/src/multiarray/alloc.c
        clang: numpy/core/src/multiarray/array_assign_scalar.c
        clang: numpy/core/src/multiarray/common.c
        clang: numpy/core/src/multiarray/buffer.c
        clang: numpy/core/src/multiarray/datetime_strings.c
        clang: numpy/core/src/multiarray/conversion_utils.c
        clang: numpy/core/src/multiarray/descriptor.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/einsum.c
        numpy/core/src/multiarray/einsum.c.src:2158:32: warning: unknown warning group '-Wmaybe-uninitialized', ignored [-Wunknown-warning-option]
        #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
                                       ^
        clang: numpy/core/src/multiarray/arrayobject.c
        clang: numpy/core/src/multiarray/array_assign_array.c
        clang: numpy/core/src/multiarray/ctors.c
        clang: numpy/core/src/multiarray/convert.c
        clang: numpy/core/src/multiarray/datetime_busday.c
        clang: numpy/core/src/multiarray/calculation.c
        clang: numpy/core/src/multiarray/arrayfunction_override.c
        clang: numpy/core/src/multiarray/convert_datatype.c
        clang: numpy/core/src/multiarray/dragon4.c
        clang: numpy/core/src/multiarray/hashdescr.c
        clang: numpy/core/src/multiarray/datetime_busdaycal.c
        clang: numpy/core/src/multiarray/compiled_base.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/arraytypes.c
        clang: numpy/core/src/multiarray/item_selection.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/lowlevel_strided_loops.c
        clang: numpy/core/src/multiarray/multiarraymodule.c
        clang: numpy/core/src/multiarray/datetime.c
        clang: numpy/core/src/multiarray/dtype_transfer.c
        clang: numpy/core/src/multiarray/nditer_constr.c
        1 warning generated.
        clang: numpy/core/src/multiarray/iterators.c
        clang: numpy/core/src/multiarray/refcount.c
        numpy/core/src/multiarray/einsum.c.src:2158:32: warning: unknown warning group '-Wmaybe-uninitialized', ignored [-Wunknown-warning-option]
        #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
                                       ^
        clang: numpy/core/src/multiarray/scalarapi.c
        clang: numpy/core/src/multiarray/sequence.c
        numpy/core/src/multiarray/scalarapi.c:759:38: warning: 'ob_shash' is deprecated [-Wdeprecated-declarations]
                    ((PyStringObject *)obj)->ob_shash = -1;
                                             ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/cpython/bytesobject.h:7:5: note: 'ob_shash' has been explicitly marked deprecated here
            Py_DEPRECATED(3.11) Py_hash_t ob_shash;
            ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyport.h:336:54: note: expanded from macro 'Py_DEPRECATED'
        #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                             ^
        1 warning generated.
        clang: numpy/core/src/multiarray/shape.c
        numpy/core/src/multiarray/scalarapi.c:759:38: warning: 'ob_shash' is deprecated [-Wdeprecated-declarations]
                    ((PyStringObject *)obj)->ob_shash = -1;
                                             ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/cpython/bytesobject.h:7:5: note: 'ob_shash' has been explicitly marked deprecated here
            Py_DEPRECATED(3.11) Py_hash_t ob_shash;
            ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyport.h:336:54: note: expanded from macro 'Py_DEPRECATED'
        #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                             ^
        1 warning generated.
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/scalartypes.c
        clang: numpy/core/src/multiarray/nditer_pywrap.c
        numpy/core/src/multiarray/scalartypes.c.src:1880:9: warning: variable 'i' set but not used [-Wunused-but-set-variable]
            int i;
                ^
        numpy/core/src/multiarray/scalartypes.c.src:1880:9: warning: variable 'i' set but not used [-Wunused-but-set-variable]
            int i;
                ^
        numpy/core/src/multiarray/scalartypes.c.src:1880:9: warning: variable 'i' set but not used [-Wunused-but-set-variable]
            int i;
                ^
        numpy/core/src/multiarray/scalartypes.c.src:1880:9: warning: variable 'i' set but not used [-Wunused-but-set-variable]
            int i;
                ^
        numpy/core/src/multiarray/scalartypes.c.src:2967:65: error: too few arguments to function call, expected 2, have 1
            return _Py_HashDouble((double) PyArrayScalar_VAL(obj, Float));
                   ~~~~~~~~~~~~~~                                       ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyhash.h:10:23: note: '_Py_HashDouble' declared here
        PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
                              ^
        numpy/core/src/multiarray/scalartypes.c.src:2976:48: error: too few arguments to function call, expected 2, have 1
                    PyArrayScalar_VAL(obj, CFloat).real);
                                                       ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyhash.h:10:23: note: '_Py_HashDouble' declared here
        PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
                              ^
        clang: numpy/core/src/multiarray/temp_elide.c
        numpy/core/src/multiarray/scalartypes.c.src:2982:48: error: too few arguments to function call, expected 2, have 1
                    PyArrayScalar_VAL(obj, CFloat).imag);
                                                       ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyhash.h:10:23: note: '_Py_HashDouble' declared here
        PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
                              ^
        numpy/core/src/multiarray/scalartypes.c.src:2967:70: error: too few arguments to function call, expected 2, have 1
            return _Py_HashDouble((double) PyArrayScalar_VAL(obj, LongDouble));
                   ~~~~~~~~~~~~~~                                            ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyhash.h:10:23: note: '_Py_HashDouble' declared here
        PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
                              ^
        numpy/core/src/multiarray/scalartypes.c.src:2976:53: error: too few arguments to function call, expected 2, have 1
                    PyArrayScalar_VAL(obj, CLongDouble).real);
                                                            ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyhash.h:10:23: note: '_Py_HashDouble' declared here
        PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
                              ^
        numpy/core/src/multiarray/scalartypes.c.src:2982:53: error: too few arguments to function call, expected 2, have 1
                    PyArrayScalar_VAL(obj, CLongDouble).imag);
                                                            ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyhash.h:10:23: note: '_Py_HashDouble' declared here
        PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
                              ^
        numpy/core/src/multiarray/scalartypes.c.src:2997:75: error: too few arguments to function call, expected 2, have 1
            return _Py_HashDouble(npy_half_to_double(PyArrayScalar_VAL(obj, Half)));
                   ~~~~~~~~~~~~~~                                                 ^
        /Library/Frameworks/Python.framework/Versions/3.11/include/python3.11/pyhash.h:10:23: note: '_Py_HashDouble' declared here
        PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
                              ^
        4 warnings and 7 errors generated.
        clang: numpy/core/src/multiarray/vdot.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/nditer_templ.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/loops.c
        clang: numpy/core/src/multiarray/typeinfo.c
        clang: numpy/core/src/umath/umathmodule.c
        clang: numpy/core/src/multiarray/usertypes.c
        clang: numpy/core/src/umath/reduction.c
        clang: numpy/core/src/multiarray/number.c
        clang: numpy/core/src/umath/ufunc_object.c
        clang: numpy/core/src/umath/ufunc_type_resolution.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath/ieee754.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath/npy_math_complex.c
        numpy/core/src/umath/loops.c.src:2611:22: warning: code will never be executed [-Wunreachable-code]
                npy_intp n = dimensions[0];
                             ^~~~~~~~~~
        numpy/core/src/umath/loops.c.src:2610:29: note: silence by adding parentheses to mark code as explicitly dead
            if (IS_BINARY_REDUCE && 0) {
                                    ^
                                    /* DISABLES CODE */ ( )
        numpy/core/src/umath/loops.c.src:2611:22: warning: code will never be executed [-Wunreachable-code]
                npy_intp n = dimensions[0];
                             ^~~~~~~~~~
        numpy/core/src/umath/loops.c.src:2610:29: note: silence by adding parentheses to mark code as explicitly dead
            if (IS_BINARY_REDUCE && 0) {
                                    ^
                                    /* DISABLES CODE */ ( )
        numpy/core/src/umath/loops.c.src:2611:22: warning: code will never be executed [-Wunreachable-code]
                npy_intp n = dimensions[0];
                             ^~~~~~~~~~
        numpy/core/src/umath/loops.c.src:2610:29: note: silence by adding parentheses to mark code as explicitly dead
            if (IS_BINARY_REDUCE && 0) {
                                    ^
                                    /* DISABLES CODE */ ( )
        clang: numpy/core/src/umath/override.c
        clang: numpy/core/src/npymath/halffloat.c
        clang: numpy/core/src/multiarray/nditer_api.c
        1 warning generated.
        clang: numpy/core/src/multiarray/flagsobject.c
        clang: numpy/core/src/common/array_assign.c
        clang: numpy/core/src/npymath/npy_math.c
        clang: numpy/core/src/multiarray/getset.c
        clang: numpy/core/src/common/mem_overlap.c
        clang: numpy/core/src/common/ucsnarrow.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/common/npy_cpu_features.c
        clang: numpy/core/src/common/ufunc_override.c
        clang: numpy/core/src/umath/extobj.c
        clang: /private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny/numpy_1c4c756b71c748ebb5b03e5cd497f363/numpy/_build_utils/src/apple_sgemv_fix.c
        clang: numpy/core/src/common/cblasfuncs.c
        In file included from /private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny/numpy_1c4c756b71c748ebb5b03e5cd497f363/numpy/_build_utils/src/apple_sgemv_fix.c:26:
        In file included from numpy/core/include/numpy/arrayobject.h:4:
        In file included from numpy/core/include/numpy/ndarrayobject.h:21:
        build/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy/__multiarray_api.h:1463:1: warning: unused function '_import_array' [-Wunused-function]
        _import_array(void)
        ^
        clang: numpy/core/src/common/npy_longdouble.c
        1 warning generated.
        clang: numpy/core/src/common/numpyos.c
        In file included from /private/var/folders/k4/y7fdrtfj6d9fvdpvt4rkwgcc0000gn/T/pip-install-nyqmj6ny/numpy_1c4c756b71c748ebb5b03e5cd497f363/numpy/_build_utils/src/apple_sgemv_fix.c:26:
        In file included from numpy/core/include/numpy/arrayobject.h:4:
        In file included from numpy/core/include/numpy/ndarrayobject.h:21:
        build/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy/__multiarray_api.h:1463:1: warning: unused function '_import_array' [-Wunused-function]
        _import_array(void)
        ^
        1 warning generated.
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/scalarmath.c
        clang: numpy/core/src/common/python_xerbla.c
        clang: numpy/core/src/multiarray/mapping.c
        clang: numpy/core/src/multiarray/methods.c
        3 warnings generated.
        numpy/core/src/umath/loops.c.src:2611:22: warning: code will never be executed [-Wunreachable-code]
                npy_intp n = dimensions[0];
                             ^~~~~~~~~~
        numpy/core/src/umath/loops.c.src:2610:29: note: silence by adding parentheses to mark code as explicitly dead
            if (IS_BINARY_REDUCE && 0) {
                                    ^
                                    /* DISABLES CODE */ ( )
        numpy/core/src/umath/loops.c.src:2611:22: warning: code will never be executed [-Wunreachable-code]
                npy_intp n = dimensions[0];
                             ^~~~~~~~~~
        numpy/core/src/umath/loops.c.src:2610:29: note: silence by adding parentheses to mark code as explicitly dead
            if (IS_BINARY_REDUCE && 0) {
                                    ^
                                    /* DISABLES CODE */ ( )
        numpy/core/src/umath/loops.c.src:2611:22: warning: code will never be executed [-Wunreachable-code]
                npy_intp n = dimensions[0];
                             ^~~~~~~~~~
        numpy/core/src/umath/loops.c.src:2610:29: note: silence by adding parentheses to mark code as explicitly dead
            if (IS_BINARY_REDUCE && 0) {
                                    ^
                                    /* DISABLES CODE */ ( )
        3 warnings generated.
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/matmul.c
        clang: build/src.macosx-10.9-universal2-3.11/numpy/core/src/umath/clip.c
        error: Command "clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g -DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DNO_ATLAS_INFO=3 -DHAVE_CBLAS -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/umath -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Inumpy/core/include -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/common -Ibuild/src.macosx-10.9-universal2-3.11/numpy/core/src/npymath -c build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/scalartypes.c -o build/temp.macosx-10.9-universal2-3.11/build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/scalartypes.o -MMD -MF build/temp.macosx-10.9-universal2-3.11/build/src.macosx-10.9-universal2-3.11/numpy/core/src/multiarray/scalartypes.o.d -msse3 -I/System/Library/Frameworks/vecLib.framework/Headers" failed with exit status 1
        [end of output]
  
    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for numpy
  Failed to build numpy
  ERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projects
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

Take off with gesture

Hello,

How can we "take-off" the drone without the keyboard but with the gesture ?
Is there already a person who did that ?

thanks

Losing Control After Take-Off

Hello, when we command from PC and press spacebar to take-off we camera visual freezes and program not responds. How can we solve that ? Thanks in advance!

Regarding Run time / tello-gesture-control/running/ main.py

Reading configuration

usage: ipykernel_launcher.py [-h] [-c MY_CONFIG] [--device DEVICE]
[--width WIDTH] [--height HEIGHT]
[--is_keyboard IS_KEYBOARD]
[--use_static_image_mode]
[--min_detection_confidence MIN_DETECTION_CONFIDENCE]
[--min_tracking_confidence MIN_TRACKING_CONFIDENCE]
[--buffer_len BUFFER_LEN]
ipykernel_launcher.py: error: unrecognized arguments: -f C:\Users\mayank\AppData\Roaming\jupyter\runtime\kernel-97c73e9e-2e91-4deb-9b71-3f6e8e7a2fca.json
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.