Turtlebot3/Raspberry4版の製作(2号機)ソフト動作確認


【 立上げ:7 】
<7.1:roscoreを実行>
 PC側:jun@jrobo:~$roscore
 PC側:jun@jrobo:~$ssh pi@192.168.1.110
            PW:ja3dxa8823
 Pi側に入る:pi@raspberrypi:~$

 pi側:$roslaunch turtlebot3_bringup turtlebot3_robot.launch

ここで一部のエラーが発生したが、Lidar を使っていない関係の様なエラーなのでとりあえず、このまま進める。


Lidarセンサー、Raspberry Piカメラ、Intel®RealSense™R200、またはコアを個別に起動する場合は、以下のコマンドを使用してください。
一度停止させてエラー発生であろう「Lidar」のみを起動させて同様なエラーが出るか確認します。

$ roslaunch turtlebot3_bringup turtlebot3_lidar.launch
$ roslaunch turtlebot3_bringup turtlebot3_rpicamera.launch
$ roslaunch turtlebot3_bringup turtlebot3_realsense.launch
$ roslaunch turtlebot3_bringup turtlebot3_core.launch

同様なエラーが発生したので、間違いないと思われます。
今回のRaspbrryPi4には、カメラが付いていないのでエラーがでました。
上記コマンドでエラーが無いのは、4番目の core は問題なく起動しました。

エラーに相当するパッケージをインストール
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git  <- インストールが必要
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git <- すでに実装済み
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git <- すでに実装済み

1個のエラーは消えました。(ROS_Serial部分のエラーが無くなる)/started with pid 部分のエラーが残る。

e-manual の6.2.3 より実行(Turtlebot3側で実行)catkin_ws は、ros_catkin_ws に置き換え

 $sudo apt-get install ros-melodic-rosserial-python ros-melodic-tf

ここで「ros-melodic-rosserial-python」と「ros-melodic-tf」:いずれのパッケージが見つからないというエラーが出る。

Turtlebot3 1号機のLidar を 2号機につないで「$roslaunch turtlebot3_bringup turtlebot3_robot.launch」を実行エラーなしOK(成功)
標準搭載のセンサはすべて取り付けておかないとエラーとなる。
Lidarが無い場合の対応(launchファイル)を探る必要あり
この launch ファイルは RaspbrryPi4内の、~/ros_catkin_ws/src/turtlebot3/turtlebot3_bringup/launch 内にあります。
< turtlebot3_robot.launch >


 $nano turtlebot3_robot.launch  このファイルのlidar 部分をコメントアウトする。


これで、実行するも同様なエラーが出る。(この場所の変更ではなかったのか?)


Lidar を接続して実行するとエラーが出ない。


どこを修正すればいいのか再調査です。

launch 内でのコメントアウトは「#」ではなく「<!--  -->」で囲むとの事で早速修正して動作させました。


1個エラーが無くなりましたが、やはり Lidar 部分のエラーがでました。
まだどこかの Lidar 情報を送信する部分が動作しようとしているようです。(動作上は問題なく動くので、後日修正して行く事とします。)



【 上記取組解決 】

上記内容(Lidarが無い場合のエラー回避)でアドバイスを受けて解決しました。
要は、変更(Lidar起動部をコメントアウトする)部分が間違っていました。

 /opt/ros/melodic/share/turtlebot3_bringup/launch/turtlebot3_robot.launch

このファイル内のLidar記述部をコメントアウト(<!--   -->)することで解決します



【 7.3:RvizにTurtleBot3をロードする 】
 下記はリモートPC側(「roscore」、Turtlebot3側では「$roslaunch turtlebot3_bringup turtlebot3_robot.launch」事前立上げ要)

  $ export TURTLEBOT3_MODEL=${TB3_MODEL}    これは、~/.bashrc 内で記述済みの為、実行しない。<burger>
  $ roslaunch turtlebot3_bringup turtlebot3_remote.launch
 別ターミナルで
  $ rosrun rviz rviz -d `rospack find turtlebot3_description`/rviz/model.rviz


問題なくRviz が立ち上がります。

