Automatic night mode detection and stealth operation: - Ambient light detection: auto-switch at 50 lux threshold - Motor speed reduction: 50% speed in stealth mode - LED control: dim to 5% minimum brightness with slow blue fade - Face-only mode: disable TTS speaker, show text on face - IR-based tracking: use IR cameras only (RGB disabled) - Face brightness: reduce to 30% for low-light visibility - Manual override: voice commands and gamepad toggle (Y button) - Smooth transitions: 1-second fade between modes with ramps Features: - Hysteresis: 5 lux band prevents mode flickering - Light sensor smoothing: 5-sample averaging for stability - Transition manager: smooth motor ramp (2s), LED fade (0.5s) - Multiple sensor support: RealSense IR, phone ambient sensor - Stealth LED pattern: slow breathing dim blue (0.3 Hz) Configuration: - YAML-based threshold and behavior settings - Per-subsystem transition timing - Tracking parameter tuning for IR mode - Face control with contrast boost Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
31 lines
951 B
Python
31 lines
951 B
Python
from setuptools import setup
|
|
|
|
package_name = "saltybot_night_mode"
|
|
|
|
setup(
|
|
name=package_name,
|
|
version="0.1.0",
|
|
packages=[package_name],
|
|
data_files=[
|
|
("share/ament_index/resource_index/packages", [f"resource/{package_name}"]),
|
|
(f"share/{package_name}", ["package.xml"]),
|
|
(f"share/{package_name}/launch", ["launch/night_mode.launch.py"]),
|
|
(f"share/{package_name}/config", ["config/night_mode_config.yaml"]),
|
|
],
|
|
install_requires=["setuptools", "pyyaml"],
|
|
zip_safe=True,
|
|
maintainer="sl-mechanical",
|
|
maintainer_email="sl-mechanical@saltylab.local",
|
|
description=(
|
|
"Night mode controller: IR perception, motor speed reduction, "
|
|
"stealth LED, TTS disable, face-only mode"
|
|
),
|
|
license="MIT",
|
|
tests_require=["pytest"],
|
|
entry_points={
|
|
"console_scripts": [
|
|
"night_mode_node = saltybot_night_mode.night_mode_node:main",
|
|
],
|
|
},
|
|
)
|