Ubuntu18.04: KobukiをROS Melodicで動かす

Kobuki(Turtlebot2)はRoboCup@Home Educationリーグでデファクトスタンダードの存在ですが、最近は開発元のYujin Roboticsからはあまりサポートされていないようです。いろいろ調べたところ、Melodic用にTurtlebot2の関連パッケージのインストール方法を次の参考サイトで公開している方がいたので、それに従ってインストールしたらKobukiが動くようになりました。以下はその作業メモ。ROSのMelodicはインストール済みが前提。

作業手順

  • 作業スペースの作成(なければ)
    $ source /opt/ros/melodic/setup.bash
    $ mkdir -p ~/catkin_ws/src
    $ cd ~/catkin_ws/src
    $ catkin_init_workspace
  •  Turtlebot2関連パッケージのインストール
    • $ cd  ~/catkin_ws
    • $ curl -sLf https://raw.githubusercontent.com/gaunthan/Turtlebot2-On-Melodic/master/install_basic.sh | bash
  • 必要なパッケージをインストール
    • $ sudo apt install python-catkin-tools
    • $ sudo apt-get install ros-melodic-kobuki-* -y
    • $ sudo apt-get install ros-melodic-ecl-streams -y
    • $ sudo apt install ros-melodic-joy
  • ビルドする
    • $ cd ~/catkin_ws
    • $ catkin build
    • 次のようなエラーが出る場合はここをダウンロード・解凍してできたslot_callbacks.cppとkeyop_core.cppを~/catkin_ws/src/kobuki_node/src/library/slot_callbacks.cpp, ~/catkin_ws/src/kobuki_keyop/src/keyop_core.cppに上書きする。
      • /home/user/catkin_ws/src/kobuki_node/src/library/slot_callbacks.cpp:278:78: error: ‘BUTTON0’ is not a member of ‘kobuki_msgs::ButtonEvent {aka kobuki_msgs::ButtonEvent_<std::allocator<void> >}’
      • logs/kobuki_keyop/build.make.001.log:/home/user/catkin_ws/src/kobuki_keyop/src/keyop_core.cpp:293:38: error: ‘KEYCODE_LEFT’ is not a member of ‘kobuki_msgs::KeyboardInput {aka kobuki_msgs::KeyboardInput_<std::allocator<void> >}’
        logs/kobuki_keyop/build.make.001.log: case kobuki_msgs::KeyboardInput::KEYCODE_LEFT:
  • SONY DualShock4 (DS4)コントローラの設定( Bluetooth)
    • 以下のサイトを参照
    • ds4drvドライバのインストール。ds4drvはLinuxのSONY DualShock 4 用ドライバ。
      • python2のパッケージ管理システムpipをインストールする。
        • sudo apt install python-pip
      • DualShock4のドライバをインストールする。
        • sudo pip install ds4drv
    • DS4とUbuntuノートパソコンのペアリング
      • 次のサイトを参考にしました。
      •  DS4をノートパソコンの近くに置く。
      •  ds4drvの起動
        • $ sudo ds4drv
        • 以下のように表示される。
          [info][controller 1] Created devices /dev/input/js0 (joystick) /dev/input/event8 (evdev)
          [info][bluetooth] Scanning for devices
      • ペアリング
        • SHAREボタンとDSボタンを同時に5秒程度長押しする。LEDが白く点滅したらボタンから手を話す。
        • LEDが青くなりds4drvを起動した端末で以下のように表示されたら成功。
          [info][bluetooth] Found device
          [info][controller 1] Connected to Bluetooth Controller
          [info][bluetooth] Scanning for devices
          [info][controller 1] Battery: Fully charged
    • PS4コントローラのROSパッケージps4_rosの導入
      • サイト
        • https://github.com/solbach/ps4-ros
      •  インストール
        • cd ~/catkin_ws/src
        • git clone https://github.com/solbach/ps4-ros.git
      • launchファイルの変更
        • ~/catkin_ws/src/ps4-ros/launch/ps4.launchの下から3行目を以下のように変更する。Kobukiが動くようにTopic名を変更する。
          <param name="pub_topic" value="/cmd_vel_mux/input/teleop"/>
  • SONY DualShock4 (DS4)コントローラの設定(有線)
      • Bluetoothが不安定であったり、競技会でBluetoothの使用が制限されている場合はUSBケーブルでPCと接続します。
      • パッケージのインストール
        • $ sudo apt-get install ros-melodic-teleop-twist-joy
      • teleop.launchファイルの書き換え。以下のようにremapで始まる行を追加する。
      <node pkg="teleop_twist_joy" name="teleop_twist_joy" type="teleop_node">
        <rosparam command="load" file="$(arg config_filepath)" />
        <remap from="/cmd_vel" to=/cmd_vel_mux/input/teleop" />
      </node>

エラー処理

  • 私の環境ではcatkin_makeをしたところエラーが出たらの一つずつ解決した。
  • opencv関係のエラーが出たのでopencvをインストール。方法は以下のJetsonHacksの記事に従った。
  • cv_bridgeがないと怒られる。Could not find the required component ‘cv_bridge’
    • sudo apt install ros-melodic-cv*
  • iamge_geometryがないと怒られる。Could not find the required component ‘image_geometry
    • sudo apt instal’l ros-melopdic-image-geometry
  • depth_image_procがないと怒られる。Could not find the required component ‘depth_image_proc’
    • Could not find the required component ‘depth_image_proc’

