17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry PiAdvent Calendar 2020

Day 12

ARラジコンを作る

Last updated at Posted at 2020-12-11

モチベーション

最近、AR、VRデバイスが続々リリースされていますが、ラジコンにカメラを載せて、このカメラ画像をVRゴーグルにデバイスに表示して遊びたい!
ということで作ってみました。
(現状は、VRゴーグルに画像を表示して走るラジコン、というとこまでです。ARで何かを表示するというのは、これからになります。)

のんびり開発していたら先日ARマリカーが発売されてしまいました・・・。やりたいことはARマリカーとほぼ同じです。

開発したもの

car.jpg

car-run-optimized.gif

システム構成

構成図

構成は大まかにこのようになっています。
ar-car.png

Oculus Goとコントローラ以外はラジコンの上に載っています。載せるための台は、適当にプラ棒などで作りました。

ハードウェア

  • Oculus Go
  • Raspberry Pi 4 Model B
  • Arduino Uno
  • タミヤ ワイルドウィリー2
  • サーボモータ SG-90
  • Raspberry Pi Camera Module V2.1
    • USBカメラも可
  • Nintendo Switch Proコントローラー
    • Bluetoothで使用できるコントローラなら何でも可
  • 各ケーブル(ジャンパケーブル、USBケーブルなど)
  • バッテリー

バッテリーは、持っていたモバイルバッテリーをラズパイに繋げたら動いたのでそのまま使っています。が、容量が若干足りていないので、ラズパイで使えるバッテリーを探して使用することをお勧めします。

環境・言語

  • 環境
    • Ubuntu 18.04 (Raspberry Pi)
    • ROS, ROS#, ROS Serial
  • 言語
    • c++
    • Unity

今回、各デバイス上で動くアプリは***ROS***を使って開発しました。ROSにはアプリ間の通信や、センサデータの取得など色々な機能が揃っているので便利です。
また、ROSはUnityとArduinoをサポートしており、これらのアプリの開発にも使用しました。

開発

ソースコード

今回開発したソフトウェアはgithubで公開しています。

各機能の開発

各機能の開発方法についての詳細は、以下リンクを参照して下さい。

その他参考

※僕は電子工作についてはあまり詳しくありません。動くものはできましたが、安全かどうか、と言われると自信がありません。
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アドレスは、それぞれの環境に合わせて変更してください。

ar-car.launch
<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でカメラ画像を見つつ、コントローラでラジコンを制御できます。
好きなように遊んでください。

17
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?