0

I am making a weird robot out of k'nex and a pi and I am controlling it over bluetooth with a DS4.

The motor

The controller

The DS4's D-pad will control the movement. I was looking for librarys to drive the controller, and I found approxeng.input. Judging by the docs, seemed a relatively good library, and, as I have a WiiMote too as a backup, I was hopeful. I tried to install it with:

pip3 install approxeng.input

here it the output:

Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting approxeng.input==2.6.3
  Using cached https://www.piwheels.org/simple/approxeng-input/approxeng.input-2.6.3-py3-none-any.whl (44 kB)
Requirement already satisfied: evdev==1.2.0 in ./.local/lib/python3.9/site-packages (from approxeng.input==2.6.3) (1.2.0)
Collecting pyyaml==5.4 (from approxeng.input==2.6.3)
  Using cached PyYAML-5.4.tar.gz (174 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [62 lines of output]
      /tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
      !!
      
              ********************************************************************************
              The license_file parameter is deprecated, use license_files instead.
      
              By 2023-Oct-30, you need to update your project and remove deprecated calls
              or your builds will no longer be supported.
      
              See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
              ********************************************************************************
      
      !!
        parsed = self.parsers.get(option_name, lambda x: x)(value)
      running egg_info
      writing lib3/PyYAML.egg-info/PKG-INFO
      writing dependency_links to lib3/PyYAML.egg-info/dependency_links.txt
      writing top-level names to lib3/PyYAML.egg-info/top_level.txt
      Traceback (most recent call last):
        File "/home/pi/.local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/pi/.local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/home/pi/.local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 338, in run_setup
          exec(code, locals())
        File "<string>", line 271, in <module>
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 107, in setup
          return distutils.core.setup(**attrs)
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 314, in run
          self.find_sources()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 322, in find_sources
          mm.run()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 551, in run
          self.add_defaults()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/command/egg_info.py", line 589, in add_defaults
          sdist.add_defaults(self)
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/command/sdist.py", line 104, in add_defaults
          super().add_defaults()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py", line 251, in add_defaults
          self._add_defaults_ext()
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py", line 336, in _add_defaults_ext
          self.filelist.extend(build_ext.get_source_files())
        File "<string>", line 201, in get_source_files
        File "/tmp/pip-build-env-6dwuo43c/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__
          raise AttributeError(attr)
      AttributeError: cython_sources
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel 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.

After a bit of trial and error, I found I could do this:

pip3 install approxeng.input==2.6.2

but whenever I tried pip3 install approxeng.input==2.6.3(i.e the newest version, according to the docs) the long list of errors came again.

So i went along with working with the older version, and I made a fair script to make it go forwards and backwards:

    from approxeng.input.selectbinder import ControllerResource, ControllerRequirement, ControllerNotFoundError
from approxeng.input.dualshock4 import DualShock4
from gpiozero.pins.pigpio import PiGPIOFactory
from approxeng.input.controllers import ControllerNotFoundError
from gpiozero import Device, Servo
from os import system as cli
Device.pin_factory = PiGPIOFactory()
s = Servo(2)
# Get a joystick
while True:
    try:
        with ControllerResource(ControllerRequirement(require_class=DualShock4)) as joystick:
            print(str(joystick.battery_level * 100), '%')
            # Loop until we're disconnected
            while joystick.connected:
                joystick.check_presses()
                if joystick.presses.dup:
                    s.min()
                    joystick.set_ds4_led('green')
                    while not joystick.releases.dup:
                        joystick.check_presses()
                    s.mid()
                    joystick.set_ds4_led('blue')
                    
                if joystick.presses.ddown:
                    s.max()
                    joystick.set_ds4_led('red')
                    while not joystick.releases.ddown:
                        joystick.check_presses()
                    s.mid()
                    joystick.set_ds4_led('blue')
                    
    except ControllerNotFoundError:
        print('Waiting to connect.)

Then I checked the docs for the information on release 2.6.3. It seemed they had added support for controller vibration, which I thought was cool, so I kinda wanted that new version, but I didn't know how to get rid of that error. Any help appreciated!

0 Answers0