起動

  • ノートパソコンとKobukiを接続する。
  • $ source ~/catkin_ws/devel/setup.bash
  • $ roslaunch turtlebot_bringup minimal.launch
    • このコマンドを実行して、”laptop_battery_monitor パッケージがない”と怒られた時の対処法
      • ~/catkin_ws/src に移動して,git clone https://github.com/ros-drivers/linux_peripheral_interfaces.git を実行し、catkin buildすることでlaptop_battery_monitorパッケージ不足を解消できる。

キーボードによる遠隔操作

  • $ source ~/catkin_ws/devel/setup.bash
  • $ roslaunch turtlebot_teleop  keyboard_teleop.launch
  • 以下のキーボード操作によりTurtlebot2を操作する。詳細は端末にキー操作の説明が表示されるのでそれを参照。
    • i: 前進
    • u: 左前方向へ進む
    • j: 左回転
    • o: 右前方向へ進む
    • l: 右回転
    • m: 左後方向へ進む
    • ,: 後進
    • .  右後方向へ進む
    • k: 停止

DS4による遠隔操作

  • DS4とXavierのペアリングをする。操作方法はすでに説明済。
  • $ roslaunch ps4_ros ps4.launch
    • コントローラと接続したときにキャリブレーションが必要。L2とR2を同時に押すと以下のように表示される。Release L2 and R2と表示されたら指を話すとキャリブレーションが終了し、利用可能となる。

[ WARN] [1562730896.630287264]: Press L2 and R2 to calibrate: 0%
[ WARN] [1562730896.731446432]: Press L2 and R2 to calibrate: 5%
[ WARN] [1562730896.832234176]: Press L2 and R2 to calibrate: 10%
[ WARN] [1562730896.933098464]: Press L2 and R2 to calibrate: 15%
[ WARN] [1562730897.034052928]: Press L2 and R2 to calibrate: 20%
[ WARN] [1562730897.135351008]: Press L2 and R2 to calibrate: 25%
[ WARN] [1562730897.236488864]: Press L2 and R2 to calibrate: 30%
[ WARN] [1562730897.337511264]: Press L2 and R2 to calibrate: 35%
[ WARN] [1562730897.438300640]: Press L2 and R2 to calibrate: 40%
[ WARN] [1562730897.539139328]: Press L2 and R2 to calibrate: 45%
[ WARN] [1562730897.640097056]: Press L2 and R2 to calibrate: 50%
[ WARN] [1562730897.741000544]: Press L2 and R2 to calibrate: 55%
[ WARN] [1562730897.842041696]: Press L2 and R2 to calibrate: 60%
[ WARN] [1562730897.943081120]: Press L2 and R2 to calibrate: 65%
[ WARN] [1562730898.044020896]: Press L2 and R2 to calibrate: 70%
[ WARN] [1562730898.144871008]: Press L2 and R2 to calibrate: 75%
[ WARN] [1562730898.245700928]: Press L2 and R2 to calibrate: 80%
[ WARN] [1562730898.346876544]: Press L2 and R2 to calibrate: 85%
[ WARN] [1562730898.447959104]: Press L2 and R2 to calibrate: 90%
[ WARN] [1562730898.548941536]: Press L2 and R2 to calibrate: 95%
[ WARN] [1562730898.649878528]: Press L2 and R2 to calibrate: 100%
[ WARN] [1562730898.750981568]: Release L2 and R2
[ INFO] [1562730900.952626016]: Calibrated – Ready to use

USB有線接続による遠隔操作

  • teleop_twist_joyパッケージ
    • 設定(有線)
        • Bluetoothが不安定であったり、競技会でBluetoothの使用が制限されている場合はUSBケーブルでPCと接続します。
        • パッケージのインストール
          • $ sudo apt-get install ros-melodic-teleop-twist-joy
        • teleop.launchファイルの書き換え。以下のようにremapで始まる行を追加する。
        <node pkg="teleop_twist_joy" name="teleop_twist_joy" type="teleop_node">
          <rosparam command="load" file="$(arg config_filepath)" />
          <remap from="/cmd_vel" to=/cmd_vel_mux/input/teleop" />
        </node>
    • 実行
      • $ roslaunch turtlebot_twist_joy teleop.launch
        • DS4コントローラ
          PSボタンを押しながら左ジョイスティックを操作すると動く。
  •  turtlebot_teleopパッケージ
    • 設定
      • ロボット競技会ではBluetoothの使用が制限されている場合がある。PS3コントローラをUSBケーブルでノートパソコンに接続して遠隔操作する方法。turtlebot_teleop パッケージの ps3_teleop.launch 内に書かれている
        11行目

        <remap from="turtlebot_teleop_joystick/cmd_vel" to="teleop_velocity_smoother/raw_cmd_vel" /> 
        

         
        <remap from="turtlebot_teleop_joystick/cmd_vel" to="cmd_vel_mux/input/teleop" />
        

        としてtopic名を変更する。

    • 実行
      • 次のコマンドで実行する。
        • $ roslaunch turtlebot_teleop ps3_teleop.launch
      • PS3コントローラ
        • PSボタンを押しながら左ジョイスティックを操作すると、それに応じてロボットが動く。
      • DS4コントローラ
        • ×ボタンを押しながら左ジョイスティックを操作すると動く。

以上

 

 

コメント

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