2019年1月19日土曜日

ROS-Gazeboのmakeで引っかかる

久しぶりにROSのコンパイルをしようとしたらつまづいたので作業記録を残しておく。
  • 使っている環境
Ubuntu 16.04LTS
ROS kinetic
Gazebo 7
catkin tools
uuv simulator

ハードウェアは
Intel® Core™2 Duo CPU P8600 @ 2.40GHz × 2
メモリ 3.8 GiB
OS 64-bit
  • 症状は?
 catkin buildを行うと、CMake Errorが発生する。

CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by
  "dynamic_reconfigure" with any of the following names:

    dynamic_reconfigureConfig.cmake
    dynamic_reconfigure-config.cmake

  Add the installation prefix of "dynamic_reconfigure" to CMAKE_PREFIX_PATH
  or set "dynamic_reconfigure_DIR" to a directory containing one of the above
  files.  If "dynamic_reconfigure" provides a separate development package or
  SDK, be sure it has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:4 (find_package) 
    • 原因は? 
    sudo apt-get install ros-kinetic-desktop-fullをしたときにインストールされていないファイルがあるようだ。
    sudo apt-get updateでも次のような文章が出ていた。
    
    Some index files failed to download. They have been ignored, or old ones used instead.
    

    install、updateともセキュリティ関連のサーバーにアクセスしようとして404 Not Foundが出ている。
    • 解決方法 
    まずはこちらを参考に、Security関連の確認場所を変更。
    https://qiita.com/nyanchu/items/a8cfc5cf627d70d798bf
    をしたらsource.listを完全破壊してしまった・・・

    泣く泣くubuntu、ROS 、catkin tools、UUV simulatorを全部再インストール。
    なんとかcatkin buildが通るようになり、UUV simulatorが使えるところまで復活した。
    どこかで手順を間違えたのか、roslaunchでフルパスを入力しないと.launchファイルが起動できなくなったけど、とりあえず保留。
    • ついでに
    updateをしようとするとよくTemporary failure resolvingのエラーが出るので対処法。
     参考にしたのはこちら。
    https://loumo.jp/wp/archive/20150611000058/
     
     DNSを次のコマンドで普段と違うところに設定すれば解決する。
    $ echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
    

    2018年9月24日月曜日

    UWSimで遊ぶ日々 開発環境の準備

    ***CAUTION!!!***
    新しく水中ロボットのシミュレーションを始める方には、UUV Simulatorをお勧めします。
    UWSimはロボットのモデルを1つの剛体として登録するので、後々アームを使ったり合体分離をしたいときに対応できません。
    ***CAUTION!!!***

    前回でハードウェアが準備できましたので、ソフトウェアのインストールを進めていきます。
    公式ページのこちらに該当する内容です。(英語です)

    UWSimを動作させるために必ず必要になるソフトは以下の3種です。
     1. Ubuntu Linux
     2. ROS
     3. UWSim
    では1つずつ見ていきましょう。

    1. Ubuntu Linux 
    UWSimはLinux 環境で動作します。公式ではUbuntu 9.10から14.04で動作させていますが、それより新しくても問題なく動作しました。私はUbuntu 16.04 64bit版を使用しています。
    インストールは色々な所で詳しく説明されていますので、ここでは簡単な手順と注意事項だけ触れます。

    !!!注意!!!
    インストールは英語環境で行ってから日本語化することをおすすめします。
    ROSやUWSimはGUIでなくコマンドラインからの入力を多用し、フォルダーの移動などをします。日本語でインストールをすると、主要なフォルダーが日本語で用意されてしまうため、コマンドラインで英数字と日本語を入力しないといけません。コマンドラインでの操作に慣れてきたときに大変不便な思いをします。
    同様の理由で、ファイル名も半角英数字だけでつけることをおすすめします。

    ○インストール手順
    1.公式ページからUbuntu のイメージファイルをダウンロードする。
    2.USBまたはCDでインストールイメージを作る。
    3.インストールするPCのBIOS画面で、作成したインストールメディアからブートを行う設定をする。
    4.メディアを接続してインストールを開始する。
    5.インストール完了まで待つ。
    6.日本語化する。

    以上でUbuntu Linuxのインストールは完了です。

    2.ROS
    Ubuntu Linuxをインストールしたら、その次はROSのインストールを行います。UWSimはROSでメッセージをやり取りするロボットを使うことを前提にして作られています。
    こちらも様々なバージョンがあります。UWSimを簡単にインストールしたい場合はgroovy、それ以外の場合はROSの公式がサポートしているLinux のバージョンとの組み合わせがありますので、そちらを選ぶのが良いでしょう。私はUbuntu16.04に合わせてKinetic Kameをインストールしました。

    インストールはバージョンによって少しずつ入力が異なりますので、ご自身のインストールしたいバージョンに合わせて下記を参考に進めてください。
    Kinetic Kameの場合
    groovyの場合

    3.UWSim
    ここでやっとUWSimのインストールになります。
    インストールしたROSのバージョンにより、apt-getが使える場合と、自分でコンパイルをかける場合があります。

    ○apt-getの場合
    ROSのバージョンがgroovyの場合、公式がapt-getパッケージを用意してくれています。
    ターミナルから以下のコマンドを入力するとインストールが完了します。
    apt-get install ros-groovy-uwsim

    ○apt-get以外のインストール手順
    ここではROSのバージョンがKineticの場合で進めていきます。
    他のバージョンの方は、コマンドのkineticの部分を自身が使うバージョンに変えて進めてください。

    1.ワークスペースを作成し、パッケージのダウンロードをします。
    - other: {local-name: /opt/ros/kinetic/share/ros}
    - other: {local-name: /opt/ros/kinetic/share}
    - other: {local-name: /opt/ros/kinetic/stacks}
    - setup-file: {local-name: /opt/ros/kinetic/setup.sh}
    - git: {local-name: src/underwater_simulation,
            uri: 'https://github.com/uji-ros-pkg/underwater_simulation.git', version: kinetic-devel}
    rosws update

    2.コンパイルをします。
    rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
    catkin_make install

    インストールが終わったら、UWSimを起動してみましょう。
    ターミナルを2つ用意し、先に片方でroscoreを動作させてからもう片方でUWSimを起動します。
    ・ターミナル1
    roscore
    ・ターミナル2
    rosrun uwsim uwsim

    プールの中に黄色いロボットが入っているウィンドウが立ち上がれば成功です。

    中央のプールの中の黄色いのが水中ロボットです。

    2回目以降に起動するときは、uwsimが格納されている場所へのパスが通っていない場合があります。
    以下のコマンドを入力し、パスを通します。
    cd catkin_ws
    source devel/setup.bash

    今日はここまで。