【 トピックモニター 】
 リモートPC:$roscore
 リモートPC:$ssh pi@192.168.1.110 / PW:ja3dxa88232
 pi:$roslaunch turtlebot3_bringup turtlebot3_robot.launch  操作はリモートPC
 リモートPC:$rqt
   下部画面内のチェックボックス&下矢印をチェックすると更に詳細内容が表示される。


Turtlebot3 の各種情報がリモートPCで入手出来ている。


【 テレオペレーション:キーボード 】
 リモートPC:$roscore
 リモートPC:$ssh pi@192.168.1.110 / PW:ja3dxa88232
 pi:$roslaunch turtlebot3_bringup turtlebot3_robot.launch  操作はリモートPC
 $ export TURTLEBOT3_MODEL=%{TB3_MODEL}      これはすでに「~/.bashrc」で、「burger」宣言済み
 $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
 turtlebot3_teleopパッケージ内にturtlebot3_teleop_key.launchが無いというようなエラーメッセージが出た。




このエラーは、リモートPC側の原因でturtlebot3_teleopパッケージが無い可能性がある。
Ubuntu18.04.4にROS・melodic をインストールした後のTurtlebot3のパッケージのインストールが完璧でない可能性があるので一度削除します。

 $sudo apt-get purge ros-melodic-*

これで リモートPC内の 「ROS/melodic」 はすべて削除されました。
catkin_ws フォルダーは削除しておきます。

【リモートPCへROS/melodic+Turtlebot3 関連パッケージをインストール】
 $sudo apt-get update
 $sudo apt-get install -y curl
 $bash -c "$(curl -SsfL https://git.io/ros-melodic-desktop)"
 $ source ~/.bashrc
 $mkdir -p ~/catkin_ws/src
 $cd ~/catkin_ws/
 $catkin_init_workspace src
 $echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
 $catkin_make && source ~/catkin_ws/devel/setup.bash

 $sudo apt-get update
 $sudo apt-get install -y curl

 $bash -c "$(curl -SsfL https://git.io/ros-melodic-desktop)"

 ROS・melodicインストール後の最後に下記メッセージが表示されればOKです。

  ***INSTRUCTION*****************
  * do the following command     *
  * $ source ~/.bashrc          *
  * after that, try            *
  * $ LANG=C roscore           *
  ********************************

次にturtlebot3 依存パッケージのインストール(e-Manual:6.1.3)

 $ sudo apt-get install ros-kinetic-joy ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard ros-kinetic-laser-proc   
   ros-kinetic-rgbd-launch ros-kinetic-depthimage-to-laserscan ros-kinetic-rosserial-arduino ros-kinetic-rosserial-python
   ros-kinetic-rosserial-server ros-kinetic-rosserial-client ros-kinetic-rosserial-msgs ros-kinetic-amcl ros-kinetic-map-server
    ros-kinetic-move-base ros-kinetic-urdf ros-kinetic-xacro ros-kinetic-compressed-image-transport ros-kinetic-rqt-image-view
    ros-kinetic-gmapping ros-kinetic-navigation ros-kinetic-interactive-markers

上記コマンド内の「kinetic」部分をすべて「melodic」に変更して実行します。

 $ cd ~/catkin_ws/src/
 $ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
 $ git clone -b kinetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
 $ cd ~/catkin_ws && catkin_make


【 Dynamixel XL430-W250-T の設定】
これで一応「e-Manual」で問題のあった「$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch」までは動作するようになりました。
これで Turtlebot3 2号機を動かしてみましたが、まったく動作しません。1号機で動作させると問題なく動作するので「リモートPC」側はOKです。
2号機がなぜ動かないか調べる内に、Dynamixel社製 XL430-W250-T モデルではいくつかのパラメーター(ID含む)設定が必要でした

 代理店技術情報:URL URL(技術マニュアル)
 参考URL:https://qiita.com/adeliae1316/items/6edd51dd5562b638171e

モーター内のメモリーに下記のパラメーター設定が必要( Turtlebot3 時の設定値 )


