こんにちは。
正月スペシャル第二弾!!(いま名前付けた)プログラマー兼AI開発担当の浅倉です。
普段はニューラルネットワークの研究とか開発とかをしています。
以前よりヒューマンライクな人工知能に興味があったこともあって、このプロジェクトに参加させてもらっています。
今回は現在開発中のDJロボットLynxについて、先日行ったPV撮影における制御手法と、今後の展望に関してソフトウェア側の視点からお話しさせていただきます。
Lynxの開発では、みんな大好きROSを利用しています。ロボット開発に携わった経験がある方には定番かもしれませんね。
ROSは多言語への対応や豊富なライブラリもさることながら、ハードウェアの抽象化がとてもお手軽になる優れものです。
LynxではDJセットを操作するアームのみならず、会場を見渡すヘッド部分もROSによって制御を行っていくことになると思います。
PV撮影では、試作機を用いて以下の手順で演奏を行ってみました。
1.事前に使用するボタン/つまみ/フェーダーに対する各モーターの角度を記録しておく
2.操作するボタン/つまみ/フェーダーとその時間・操作方法が記述された演奏ファイルを読み込む
3.2で読み込んだ演奏ファイルを元に、アームを動かしていく
アナログちっくですが簡単そうですね。
しかし全くそんなことは無く(笑)、試作機またはDJセットのどちらかの位置が少しでもズレると再び位置合わせをしなければならなくなるという難儀なものでした。
そのため、PV撮影中はこのように、渡辺君が台の下から試作機を抑えていてくれました。ありがとう…。
また、大切なDJセット(借り物)を壊さないように、
腕を上げる(Z軸)→ボタンの位置まで移動(XY軸)→腕を下ろす(Z軸)
といった制御を加えています。この動画が分かりやすいのではないでしょうか。
ここまで、PV撮影での制御手法についてお話しさせていただきました。私はこのようなロボットの操作にあまり親しくなかったので、経験者の方からすると当たり前の内容が多かったかもしれません(笑)。
試作機での演奏が難航した理由として、大きく分けて
1.モーターの制御が全てPWMで行われていて、細かな制御や速度の調節が困難
2.ロボットからのフィードバックが存在しない
の2つが挙げられると考えています。
PWMでの制御に関しては私も不慣れで、今考えるともっとやりようがあった気もしますが、開発効率を考えると今後はコマンド制御に切り替えていくべきでしょう。
更に、カメラで取得した画像や位置センサによるフィードバックがあれば、細かな位置合わせが楽になることは間違いありません。
PV撮影で得られたこれらの改善点を踏まえて、設計班では一号機の検討を行っています。
それでは最後に、今後の展望について軽くお話しさせていただきます。
このプロジェクトではオンラインイベントも開催する予定です。そこで、SNSを利用した楽曲投票を実施しようと計画しています。
そのため、投票していただいた曲同士を上手に繋ぐAIの開発を、DJの経験がある方と一緒に進めています。
また、せっかくのDJロボットなので本物のDJのように会場を沸かせてみたいですよね。
オフラインイベントではLynx一号機の頭部または胸部にカメラを設置し、会場の盛り上がり具合を観察するシステムを検討中です。
具体的には、このように会場にいる人の姿勢をAIによって推定し、手の上がり具合や、体の動きのリズム・度合などを観察していく予定です。
その他にも、観客の声量や温度、床の振動なんかを計測して利用するのも面白そうです。
会場の雰囲気や曲調に合わせてLynxの手や頭を動かしてみても盛り上がるかもしれませんね。
まだまだ色々なアイデアをメンバー一同で検討中ですので、今後とも皆様のシェア並びにご支援のほど、よろしくお願いいたします。