Raspberry Pi 3にRobot Operating System(ROS)をインストールします。動作確認のためにPlayStationコントローラをROSに接続します。
- Ubuntu Server 16.04.3 LTS
- ROS Kinetic Kame
すでにROS2がリリースされていますが、Raspberry Piでの情報が豊富なROS Kinetic Kameをあえてインストールします。
Ubuntu Server 16.04.3 LTSのイメージ書き込み
「Raspberry Pi OS」からRaspberry Pi Imagerをダウンロードしてパソコンにインストールします(いままでイメージ書き込みソフトを使ってmicroSDカードに書き込んでいましたが、公式サイトからイメージ書き込みソフトが提供されています)。
Ubuntu Server 16.04.3 LTSイメージは、「Raspberry Pi 3用Ubuntu Server 16.04.3 LTSイメージを更新」からダウンロードします。ダウンロードしたファイル「ubuntu-16.04-preinstalled-server-armhf+raspi3-upgradable-20171223.img」をダブルクリックするとRaspberry Pi Imagerが起動するので、次のように「Storage」にmicroSDカードの書き込みデバイスを指定し、「WRITE」ボタンを押してmicroSDカードに直接イメージを書き込みます。
バグが一つあります。/var/log/lastlogを消してしまったのでlastlogが使えません。使う場合は自身で/var/log/lastlogを作る必要があります。
Ubuntu Server 16.04.3 LTSのWi-Fi接続設定
Raspberry Pi 3に作成したmicroSDカードを挿入して起動し、有線LANでネットワークに接続すると、デフォルトでDHCPによりネットワークに接続できます。Wi-Fi接続は、次にように設定します。
- 次のコマンドでIPv4とIPv6アドレスを表示します。
- 次のコマンドでNetwork Manager をインストールします。
- 次のコマンドでWi-FiのSSIDとパスワードを設定します。
- rebootしてipアドレスを取得できているかを確認します。
$ ip a
$ sudo apt-get install network-manager
$ sudo nmcli device wifi connect [SSID] password [パスワード]
Ubuntu Server 16.04.3 LTSのパッケージ更新
次のコマンドで検索先を更新して、インストールされているパッケージを最新バージョンにします。
$ sudo apt-get update $ sudo apt-get upgrade
ROS Kinetic Kameのインストール
次のコマンドでROS Kinetic Kameをインストールします。
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod 755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh
実行すると、以下のメッセージが表示されるので、Enterキーを入力します。
・・・ PRESS [ENTER] TO COTINUE THE INSTALLATION IF YOU WANT TO CANCEL, PRESS [CTRL] + [C}
ROS Kinetic Kameの動作環境の設定を行います。ここからの設定については、「ROS講座02 インストール」を参考にしました。
次のコマンドでrosdepをのインストールします。
$ sudo rosdep init $ rosdep update
ターミナルの起動時にROSコマンドへのパスを通すため、次のコマンドで~/.bashrcを設定します。
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc $ source ~/.bashrc $ source /opt/ros/kinetic/setup.bash
次のコマンドでrosinstallを設定します。
$ sudo apt-get -y install python-rosinstall
次のコマンドでcatkinワークスペース「catkin_ws」を作成し、catkin_wsの中のROSパッケージにパスを通すため、~/.bashrcを設定します。
$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace $ cd ~/catkin_ws $ catkin_make $ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc $ source ~/.bashrc
PlayStationコントローラをROSに接続
インストールしたROSの動作確認のために、「PlayStationコントローラからの入力データをobniz Board 1Yに表示」で使用したPlayStationコントローラをROSに接続します。詳細については、「ROS講座07 joyプログラム」を参照してください。
次のコマンドでjoy用のパッケージをインストールします。
sudo apt-get install ros-kinetic-joy sudo apt-get install ros-kinetic-joystick-drivers
PlayStationコントローラをRaspberry Pi 3に接続し、それぞれのターミナルから次のコマンドを入力します。PlayStationコントローラを操作すると3番目のターミナルに入力データが表示されます。
$ roscore ... logging to /home/ubuntu/.ros/log/0e16a2cc-ad18-11eb-989e-b827ebd11fef/roslaunch-ubuntu-1630.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://localhost:37299/ ros_comm version 1.12.17 SUMMARY ======== PARAMETERS * /rosdistro: kinetic * /rosversion: 1.12.17 NODES auto-starting new master process[master]: started with pid [1746] ROS_MASTER_URI=http://localhost:11311/ setting /run_id to 0e16a2cc-ad18-11eb-989e-b827ebd11fef process[rosout-1]: started with pid [1800] started core service [/rosout]
$ rosrun joy joy_node [ERROR] [1620160453.134650652]: Couldn't open joystick force feedback! [ INFO] [1620160453.134912996]: Opened joystick: /dev/input/js0. deadzone_: 0.050000.
$ rostopic echo /joy header: seq: 105 stamp: secs: 1620160493 nsecs: 665857242 frame_id: '' axes: [0.023343447595834732, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] --- header: seq: 106 stamp: secs: 1620160493 nsecs: 685899709 frame_id: '' axes: [0.012485282495617867, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] --- header: ・・・