Robovie-ZでSDKを使ってROSを動かしてみた

ヴイストン株式会社さんからRobovie-Zをお借りしたので、さっそくSDKを使ってROSを試してみます!

Robovie-Zの商品ページはここ
Robovie-Z(ロボビーゼット) | ヴイストン株式会社 (vstone.co.jp)

マニュアルはここにあります。
RobovieZ_ROSSDK_manual.pdf (vstone.co.jp)

ROSのWikiにもPiへのインストール方法が載ってます。
ROSberryPi/Installing ROS Melodic on the Raspberry Pi – ROS Wiki

 

1.ROSの準備

リポジトリのセットアップ

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

Debianパッケージをアップデート・アップグレード

sudo apt-get update
sudo apt-get upgrade

Bootstrapの依存関係を解決

sudo apt install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

Rosdepを初期化、アップデート
*rosdep updateでエラーが出る場合、”rosdep update”を何度か繰り返すと解決する場合があります。
*rosdep update はsudoで実行しないでください、後でPermissionエラーの原因になります。

sudo rosdep init
rosdep update

 

2.ROSをインストール

catkinワークスペースを作って、ワークスペース内に移動

$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

インストーラーを作ります

$ rosinstall_generator desktop --rosdistro melodic --deps --wet-only --tar > melodic-desktopwet.rosinstall

インストーラーを使って、ROSパッケージをソースフォルダに展開

$ wstool init src melodic-desktop-wet.rosinstall

rosdepを使って依存関係を解決

$ cd ~/ros_catkin_ws
$ rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:buster

ワークスペース全体をビルド
*この作業は数時間かかることがあります!(私は半日かかりました)
*Pi4に電源アダプターがつないであることを確認して、コマンドの実行は実機で行いましょう!
*リモートマシンから操作していると途中で接続が切れてしまうことがあります。

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic

ROSの設定をシェルに反映させます

$ source /opt/ros/melodic/setup.bash

次回ログイン時に、自動的にROSの環境設定が有効化されるように、.bashrcも変更

$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

 

3.リリースパッケージの追加

ワークスペースに移動

cd ~/ros_catkin_ws

インストールファイルを作成

rosinstall_generator ros_comm ros_control joystick_drivers --rosdistro melodic --deps --wet-only --tar > melodic-custom_ros.rosinstall

wstoolをつかつかってインストールファイルをアップデート

$ wstool merge -t src melodic-custom_ros.rosinstall
$ wstool update -t src

rosdepを使って環境依存を解決

rosdep install --from-paths src --ignore-src --rosdistro melodic -y -r --os=debian:buster

もう一度ワークスペース全体をビルド
*この作業は数時間かかることがあります!(私は半日かかりました)
*Pi4に電源アダプターがつないであることを確認して、コマンドの実行は実機で行いましょう!
*リモートマシンから操作していると途中で接続が切れてしまうことがあります。

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic

これでインストール作業はおわりです。
roscoreを起動して、ROSが正常にインストールされているか確認します。

$ cd ~/ros_catkin_ws
$ roscore

 

4. Robovie-Z ROS SDKの導入

*今回は配布マニュアルに沿って、他のROSパッケージと同じワークスペース内のsrcにroboviez_ros_samplesを展開してますが、別のワークスペースを作ってoverlayしたほうが便利です。
catkin/Tutorials/workspace_overlaying – ROS Wiki

roboviez_ros_samplesをsrcフォルダにクローン

$ cd ~/ros_catkin_ws/src
$ git clone https://github.com/vstoneofficial/roboviez_ros_samples.git

Robovie-Zのgithubページはここ
GitHub – vstoneofficial/roboviez_ros_samples: Robovie-Z用ROS SDK

ワークスペースのルートからcatkin_make

*エラーが出ます!最後まで読んで操作してください。
*必要に応じて途中をスキップしてください。

$ cd ~/ros_catkin_ws
$ catkin_make

“This workspace contains non-catkin packages” というエラーがでました。(2020/12/10)

“plain cmake” と赤字で書かれているパッケージが”non-catkin packages”です。

該当パッケージをcatkin_makeから外してcatkin_makeし直します。

catkin_make -DCATKIN_BLACKLIST_PACKAGES="orocos_kdl;python_orocos_kdl"

*私はこの解決方法にたどり着けず、ヴイストンの技術者の方に教えて頂きました。

 

すると今度は、diagnostic_msgs/DiagnosticArray.hが見つからないと出てきたので、

こちらも外します。

catkin_make -DCATKIN_BLACKLIST_PACKAGES="orocos_kdl;python_orocos_kdl;diagnostic_updater"

 

100%と表示されれば成功です。

 

.bashrcに書き込み、更新する

$ echo "source ~/ros_catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

 

 

5.SDKサンプルを実行してみる

まずCPUボードにUSBケーブルをつないで、電源を供給、ONにします。

roscoreを実行

$ roscore

別のターミナルを開いて、roboviez_ros_controller.py を実行するとエラーになる

rosrun roboviez_ros_samples roboviez_ros_controller.py

roboviez_ros_controller.pyに実行権限を付与します。

chmod +x ~/ros_catkin_ws/src/roboviez_ros_samples/roboviez_ros_samples/src/roboviez_ros_controller.py

さらに別ターミナルを開いて、IMUの情報を読み出すコマンドを実行

$ rostopic echo /roboviez_ros_controller/imu

うまくいきました!

なんどもビルドをやり直したので、ここまでたどり着くのに5日かかりましたw。

 

 

タイトルとURLをコピーしました