ROS1を使ってみる その5(WSL2 Ubuntu 18.04、カメラ)

はじめに

 今回はWSL2のUbuntu 18.04にROSをインストールし、カメラを利用してみました。

 なぜUbuntu 18.04なのかというと、ロボットの画像処理用に使われていたJetson系のコンピュータにUbuntu 18.04が入っていたからです。普段使っているWindowsのノートPCで試せるほうが楽なんですよね。

 RVizでカメラの映像を表示できるところまで確認しました。さらにYOLOと一緒に使おうと思っています。

▼以前の記事はこちら

YOLOで物体検出 その2(Python、Node-RED)

はじめに  今回はYOLOをPythonで実行してみました。  以前の記事でYOLOを試したときは簡単なコマンドしか試していませんでしたが、実際にロボットに搭載して処理を行う…

ROS1を使ってみる その4(URDFファイルの作成、Open Manipulator)

はじめに  今回はOpen ManipulatorのURDFファイルを作成してみました。  これまではROSですでに用意されていたOpen Manipulatorのモデルを利用していましたが、URDFファ…

WSL2でUbuntu 18.04のインストール

 まずはWSL2でUbuntu 18.04をインストールします。

▼WSL2でUbuntu 20.04をインストールしたときに、ついでにUbuntu 18.04もインストールしていました。手順は同じです。

WSL2を使ってみる その3(Ubuntu 20.04、ROS Noetic、Open Manipulator)

はじめに  今回はWSL2のUbuntu 20.04に、ROSをインストールしてみました。  前回構築したのはWSL2のUbuntu 22.04です。WSL2で複数のバージョンのUbuntu環境をインストー…

▼WindowsのPowerShellで以下のコマンドを実行すると、Ubuntu 18.04をインストールすることができます。

wsl.exe --install Ubuntu-18.04

▼Ubuntu 18.04がインストールされました。

 ただし、一度アンインストールしてからインストールする場合などはすんなりインストールできないかもしれません。

▼こちらの記事で対処したことがあります。

WSL2を使ってみる その1(Ubuntu 22.04、Node-RED、メモリ制限)

はじめに  今回はWindows環境でLinuxディストリビューションをインストールできる、WSL(Windows Subsystem for Linux)の環境を構築してみました。  最近オープンソー…

ROSの環境構築

 次にROSの環境を構築しました。Ubuntu 18.04なので、Melodicをインストールします。

 以前Noeticをインストールしたときは、ROBOTISのOpen ManipulatorのGetting Startedを読みながらインストールしました。今回もROBOTISの製品のGetting Startedを参考にしています。

▼Open Manipulator-PのGetting Startedに、Melodicでのインストール方法が書かれていました。

https://emanual.robotis.com/docs/en/platform/openmanipulator_p/ros_setup

 以下のコマンドでROBOTISのインストール用の.shファイルをダウンロードして実行しました。

sudo apt-get update
sudo apt-get upgrade
wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_melodic.sh && chmod 755 ./install_ros_melodic.sh && bash ./install_ros_melodic.sh

 Open Manipulator-Pは使わないので、git cloneは行わずにcatkin_makeを実行してみました。

sudo apt-get install ros-melodic-ros-controllers ros-melodic-gazebo* ros-melodic-moveit* ros-melodic-industrial-core
cd ~/catkin_ws
source devel/setup.bash
catkin_make

▼特にエラーもなく、実行できました。

▼以前も試していた、Turtlesimを実行してみました。

ROS1を使ってみる その1(Turtlesim、Node-RED)

はじめに  今回はROSをちゃんと学びたいということで、Turtlesimで通信周りの確認をしてみました。  これまでTurtlesimのカメをキーボードやGUIで操作したことはありま…

 roscoreを実行後、Ubuntu 18.04の新しいターミナルを開いて、以下のコマンドを実行してみました。

rosrun turtlesim turtlesim_node

▼カメが表示されました。

WSL2環境へのカメラの接続

 これまでの記事でもWSL2環境でUSBデバイスを利用するときはコマンドで使えるようにする必要がありました。今回もカメラに対して同じ手順を踏みました。

▼Open Manipulatorを操作するときはU2D2というUSBデバイスを利用する必要がありました。

WSL2を使ってみる その3(Ubuntu 20.04、ROS Noetic、Open Manipulator)