念のため、OpenCRボードのチェックを先に確認しておきます。
1号機をベースにOpenCRのみ新たに購入したOpenCRに交換して動作させてみた。当然問題なく動作しました。
モーターも工場出荷時のID設定は「1」となっているので、ID:1のモーターのみでテストすると動作しないので、ID:1のみではNGの様だ。

下記が確認時の写真です。1号機のOpenCR部分を開放状態としています。下に写っているのが新たに購入したモーター+タイヤです。


OpenCR部分の拡大写真です。1号機のOpenCR基板の上に新しいOpenCR基板を置いています。(実際のテストでは基板間を絶縁しています。)
この状態では、正常に動作します。


パラメーター設定ソフトらしき物を発見:http://www.besttechnology.co.jp/modules/knowledge/?RoboPlus%202.0
ここから「RoboPlus 2.0」をダウンロードしてみます。
下記のアイコンがデスクトップ上に現れます。


このアイコンは、インストーラーでクリックして「RoboPlus2.0」をインストールします。完了後同様なアイコンがデスクトップに表示されます。
作成されたアイコンをクリックすると「RoboPlus」のアプリが立ち上がります。


暫くするとアップデートが始まります。(必ず必要)


まずは機種の選択です。今回は「XL430-W250」ですので、「DYNAMIXEL X」を選択します。

次の画面がホーム画面です。ここの左上のギヤマーク「Update & Test」を選択します。
モーター情報をサーチします。(間違ってOpenCRボードに2個のモーターをつないでいましたが、工場出荷時すべて下記の設定となっているので
ダブった結果となっています。(この後、重大エラーが発生して、電源を投入してもモーターの赤色LEDが点灯しなくなり上記の検索結果もエラーと
なり全く使用できなくなり焦りました。(後で書いていますが、リカバリーが出来ます。:一時は新たに購入しないとと思いました。))


下記がモーター情報です。



「Next」で次のControl Table が表示されます。たぶんここで各種パラメーターの設定が出来るのではないかと思われる。



さてここで重大事故が発生して2個のモーターの情報が飛んでしまい認識が出来なくなったのでリカバリー方法を書いておきます。
「Update & Test」で情報検索してもエラーとなります、この場合は下記の手順で復帰させます。
メイン画面の右上メニュー「firmWare Recovery」を選択します。


次ぎ次と進むと下記画面になります。接続(OpenCRに1個だけモーターをつないだ状態)したままOpenCRの電源を一回OFFして再投入します。
すると黄色い注意が無くなります。


一応仮情報に様な表示がされます。「next」で進めリカバリーを実施します。


リカバリーが完了したら、正しく情報が書込めているか確認します。


詳細情報まで工場出荷時まで戻すことが出来ました。(一時は、1万円以上の再出費を覚悟していました。)



まずはモーターの持つ基本情報を見る事が出来ましたが、いよいよパラメーター設定を行っていきます。
先ずは、下記がデフォルト状態です。


Address:64は、「0」でそのままでOKです。(確認のみ)


Address:11は、「1」です。選択後「save」ボタンを押して書込み


Address10は、「2」これはID2は制御命令の反対に回転させる意味です。


下記は、ID:1モーターの設定です。


最終的に下記パラメーター表通りに設定します。


設定完了後は、モーターには、「1」「2」と番号を張っておきます。(制御が逆転するため)
OpenCRに2個のモーターをつないで、テレオペ命令を出せば素直に動いてくれました。

当初は、バイナリー書込み、CRCC計算等悩んでいましたが、リード/ライト用アプリが見つかり助かりました。(RoboPlus2.0)

その後、販売代理店から回答がありました。
Dynamixelの諸設定についてはPCとI/F、そして専用のソフトウェアが必要となります。
I/Fとしては以下の3種類が利用できます。
 http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=208
 http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=255
 http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=213
私の場合は、上記ハードは購入せずTurtlebot3 で使用する OpenCR ボードで出来ました。


ソフトウェアは以下の2種類が提供されています。
 http://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/
 http://emanual.robotis.com/docs/en/software/rplus2/manager/