Jetson Xavierを使ってみる その3(ROSの環境構築、USBカメラ映像のPublish)

はじめに

 今回はJetson XavierでROSの環境を構築して、USBカメラの映像をPublishしてみました。

 ROSの通信で画像を送信して、物体検出や遠隔操作などを試したいなと思っています。

▼以前の記事はこちら

Jetson Xavierを使ってみる その1(JetPack 5.1.5のセットアップ)

はじめに  最近TechSeeker Hackathon 2025というハッカソンに参加しているのですが、参加者特典でJetson Xavierを1万円で購入できました。今回はそのセットアップをして…

Jetson Xavierを使ってみる その2(通信周りの設定、Node-RED、TailScale)

はじめに  今回は以前OSのセットアップを行ったJetson Xavierの通信周りの設定を行いました。  自宅サーバーとして使いたかったので、外部のネットワークからでもアクセ…

環境を構築する

 最初にOSのバージョンを確認しておきました。

▼Ubuntu 20.04です。

 Ubuntu 20.04に対応した、ROS Noeticをインストールしていきます。

▼WSL2で構築したときと同様の手順で環境を構築します。

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

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

 Open Manipulator関連のインストールスクリプトを実行するのが楽なので、今回も利用します。

▼インストールに関するページはこちら。

OpenMANIPULATOR-X

 以下のコマンドを実行し、インストールを行いました。

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

 他にも必要なパッケージをインストールしておきます。

source ~/.bashrc
sudo apt-get install ros-noetic-ros-controllers ros-noetic-gazebo* ros-noetic-moveit* ros-noetic-industrial-core
sudo apt install ros-noetic-dynamixel-sdk ros-noetic-dynamixel-workbench*
sudo apt install ros-noetic-robotis-manipulator

 Jetson XavierでOpen Manipulatorを制御するつもりはないのですが、次いでなので関連するものをダウンロードしてビルドしました。

cd ~/catkin_ws/src/
git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator.git
git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator_msgs.git
git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator_simulations.git
git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator_dependencies.git
cd ~/catkin_ws && catkin_make

 ここまで問題なく環境を構築することができました。

USBカメラの映像を確認する

 Jetson XavierにUSBカメラを接続して、映像を確認します。

▼USBカメラは以下のものを利用しています。

 必要なコマンドはChatGPTに聞いてみました。まずは必要なパッケージをインストールします。

sudo apt update
sudo apt install ros-noetic-usb-cam

 USBカメラのデバイス名を確認します。

ls /dev/video*

▼USBカメラを接続していない状態では/dev/video*が無く、接続した状態では/dev/video0と/dev/video1が表示されました。

 どちらを指定すればいいのか分からなかったのですが、今回は/dev/video0で問題ありませんでした。

 ターミナルでroscoreを実行し、別のターミナルで以下のコマンドを実行しました。

rosrun usb_cam usb_cam_node _video_device:=/dev/video0 _pixel_format:=yuyv _image_width:=640 _image_height:=480 _framerate:=30

▼問題なく起動できたようです。

▼rostopi listにもusb_cam関連のものがあります。

 rostopic echoで確認してみました。

rostopic echo /usb_cam/image_raw

 ▼データが流れていました。

 Jetson Xavierはサーバー用に使っていてデスクトップ画面は基本的に見ていないので、別のPCで確認します。

別のPCで映像を確認する

 WindowsのWSL2で構築したROSの環境を利用して、Jetson Xavierと通信します。ローカルネットワーク内での通信です。

▼ROSの環境構築は、先述した以前の記事で行いました。

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

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

 Jetson側がROSのマスターになるように、.bashrcを編集しました。

▼予めJetson側のIPアドレスを確認しました。

▼Jetson側の.bashrcのIPアドレスを編集しました。

▼WSL2側の.bashrcのIPアドレスも変更しました。

 改めてJetson側でsource .bashrcを実行してからroscoreと以下のコマンドを実行しました。

source .bashrc
rosrun usb_cam usb_cam_node _video_device:=/dev/video0 _pixel_format:=yuyv _image_width:=640 _image_height:=480 _framerate:=30

 WSL2側でもsource .bashrcを実行し、ROSのコマンドを実行しました。

▼WSL2側でrostopic listを実行して、トピックを確認できました。

 この状態でWSL2側でrvizを実行し、GUIで操作をします。

▼RVizが起動しました。

▼Addを選択し、topicを見るとusb_camがあります。

 image_rawのimageを選択して追加しました。

▼カメラの映像を確認できました!

 ローカルネットワーク内というのもあるのか、レスポンスは速かったです。手を振ったら大体そのまま映っていました。

最後に

 ローカルネットワーク内では通信できることを確認したので、最近よく使っているTailscaleによるVPN通信経由では通信速度はどうなるのかが気になっています。また、新たにUnityも利用して遠隔操作をしようとしているので、色々試してみようと思っています。

コメントを残す

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