はじめに  今回はWSL2のUbuntu 20.04に、ROSをインストールしてみました。  前回構築したのはWSL2のUbuntu 22.04です。WSL2で複数のバージョンのUbuntu環境をインストー…

ROS1を使ってみる その3(Open Manipulatorの操作、Node-RED)

はじめに  今回はOpen ManipulatorのROS Serviceでの制御を確認し、Node-REDのノードでも操作してみました。  ROS Serviceを扱うのははじめてです。データ形式がややこ…

 Ubuntu環境でlsusbを実行すると、カメラは認識していないことが分かります。

▼何も設定していない状態だと2つだけ表示されています。

 PowerShellを管理者権限で開いて、コマンドを実行していきます。

▼管理者権限でないと、この後エラーが出ます。

 usbipdをインストールしていない場合は、インストールしておいてください。

▼こちらからmsiファイルをダウンロードして実行すると、インストールが始まります。

https://github.com/dorssel/usbipd-win/releases/tag/v4.2.0

 まずデバイスのBUSIDをusbipd listで確認します。

▼WebCamがありますが、これは私のノートPCの内蔵カメラのようです。

 USBカメラを接続してみました。

▼ちなみに八千円くらいのUSBカメラなのですが、電子部品屋さんで中古品を二千円で二つ入手しました。

▼再度コマンドを実行すると、Webcamが増えていました。

 以下のコマンドでWSL環境でもUSBデバイスを利用できるようにします。<busid>の部分は、先程のBUSIDに置き換えてください。

usbipd bind --busid <busid>
usbipd attach --wsl --busid <busid>

▼bindしてからattachを実行しないとエラーが起きます。

▼その後Ubuntu 18.04でlsusbを実行すると、カメラを認識していました。

ROSでカメラを利用する

▼以下のページを参考にしました。

【ROS】libuvc_cameraによるUVCカメラ映像取得 - ヴェズルフェルニルの研究ノート

ROSの研究に本格的に取り組み始めたが、その主目的はカメラ映像や自己位置推定の動画をモバイルデバイスへ配信する環境を作ることだ。 この目的への取っかかりとして、お…

 以下のパッケージをインストールしました。

sudo apt install ros-melodic-libuvc-camera

▼インストール後にROSのコマンドを実行すると、エラーが出ていました。

 ChatGPTに聞いてみたのですが、以下のパッケージをインストールすると解決しました。

sudo apt-get install libuvc-dev

▼次はPermissionエラーが出ていました。

 参考にしていたサイトに、こういった場合の対処も書かれていました。以下のコマンドで権限を確認してみました。

lsusb
ls -l /dev/bus/usb/00*

▼以下のように表示されました。

 この画像ではPC内臓カメラ(/dev/bus/usb/001/002)は権限変更後ですが、USBカメラ(/dev/bus/usb/001/004)は差し直しました。

 USBカメラの権限はcrw-rw-r--になっています。以下のコマンドで書き込み権限を付与します。

sudo chmod a+w /dev/bus/usb/001/004

▼再度権限を確認すると、crw-rw-rw-に変わっていました。

 ここまで設定出来たら、roscoreを実行し、新しくターミナルを開いて以下のコマンドを実行しました。

rosrun libuvc_camera camera_node

▼以下のように出力されました。

 さらに新しくターミナルを開き、以下のコマンドを実行しました。

rosrun image_view image_view image:=/image_raw

▼以下のようにカメラの映像がウィンドウに表示されました!

▼FPSが低いのか、動きがあるとラグがありました。

 なお、USBカメラを差し直すともう一度権限を付与するためのコマンドを実行する必要がありました。PowerShellでWSL2に接続するためのコマンドも再度実行する必要があるのでご注意ください。

▼ちなみにUSBカメラを抜いて、接続しているカメラをPCの内蔵カメラのみにすると、実行できていませんでした。

RVizで確認する

 新しくターミナルを開いて、rvizを実行しました。

▼以下のように表示されました。

 左側のAddを選択すると、新しくウィンドウが開きます。

▼By topicの/image_rawにあるImageを選択後、OKを選択しました。

▼左下の小さいウィンドウにカメラの映像が表示されました。

▼拡大して表示してみました。

最後に

 WSL2ではないUbuntu環境であればもっと簡単に扱えるとは思うのですが、なんとかカメラを利用することができました。

 FPSが低いことは気になっています。コマンドで変更できるようであれば変更して、YOLOと一緒に使ってみたいなと思っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です