remotv / controller Goto Github PK
View Code? Open in Web Editor NEWThis project forked from letsrobot/letsrobot
Open source software for pairing your robot with remo.tv
Home Page: http://remo.tv/
License: Apache License 2.0
This project forked from letsrobot/letsrobot
Open source software for pairing your robot with remo.tv
Home Page: http://remo.tv/
License: Apache License 2.0
Setting speaker_device
in controller.conf
to Device
returns a fatal exception,
AttributeError: 'NoneType' object has no attribute 'group'
Steps to reproduce the behavior:
[tts] speaker_device
to Device
in controller.confExpected behavior
getAudioDeviceByName
should have gotten (in my case) card 2, returns AttributeError instead.
Log
23:30:28 - controller.py : RemoTV Controller Starting up
23:30:28 - controller.py : command line arguments : {nothing important}
23:30:28 - controller.py : loading tts
23:30:28 - audio_util.py : devices : **** list of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 2: Device [USB2.0 Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 7/7
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
card 3: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
23:30:28 - audio_util.py : Found Audio Device : **** List of PLAYBACK Hardware Devices ****
23:30:28 - controller.py : Unhandled exception of type : <type 'exceptions.AttributeError'>
Traceback (most recent call last):
File "controller.py", line 303, in <module>
tts.setup(robot_config)
File "/home/pi/remotv/tts/tts.py", line 61, in setup
temp_hw_num = audio_util.getSpeakerByName(audio_device.encode('utf-8'))
File "/home/pi/remotv/audio_util.py", line 25, in getSpeakerByName
return(getAudioDeviceByName(name, ["aplay", "-l"]))
File "/home/pi/remotv/audio_util.py", line 15, in getAudioDeviceByName
return int(result.group(1))
AttributeError: 'NoneType' object has no attribute 'group'
Configurations
repo version:
commit 14d59d2478aa4b8ff22c144c4f42fed121ffc25f (HEAD -> master, origin/master, origin/HEAD)
Author: Peter Steele <[email protected]>
Date: Mon Sep 9 18:54:26 2019 +1000
Only respond to chat messages in the appropriate channel.
- One line change to controller.py that drops messages that aren't flagged as coming from the channel the controller connected to.
Additional context
It appears to be grabbing the first line where "Device" exists, in this case "**** List of PLAYBACK Devices ****"
A handler should be implemented for when a channel could not be gotten. This normally happens when an API key is not valid. Currently the only way to tell is that the site does not get anything from the robot.
Example output:
20:58:03 - ffmpeg-arecord.py : audioCommandLine : /usr/bin/arecord -D hw:3,0 -c 1 -f S16_LE -r 44100 | /usr/bin/ffmpeg -i - -ar 44100 -f mpegts -codec:a mp2 -b:a 128k -bufsize 8192k -muxdelay 0.001 -nostats http://dev.remo.tv:1567/transmit?name=None-audio
20:58:03 - controller.py : Loading extended chat commands
20:58:04 - extended_command.py : Moderators :
20:58:03 - controller.py : Unable to find chat_custom.py
20:58:03 - controller.py : RemoTV Controller Started
Implement version checking via git status and have it announce an out of date repo via TTS. Default off.
May turn default ON after "release"
i have a problem running one of my bots
when i try to run the controller.py file it says in cmd on windows because i'm running it on windows
09:40:41 - controller.py : RemoTV Controller Starting up 09:40:43 - controller.py : Unknown event type 09:40:43 - controller.py : RemoTV Controller Started 09:40:43 - ffmpeg.py : ffmpeg Video : [] 09:40:44 - watchdog.py : Process FFmpegCameraProcess not running, restarting 09:40:44 - ffmpeg.py : ffmpeg Video : [] 09:40:45 - watchdog.py : Process FFmpegCameraProcess not running, restarting 09:40:45 - ffmpeg.py : ffmpeg Video : [] 09:40:46 - watchdog.py : Process FFmpegCameraProcess not running, restarting 09:40:46 - ffmpeg.py : ffmpeg Video : [] 09:40:47 - watchdog.py : Process FFmpegCameraProcess not running, restarting 09:40:47 - ffmpeg.py : ffmpeg Video : [] 09:40:48 - watchdog.py : Process FFmpegCameraProcess not running, restarting 09:40:48 - ffmpeg.py : ffmpeg Video : [] 09:40:49 - watchdog.py : Process FFmpegCameraProcess not running, restarting 09:40:49 - ffmpeg.py : ffmpeg Video : []
i once got that yesterday when it wasn't working on the pi but i just had to bash kill commands
When a robot fails to enter a ready state, it should not say the boot message. That is to say, when a robot fails to authenticate, it should not continue saying "OK" until it's killed.
This appears to be somewhat addressed in networking.py
, however I've failed to observe the termination actually terminating; although it may be an overzealous repeat_start
starting the script after it's terminated, I'm not quite sure.
Describe the bug:
A clear and concise description of what the bug is.
When running controller.py
on a BeagleBone Blue I am unable to see a video stream on the website but I do get an audio stream.
To Reproduce:
Steps to reproduce the behavior:
controller.conf
with username, api key, and check that camera_device = /dev/video0
does exist and matches. (I like to use ls /dev/video*
). Save and close.python3 controller.py
.python3 controller.py
.debian@beaglebone:~/remotv$ python controller.py
04:48:27 - controller.py : RemoTV Controller Starting up
modprobe: FATAL: Module bcm2835_wdt not found in directory /lib/modules/4.14.71-ti-r80
aplay: main:788: audio open error: No such file or directory
04:48:29 - controller.py : RemoTV Controller Started
04:48:29 - controller.py : Unknown event type
For comparison, I performed the same steps on a Raspberry Pi and was able to stream both audio and video perfectly fine. Below is the output of python3 controller.py
.
pi@robopi:~/remotv $ python controller.py
14:25:02 - controller.py : RemoTV Controller Starting up
Failed to start watchdog.service: Unit watchdog.service not found.
aplay: main:788: audio open error: No such file or directory
14:25:04 - controller.py : RemoTV Controller Started
14:25:04 - controller.py : Unknown event type
14:25:06 - watchdog.py : Process FFmpegAudioProcess not running, restarting
14:25:06 - watchdog.py : Process FFmpegCameraProcess not running, restarting
Controller Version:
Running sh git log -1
outputs:
commit 68bc77f7c9591cd678b5158f0b30c91c462ce42f (HEAD -> master, origin/master,origin/HEAD)
Author: Bryan Morrison <[email protected]>
Date: Wed Oct 23 13:52:46 2019 -0700
Fix error where ThunderBorg bots would be unable to move
In my supreme laziness back on LR, I forced all directions to upper case so when we switched to all lowercase commands, no direction would fire.
Most commands are uppercase in controller while all default commands are lowercase on the site
When I fire up remo controller on Windows, I get this error from python:
p_build_version=00003.00004.00000
2020-02-29 15:03:19,037 cozmo.general INFO Found robot id=1
2020-02-29 15:03:19,039 cozmo.general INFO Connected to iOS device_id=1 serial=d8ce66a1a256da38b0f1b35e72046c9452a466f2
2020-02-29 15:03:19,269 cozmo.general INFO Robot id=1 serial=02e11d84 initialized OK
not coz
15:03:19 - controller.py : Unhandled exception of type : <class 'ModuleNotFoundError'>
Traceback (most recent call last):
File "controller.py", line 356, in
video_module = importlib.import_module('video.'+commandArgs.video)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\importlib_init_.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1014, in _gcd_import
File "", line 991, in _find_and_load
File "", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'video.cozmo'
Please help, I want to get this working.
Also, I can't figure out how to use cozmo's integrated camera as a video device, and cozmo_tts doesn't fully work.
Update login domain url to the same.
Describe the bug
During Motor Hat install following command fails. See Additional Context
sudo python setup.py
To Reproduce
Steps to reproduce the behavior:
Use Raspberry Pi imager to flash Raspberry Pi OS (32-bit)
Released 2021-10-30
Online -1.1 GB download
Follow remo.tv documentation installation procedure.
Expected behavior
Expected successful installation.
Screenshots
Screenshots of the console are appreciated.
Logs
Always try to share logs if you can, or an output of the console.
Configurations
controller.conf
file could help. We obviously don't need things like your API key, username, etc.[robot]
owner=silker
robot_key= Gandalf's key here
channel=
type=motor_hat
turn_delay=0.4
straight_delay=0.5
[camera]
no_camera=false
no_mic=false
type=ffmpeg-arecord
#x_res = 640
#y_res = 480
x_res = 768
y_res = 432
#x_res = 1280
#y_res = 720
camera_device = /dev/video0
#camera_device = video="USB Webcam"
mic_num = 1,0
mic_device=
#windows
#mic_device = audio="Microphone (Logitech G533 Gaming Headset)"
[ffmpeg]
ffmpeg_location = /usr/bin/ffmpeg
#ffmpeg_location = c://ffmpeg//bin//ffmpeg.exe
v4l2-ctl_location=/usr/bin/v4l2-ctl
audio_codec = mp2
audio_channels = 1
audio_bitrate = 32
audio_sample_rate = 44100
video_codec = mpeg1video
video_bitrate = 350
#video_filter = transpose=2,transpose=2
#audio_input_format = dshow
#audio_input_options = -audio_buffer_size 250
audio_input_format = alsa
audio_input_options =
audio_output_options = -nostats
video_input_format = v4l2
video_input_options =
video_output_options = -nostats -threads 2
[ffmpeg-arecord]
arecord_path=/usr/bin/arecord
arecord_format=S16_LE
[tts]
type=espeak
tts_volume=80
anon_tts=true
filter_url_tts=true
ext_chat=true
speaker_num=1,0
speaker_device=
boot_message=ok
announce_ip=False
annouce_out_of_date=False
delay_tts = false
delay = 10
[espeak]
male = True
voice_number=1
#espeak_path=
#espeak_path=C://Program Files (x86)//eSpeak//command_line//
[festival]
[pico]
voice=en-US
[polly]
robot_voice=Matthew
owner_voice=Russell
random_voices=true
access_key=
secrets_key=
region_name=us-east-1
[google_cloud]
ssml_enabled=False
key_file=
voice=en-US-Wavenet-A
#pitch can be between -20.0 and 20.0, 0.0 is default pitch for chosen voice
voice_pitch=0.0
#speaking rate can be between 0.25 and 4.0, 1.0 is default rate
voice_speaking_rate=1.0
random_voices=False
standard_voices=False
strict_languages= en-US,en-GB,en-AU
[cozmo]
forward_speed = 75
turn_speed = 50
volume = 100
charge_high = 4.79
charge_low = 3.6
send_online_status = 1
stay_on_dock = 0
annotated = 0
colour = 0
[adafruit_pwm]
address=0x40
pwm_freq=60
more_debug=False
[owi_arm]
[serial]
serial_device=/dev/ttyACM0
#serial_device=COM3 # Windows example serial device
#Option value, that will search for a serial port with a specific hardware
#name or id. Overwrites serial_device with the correct value if found.
#serial_name=Arduino
baud_rate=9600
[motor_hat]
day_speed = 255
night_speed = 255
turning_speed = 250
forward=[-1,1,-1,1]
left=[1,1,1,1]
slow_for_low_battery = false
charge_hours = 3.0
discharge_hours = 8.0
chargeCheckInterval=5
chargeIONumber = 17
[gopigo2]
drive_time=0.35
turn_time=0.15
[gopigo3]
drive_time=0.35
turn_time=0.15
[l298n]
StepPinForward=12,16
StepPinBackward=11,15
StepPinLeft=15,12
StepPinRight=11,16
sleeptime=0.2
rotatetimes=5
[motozero]
MotorDelay = 0.3
Motor1A = 24
Motor1B = 27
Motor1Enable = 5
Motor2A = 6
Motor2B = 22
Motor2Enable = 17
Motor3A = 23
Motor3B = 16
Motor3Enable = 12
Motor4A = 13
Motor4B = 18
Motor4Enable = 25
[pololu]
drivingSpeed=90
[mc33926]
drivingSpeed=180
[max7219]
ledrotate=180
[thunderborg]
left_motor_max=1.0
right_motor_max=1.0
sleep_time=0.4
[megapi_board]
motor_time = 0.2
driving_speed = 150
arm_speed = 50
grabber_speed = 50
left_track_port = 2
right_track_port = 3
grabber_port = 4
arm_port = 1
[mqtt_pub]
host = YourBrokerID
port = 1883
topic = LR/command
#username for MQTT server.
#Not needed unless the server is accessible from outside the local network
#user = remo
#password for user on MQTT server. This can be blank. This also sets MQTT to try to use ssl
#if using SSL, the port should be 8883
#pass = hunter2
[logging]
log_file=controller.log
file_level=WARNING
console_level=ERROR
max_size=100000
num_backup=2
[misc]
server = remo.tv
api_version = dev
video_server = remo.tv:1567
custom_hardware = True
custom_tts = True
custom_chat = True
custom_video = True
watchdog = True
enable_async=False
check_internet=True
check_freq=120
git log -1
pi@raspberrypi:~/remotv $ git log -1
commit 36ac390 (HEAD -> master, origin/master, origin/HEAD)
Merge: 160a968 13a4b36
Author: Nocturnal42 [email protected]
Date: Tue Apr 20 03:15:49 2021 +1000
Merge pull request #37 from MrSpoon/master
Bug fix for pololu drive
Additional context
Add any other context about the problem here.
During installation sudo python setup.py install fails. See following:
pi@raspberrypi:/usr/local/src $ cd /usr/local/src/Adafruit-Motor-HAT-Python-Library && sudo python setup.py install
running install
running bdist_egg
running egg_info
creating Adafruit_MotorHAT.egg-info
writing requirements to Adafruit_MotorHAT.egg-info/requires.txt
writing Adafruit_MotorHAT.egg-info/PKG-INFO
writing top-level names to Adafruit_MotorHAT.egg-info/top_level.txt
writing dependency_links to Adafruit_MotorHAT.egg-info/dependency_links.txt
writing manifest file 'Adafruit_MotorHAT.egg-info/SOURCES.txt'
reading manifest file 'Adafruit_MotorHAT.egg-info/SOURCES.txt'
writing manifest file 'Adafruit_MotorHAT.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
running build_py
creating build
creating build/lib.linux-armv7l-2.7
creating build/lib.linux-armv7l-2.7/Adafruit_MotorHAT
copying Adafruit_MotorHAT/Adafruit_PWM_Servo_Driver.py -> build/lib.linux-armv7l -2.7/Adafruit_MotorHAT
copying Adafruit_MotorHAT/Adafruit_MotorHAT_Motors.py -> build/lib.linux-armv7l- 2.7/Adafruit_MotorHAT
copying Adafruit_MotorHAT/init.py -> build/lib.linux-armv7l-2.7/Adafruit_Mot orHAT
creating build/bdist.linux-armv7l
creating build/bdist.linux-armv7l/egg
creating build/bdist.linux-armv7l/egg/Adafruit_MotorHAT
copying build/lib.linux-armv7l-2.7/Adafruit_MotorHAT/Adafruit_PWM_Servo_Driver.p y -> build/bdist.linux-armv7l/egg/Adafruit_MotorHAT
copying build/lib.linux-armv7l-2.7/Adafruit_MotorHAT/Adafruit_MotorHAT_Motors.py -> build/bdist.linux-armv7l/egg/Adafruit_MotorHAT
copying build/lib.linux-armv7l-2.7/Adafruit_MotorHAT/init.py -> build/bdist. linux-armv7l/egg/Adafruit_MotorHAT
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_MotorHAT/Adafruit_PWM_Servo Driver.py to Adafruit_PWM_Servo_Driver.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_MotorHAT/Adafruit_MotorHAT Motors.py to Adafruit_MotorHAT_Motors.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_MotorHAT/init.py to i nit.pyc
creating build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_MotorHAT.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG- INFO
copying Adafruit_MotorHAT.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/E GG-INFO
copying Adafruit_MotorHAT.egg-info/dependency_links.txt -> build/bdist.linux-arm v7l/egg/EGG-INFO
copying Adafruit_MotorHAT.egg-info/requires.txt -> build/bdist.linux-armv7l/egg/ EGG-INFO
copying Adafruit_MotorHAT.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg /EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/Adafruit_MotorHAT-1.4.0-py2.7.egg' and adding 'build/bdist.linux- armv7l/egg' to it
removing 'build/bdist.linux-armv7l/egg' (and everything under it)
Processing Adafruit_MotorHAT-1.4.0-py2.7.egg
Copying Adafruit_MotorHAT-1.4.0-py2.7.egg to /usr/local/lib/python2.7/dist-packa ges
Adding Adafruit-MotorHAT 1.4.0 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/Adafruit_MotorHAT-1.4.0-py2.7.e gg
Processing dependencies for Adafruit-MotorHAT==1.4.0
Searching for Adafruit-GPIO>=0.7
Downloading https://github.com/adafruit/Adafruit_Python_GPIO/tarball/master#egg= Adafruit-GPIO-0.7
Best match: Adafruit-GPIO 0.7
Processing master
Writing /tmp/easy_install-v76fWi/adafruit-Adafruit_Python_GPIO-a12fee3/setup.cfg
Running adafruit-Adafruit_Python_GPIO-a12fee3/setup.py -q bdist_egg --dist-dir / tmp/easy_install-v76fWi/adafruit-Adafruit_Python_GPIO-a12fee3/egg-dist-tmp-D6Sxc 1
Adafruit GPIO Library
Works best with Python 2.7
THIS INSTALL SCRIPT MAY REQUIRE ROOT/ADMIN PERMISSIONS
Especially if you installed python for "all users" on Windows
try the following in your systems terminal if ensurepip is not sufficient:
$ python -m ensurepip --upgrade
$ python -m pip install --upgrade pip setuptools
zip_safe flag not set; analyzing archive contents...
Moving Adafruit_GPIO-1.0.4-py2.7.egg to /usr/local/lib/python2.7/dist-packages
Adding Adafruit-GPIO 1.0.4 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/Adafruit_GPIO-1.0.4-py2.7.egg
Searching for adafruit-pureio
Reading https://pypi.org/simple/adafruit-pureio/
Downloading https://files.pythonhosted.org/packages/df/ca/9162d4648669d12af16d5a 66d808bdef6967eb684cbed9b1a3ebc19b361a/Adafruit_PureIO-1.1.9.tar.gz#sha256=2caf2 2fb07c7f771d83267f331a76cde314723f884a9570ea6f768730c87a879
Best match: Adafruit-PureIO 1.1.9
Processing Adafruit_PureIO-1.1.9.tar.gz
Writing /tmp/easy_install-wfr1Br/Adafruit_PureIO-1.1.9/setup.cfg
Running Adafruit_PureIO-1.1.9/setup.py -q bdist_egg --dist-dir /tmp/easy_install -wfr1Br/Adafruit_PureIO-1.1.9/egg-dist-tmp-QILjuZ
Traceback (most recent call last):
File "setup.py", line 30, in
packages = find_packages())
File "/usr/lib/python2.7/dist-packages/setuptools/init.py", line 145, in s etup
return distutils.core.setup(**attrs)
File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 67 , in run
self.do_egg_install()
File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 11 7, in do_egg_install
cmd.run()
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 443, in run
self.easy_install(spec, not self.no_deps)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 685, in easy_install
return self.install_item(None, spec, tmpdir, deps, True)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 732, in install_item
self.process_distribution(spec, dist, deps)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 777, in process_distribution
[requirement], self.local_index, self.easy_install
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 782, i n resolve
replace_conflicting=replace_conflicting
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 1065, in best_match
return self.obtain(req, installer)
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 1077, in obtain
return installer(requirement)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 704, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 730, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 915, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 1183, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 1169, in run_setup
run_setup(setup_script, args)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 253, in ru n_setup
raise
File "/usr/lib/python2.7/contextlib.py", line 35, in exit
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 195, in se tup_context
yield
File "/usr/lib/python2.7/contextlib.py", line 35, in exit
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 166, in sa ve_modules
saved_exc.resume()
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 141, in re sume
six.reraise(type, exc, self._tb)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 154, in sa ve_modules
yield saved
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 195, in se tup_context
yield
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 250, in ru n_setup
_execfile(setup_script, ns)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 45, in _ex ecfile
exec(code, globals, locals)
File "/tmp/easy_install-wfr1Br/Adafruit_PureIO-1.1.9/setup.py", line 51, in
File "/usr/lib/python2.7/dist-packages/setuptools/init.py", line 144, in s etup
_install_setup_requires(attrs)
File "/usr/lib/python2.7/dist-packages/setuptools/init.py", line 139, in _ install_setup_requires
dist.fetch_build_eggs(dist.setup_requires)
File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 724, in fetch _build_eggs
replace_conflicting=True,
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 782, i n resolve
replace_conflicting=replace_conflicting
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 1065, in best_match
return self.obtain(req, installer)
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 1077, in obtain
return installer(requirement)
File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 791, in fetch _build_egg
return cmd.easy_install(req)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 704, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 730, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 915, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 1183, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", li ne 1169, in run_setup
run_setup(setup_script, args)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 253, in ru n_setup
raise
File "/usr/lib/python2.7/contextlib.py", line 35, in exit
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 195, in se tup_context
yield
File "/usr/lib/python2.7/contextlib.py", line 35, in exit
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 166, in sa ve_modules
saved_exc.resume()
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 141, in re sume
six.reraise(type, exc, self._tb)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 154, in sa ve_modules
yield saved
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 195, in se tup_context
yield
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 250, in ru n_setup
_execfile(setup_script, ns)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _ex ecfile
code = compile(script, filename, 'exec')
File "/tmp/easy_install-wfr1Br/Adafruit_PureIO-1.1.9/temp/easy_install-uWckwE/ setuptools_scm-6.3.2/setup.py", line 22
f"{type(self).name} is forbidden, "
^
SyntaxError: invalid syntax
I was trying to get my Anki Vector up and streaming on Remo, and it looks like the controller files already have python files for vector in every category!
In the /video folder...
In the TTS folder...
and even in the hardware folder!
Problem is when I use those parameters in controller.conf, it still thinks I want to stream a Cozmo, (probably because the new vector robot controller, is a duplicate copy of my original cozmo controller folder) even though I set everything to vector stuff. (e.g. type=vector under robot, tts=vector_tts under tts, and type=vector_vid under camera)
Please help
Describe the bug
When controlling the audio via the headphone jack. Audio volume control does not appear to work. Running .tts vol 50
does not do anything. However, entering amixer cset numid=1 80%
or 50%
in the terminal will change the volume
To Reproduce
Steps to reproduce the behavior:
speaker_num
in the controller.conf to 0,0
..tts vol 50
, then .tts vol 80
. Notice no changeExpected behavior
Volume level is adjustable
Screenshots
n/a
Logs
n/a
Configurations
# ALSA HW number for your playback device
# For Tellys this is 2.
# If you have trouble with the playback device changing hardware numbers,
# use the audio device name. Otherwise, leave it blank.
speaker_num=0,0
speaker_device=
Not quite sure how we should implement this in the code, as the alsa HW number is 0, but the command id is 1 for amixer cset numid=1 80%
. Not sure how USB speakers handle this, or what they appear as.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.