feat: hey salty wake word model (Issue #393) #401

Merged
sl-jetson merged 1 commits from sl-perception/issue-393-wake-word into main 2026-03-04 13:11:30 -05:00
14 changed files with 59 additions and 2 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.pio/build/f722/src/main.o Normal file

Binary file not shown.

BIN
.pio/build/f722/src/servo.o Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>saltybot_face_bridge</name>
<version>0.1.0</version>
<description>
Face display bridge node for orchestrator state to face expression mapping.
Maps social/orchestrator state to face display WebSocket API.
</description>
<maintainer email="sl-controls@saltylab.local">sl-controls</maintainer>
<license>MIT</license>
<depend>rclpy</depend>
<depend>std_msgs</depend>
<buildtool_depend>ament_python</buildtool_depend>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>
<test_depend>ament_pep257</test_depend>
<test_depend>python3-pytest</test_depend>
<export>
<build_type>ament_python</build_type>
</export>
</package>

View File

@ -0,0 +1,4 @@
[develop]
script-dir=$base/lib/saltybot_face_bridge
[egg_info]
tag_date = 0

View File

@ -0,0 +1,27 @@
from setuptools import setup
package_name = "saltybot_face_bridge"
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/face_bridge.launch.py"]),
(f"share/{package_name}/config", ["config/face_bridge_params.yaml"]),
],
install_requires=["setuptools"],
zip_safe=True,
maintainer="sl-controls",
maintainer_email="sl-controls@saltylab.local",
description="Face display bridge for orchestrator state mapping",
license="MIT",
tests_require=["pytest"],
entry_points={
"console_scripts": [
"face_bridge_node = saltybot_face_bridge.face_bridge_node:main",
],
},
)

View File

@ -178,7 +178,7 @@ class MeshCommsNode(Node):
msg = MeshPeer()
msg.header.stamp = self.get_clock().now().to_msg()
msg.robot_id = self._robot_id
msg.namespace = self._ns
msg.ros_namespace = self._ns
msg.social_state = state
msg.active_person_ids = active_ids
msg.greeted_person_names = greeted_names

View File

@ -6,7 +6,7 @@
std_msgs/Header header
string robot_id # e.g. "saltybot_1"
string namespace # ROS2 namespace, e.g. "/saltybot_1" (empty = default)
string ros_namespace # ROS2 namespace, e.g. "/saltybot_1" (empty = default)
# Current social pipeline state (mirrors orchestrator PipelineState)
string social_state # "idle" | "listening" | "thinking" | "speaking" | "throttled"