Some checks failed
social-bot integration tests / Lint (flake8 + pep257) (push) Failing after 9s
social-bot integration tests / Core integration tests (mock sensors, no GPU) (push) Has been skipped
social-bot integration tests / Lint (flake8 + pep257) (pull_request) Failing after 8s
social-bot integration tests / Core integration tests (mock sensors, no GPU) (pull_request) Has been skipped
social-bot integration tests / Latency profiling (GPU, Orin) (push) Has been cancelled
social-bot integration tests / Latency profiling (GPU, Orin) (pull_request) Has been cancelled
Adds volume_adjust_node to saltybot_social:
- Subscribes /social/speech/energy (Float32 linear RMS [0..1] from vad_node)
- Maps energy to TTS volume via:
1. Normalise into [noise_floor, noise_ceil]
2. Power-curve shaping (curve_gamma; <1 concave, 1 linear, >1 convex)
3. Lerp to [min_volume, max_volume]
4. Exponential moving-average smoothing (smoothing_alpha)
- Publishes Float32 on /saltybot/tts_volume at publish_rate Hz (default 5 Hz)
- Holds last value when energy is stale (> stale_timeout_s)
- All params exposed: min/max_volume, noise_floor/ceil, curve_gamma,
smoothing_alpha, publish_rate, stale_timeout_s
- 74/74 tests passing
Closes #289
59 lines
2.7 KiB
Python
59 lines
2.7 KiB
Python
from setuptools import find_packages, setup
|
|
import os
|
|
from glob import glob
|
|
|
|
package_name = 'saltybot_social'
|
|
|
|
setup(
|
|
name=package_name,
|
|
version='0.1.0',
|
|
packages=find_packages(exclude=['test']),
|
|
data_files=[
|
|
('share/ament_index/resource_index/packages',
|
|
['resource/' + package_name]),
|
|
('share/' + package_name, ['package.xml']),
|
|
(os.path.join('share', package_name, 'launch'),
|
|
glob(os.path.join('launch', '*launch.[pxy][yma]*'))),
|
|
(os.path.join('share', package_name, 'config'),
|
|
glob(os.path.join('config', '*.yaml'))),
|
|
],
|
|
install_requires=['setuptools'],
|
|
zip_safe=True,
|
|
maintainer='seb',
|
|
maintainer_email='seb@vayrette.com',
|
|
description='Social interaction layer — person tracking, speech, LLM, TTS, orchestrator',
|
|
license='MIT',
|
|
tests_require=['pytest'],
|
|
entry_points={
|
|
'console_scripts': [
|
|
'person_state_tracker = saltybot_social.person_state_tracker_node:main',
|
|
'expression_node = saltybot_social.expression_node:main',
|
|
'attention_node = saltybot_social.attention_node:main',
|
|
'speech_pipeline_node = saltybot_social.speech_pipeline_node:main',
|
|
'conversation_node = saltybot_social.conversation_node:main',
|
|
'tts_node = saltybot_social.tts_node:main',
|
|
'orchestrator_node = saltybot_social.orchestrator_node:main',
|
|
# Voice command NLU bridge (Issue #137)
|
|
'voice_command_node = saltybot_social.voice_command_node:main',
|
|
# Multi-camera gesture recognition (Issue #140)
|
|
'gesture_node = saltybot_social.gesture_node:main',
|
|
# Hand gesture pointing direction (Issue #221)
|
|
'pointing_node = saltybot_social.pointing_node:main',
|
|
# Facial expression recognition (Issue #161)
|
|
'emotion_node = saltybot_social.emotion_node:main',
|
|
# Robot mesh communication (Issue #171)
|
|
'mesh_comms_node = saltybot_social.mesh_comms_node:main',
|
|
# Energy+ZCR voice activity detection (Issue #242)
|
|
'vad_node = saltybot_social.vad_node:main',
|
|
# Ambient sound classifier — mel-spectrogram (Issue #252)
|
|
'ambient_sound_node = saltybot_social.ambient_sound_node:main',
|
|
# Proximity-based greeting trigger (Issue #270)
|
|
'greeting_trigger_node = saltybot_social.greeting_trigger_node:main',
|
|
# Face-tracking head servo controller (Issue #279)
|
|
'face_track_servo_node = saltybot_social.face_track_servo_node:main',
|
|
# Speech volume auto-adjuster (Issue #289)
|
|
'volume_adjust_node = saltybot_social.volume_adjust_node:main',
|
|
],
|
|
},
|
|
)
|