Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Topicを音で感じろ! ros2 sonify
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takashi Ogura
August 04, 2026
Technology
71
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Topicを音で感じろ! ros2 sonify
Takashi Ogura
August 04, 2026
More Decks by Takashi Ogura
See All by Takashi Ogura
株式会社シンクロボ_会社紹介 2026
ogura_sr
0
580
Other Decks in Technology
See All in Technology
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
140
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
250
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
120
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
180
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
110
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.3k
振り返りこそエンジニアの本領
negima
0
300
enechainの内製セルフサービスプラットフォーム
hiyosi
0
110
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
230
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
570
IoTハンズオンの舞台裏
shirouz
2
140
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.4k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Building Applications with DynamoDB
mza
96
7.2k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
690
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Done Done
chrislema
186
16k
Statistics for Hackers
jakevdp
799
230k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
450
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
580
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Raft: Consensus for Rubyists
vanstee
141
7.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Transcript
ros2 sonify ROS 2 のトピックをリアルタイムに音へ変換して、 耳で監視・異常検知する CLI ROSCon JP ライトニングトーク
/ 3 min github.com/OTL/ros2-sonify · Apache-2.0 ros2 sonify 0:00 – 0:20
グラフは一度に 1 枚。 耳は 同時に 何本でも。 なぜ音なのか rqt_plot を睨む 複数トピックを鳴らす
視線は 1 箇所しか置けない。 人間は複数の音を並列に聞き分けられる。 他のトピックで何が起きているかは、 画面から目を離してロボットを見ながら、 画面を切り替えるまで分からない。 異常だけ耳で捕まえる。 $ ros2 sonify /cmd_vel /scan /battery_state ros2 sonify 0:20 – 0:45
何が、どう聞こえるか マッピング 値の大小 → 音程(ペンタトニックに量子化) 値の変化 → 音量 メッセージレート →
トレモロの速さ トピックごとの区別 → 左右の定位 → 音色の濁り + 音量増 → 無音 NaN・レンジ外の値 受信の停止 トピック名しか渡していない。鳴らすフィールドは起動後 2 秒の観測で自動選択。 値域が桁違い(rad/s と mm と %)でも、減衰付き running min/max で正規化するので事前設定が要らない。 ros2 sonify 0:45 – 1:20
「濁る」と「黙る」は別の音 ここが要点 音色が濁る その声だけ消える センサが壊れた LiDAR に NaN が混入。値の範囲は正常のままなの ≠
ノードが落ちた 受信が途絶えた声だけが無音になる。 他の声は鳴り で グラフでは気づきにくいが、音は明らかに汚れる。 続けるので、どのトピックが 死んだのかがそのまま分 悪化するほど音量も上がる。 かる。 現場での対処がまったく違う。 ros2 sonify 音でも区別できないと意味がない。 1:20 – 2:00
効いている判断 聴き続けられる音にする ペンタトニックに量子化する。値をそのまま周波数にすると、複数トピックを同時に鳴らした瞬間に不協和で耳 が死ぬ。音階に丸めれば何本でも和音になる。 正常な変化は音程、異常は音色と音量。両方を音程で表すと「速く走っている」のか「壊れた」のか区別できな い。 異常判定に不感帯を置く。適応レンジは常に少しずつ縮むので、健全なサイン波でも毎周期わずかに端を押し 広げる。そのまま積算すると正常なロボットが延々とノイズを出す。 ros2 sonify
2:00 – 2:30
ROS を 2 ファイルに閉じ込める 設計 / 検証 純 Python 層
— rclpy を import しない extractor / selector / mapping / voices / engine / trace / replay ROS 層 monitor / command.sonify ROS 非搭載の環境でも音を検証でき、収録トレースを ROS なしで 再生できる。 test_no_rclpy_import.py が構造として固定。 音そのものを自動テストする 「無音でないこと」では止めない。生成した WAV を FFT にかけて 検証する。 音程も上がる(相関 > 0.8) NaN 混入で高域エネルギー増 停止で音量が落ちる ブロック境界のクリックノイズ回帰 値が上がれば Docker の ros:humble-ros-base で統合検証。 /scan は BEST_EFFORT なので既定の RELIABLE で購読すると 1 通も 届かず、エラーも出ずに「なぜか無音」になる。publisher の QoS を読んで追従。 ros2 sonify 2:30 – 2:50
耳で見る、ロボットのデバッグ まとめ # そのまま鳴らす(フィールドは自動選択) $ ros2 sonify /cmd_vel /scan #
音声デバイスが無い環境(CI・コンテナ・SSH 先) $ ros2 sonify /scan --output wav --wav-path out.wav # 収録 → ROS なしで再生(当日のバックアップ) $ ros2 sonify /scan --record trace.jsonl $ sonify-replay trace.jsonl --output audio github.com/OTL/ros2-sonify · Apache-2.0 ros2 sonify 2:50 – 3:00