ARラジコンを作る
モチベーション
最近、AR、VRデバイスが続々リリースされていますが、ラジコンにカメラを載せて、このカメラ画像をVRゴーグルにデバイスに表示して遊びたい!
ということで作ってみました。
(現状は、VRゴーグルに画像を表示して走るラジコン、というとこまでです。ARで何かを表示するというのは、これからになります。)
のんびり開発していたら先日ARマリカーが発売されてしまいました・・・。やりたいことはARマリカーとほぼ同じです。
開発したもの
システム構成
構成図
Oculus Goとコントローラ以外はラジコンの上に載っています。載せるための台は、適当にプラ棒などで作りました。
ハードウェア
- Oculus Go
- Raspberry Pi 4 Model B
- Arduino Uno
- タミヤ ワイルドウィリー2
- サーボモータ SG-90
- Raspberry Pi Camera Module V2.1
- USBカメラも可
- USBカメラも可
- Nintendo Switch Proコントローラー
- Bluetoothで使用できるコントローラなら何でも可
- 各ケーブル(ジャンパケーブル、USBケーブルなど)
- バッテリー
バッテリーは、持っていたモバイルバッテリーをラズパイに繋げたら動いたのでそのまま使っています。が、容量が若干足りていないので、ラズパイで使えるバッテリーを探して使用することをお勧めします。
環境・言語
- 環境
- Ubuntu 18.04 (Raspberry Pi)
- ROS, ROS#, ROS Serial
- 言語
- c++
- Unity
今回、各デバイス上で動くアプリはROSを使って開発しました。ROSにはアプリ間の通信や、センサデータの取得など色々な機能が揃っているので便利です。
また、ROSはUnityとArduinoをサポートしており、これらのアプリの開発にも使用しました。
開発
ソースコード
今回開発したソフトウェアはgithubで公開しています。
- https://github.com/hiro-han/ar-car-camera-controller
- https://github.com/hiro-han/ar-car-car-controller
- https://github.com/hiro-han/ar-car-arduino-controller
- https://github.com/hiro-han/ar-car-car-control-msgs
各機能の開発
各機能の開発方法についての詳細は、以下リンクを参照して下さい。
- Oculus GoにRaspiのカメラ画像を表示する&姿勢を取得する
- Oculus Goの姿勢を使ってサーボモーターをコントロールする
- Raspberry Pi, Arduinoでタミヤラジコンを制御する
- Raspberry PiでNintendo Switchのプロコンを使う
その他参考
※僕は電子工作についてはあまり詳しくありません。動くものはできましたが、安全かどうか、と言われると自信がありません。
Arduinoに繋いだモータを手動で回したらArduinoに電気が流れて回路が壊れるのでは?という気もしています。このあたり、詳しい方がいらっしゃたらご教授いただけると幸いです。(フォトカプラを使えばいい・・?)
Ubuntu server 18.04にROSをインストールする方法は公式にも説明がありますし、多くの人がまとめているます。
ビルド & 実行
githubからソースコードをcloneして、動かす手順は以下になります。
- 前提
- Raspiで専用カメラ、Bluetoothが使用できること
- ROSの環境構築ができていること
- コントローラ(
/dev/input/js0
)とArduino(/dev//dev/ttyACM0
)が一般ユーザで使用できること
ビルド
# ソースコードのクローン
$ cd {catkin_workspace}/src
$ git clone https://github.com/hiro-han/ar-car-car-controller.git car_controller
$ git clone https://github.com/hiro-han/ar-car-car-controller.git car_controller
$ git clone https://github.com/hiro-han/ar-car-arduino-controller.git arduino_controller
$ git clone https://github.com/hiro-han/ar-car-car-control-msgs.git car_control_msgs
# ビルド
$ cd {catkin_workspace}
$ catkin_make
$ source devel/setup.bash
# Arduinoにソフト書き込み
$ catkin_make arduino_controller_firmware_arduino_controller
$ catkin_make arduino_controller_firmware_arduino_controller-upload
実行
Launchファイルの作成
IPアドレスは、それぞれの環境に合わせて変更してください。
<launch>
<include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch" />
<param name="rosbridge_websocket/address" value="192.168.4.8"/>
<node name="uvc_camera" pkg="uvc_camera" type="uvc_camera_node"/>
<node name="joy_node" pkg="joy" type="joy_node" />
<node name="camera_controller" pkg="camera_controller" type="camera_controller_node"/>
<node name="car_controller" pkg="car_controller" type="car_controller_node">
<param name="controller_type" value="ProCon" type="string" />
</node>
<node name="arduino_controller" pkg="rosserial_python" type="serial_node.py">
<param name="port" value="/dev/ttyACM0" />
</node>
</launch>
実行
1.ROSの実行
$ roslaunch ar-car.launch
2.Oculusアプリの実行
最後に
これでOculus Goでカメラ画像を見つつ、コントローラでラジコンを制御できます。
好きなように遊んでください。
Author And Source
この問題について(ARラジコンを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/hiro-han/items/b2e5ae68d16e9116b37e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .