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
- python2のパッケージ管理システムpipをインストールする。
- 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"/>
- ~/catkin_ws/src/ps4-ros/launch/ps4.launchの下から3行目を以下のように変更する。Kobukiが動くようにTopic名を変更する。
- サイト
- 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パッケージ不足を解消できる。
- このコマンドを実行して、”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ボタンを押しながら左ジョイスティックを操作すると動く。
- DS4コントローラ
- $ roslaunch turtlebot_twist_joy teleop.launch
- 設定(有線)
- 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名を変更する。
- ロボット競技会ではBluetoothの使用が制限されている場合がある。PS3コントローラをUSBケーブルでノートパソコンに接続して遠隔操作する方法。turtlebot_teleop パッケージの ps3_teleop.launch 内に書かれている
- 実行
- 次のコマンドで実行する。
- $ roslaunch turtlebot_teleop ps3_teleop.launch
- PS3コントローラ
- PSボタンを押しながら左ジョイスティックを操作すると、それに応じてロボットが動く。
- DS4コントローラ
- ×ボタンを押しながら左ジョイスティックを操作すると動く。
- 次のコマンドで実行する。
- 設定
以上
コメント