Gazeboは、ROSロボットのポジショニングとナビゲーションのシミュレーション、およびYOLOの検出とマークされたオブジェクトの識別を完了するための仮想環境を構築しました。


序文

環境の説明:
このプロセスでは、Ubuntu18.04 + ROS Melodic + Gazebo + yolo3を使用します


1.予備準備

(1)ワークスペースを作成する

  1. ros作業領域を作成します

    mkdir -p ~/robot_positioning_ws/src
    
  2. 作業領域ディレクトリに切り替えます

    cd ~/robot_positioning_ws/src
    
  3. ROSワークスペースを初期化します

    catkin_init_workspace
    

(2)ファンクションパッケージレースカー

  1. トラックを構築するためにGazeboをダウンロードする

    git clone https://github.com/xmy0916/racecar.git
    

    ここに画像の説明を挿入

  2. 関連するコントローラーをインストールする

    sudo apt-get install ros-melodic-controller-manager
    sudo apt-get install ros-melodic-gazebo-ros-control
    sudo apt-get install ros-melodic-effort-controllers
    sudo apt-get install ros-melodic-joint-state-controller
    
  3. レースカー機能パックのコンパイル

    cd ..
    catkin_make
    


    Could not find a package configuration file provided by "driver_base" with any of the following namesここに画像の説明を挿入
    ソリューションのコンパイル時に発生する問題

    sudo apt-get install ros-melodic-driver-base
    

    Could not find a package configuration file provided by "OpenCV" with any of the following names
    ここに画像の説明を挿入
    解決策

    OpenCVConfig.cmake
    sudo geditを見つけます〜/ robot_positioning_ws / src / racecar_gazebo / CMakeLists.txt
    7行目のパスをパスに変更します:set(OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev/)

    ここに画像の説明を挿入
    ackermann_msgs/AckermannDrive.h: No such file or directory
    ここに画像の説明を挿入
    解決策

    sudo apt-get install ros-melodic-ackermann-msgs
    

    正常にコンパイルされました
    ここに画像の説明を挿入

2.Gazeboは独自の仮想環境を構築します

(1)関連設定

  1. 環境変数を設定する
    echo "source ~/robot_positioning_ws/devel/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    

(2)車のモデルを実行する

  1. ステートメントを実行します
    roslaunch racecar_gazebo racecar.launch 
    
  2. 操作効果
    説明:tkの制御インターフェースの小さなウィンドウが車の動きを制御します。Wは前進、Dは左折、Sは後退、Aは右折を意味します。
    ここに画像の説明を挿入

(3)手動で環境を構築する

  1. ガゼボを開く

    roslaunch gazebo_ros empty_world.launch
    
  2. [編集]-> [ビルドエディター]をクリックしてモデルを作成し、モデルを保存します
    ここに画像の説明を挿入


  3. 車のモデル実行するために作成したトラックモデルフレームワークをインポートします

    roslaunch racecar_gazebo racecar.launch 
    

    環境モデルのインポートと作成挿入-
    >対応する保存済みモデルの選択、
    ここに画像の説明を挿入
    障害物の追加
    ここに画像の説明を挿入
    、ワールドファイルとしての保存
    ここに画像の説明を挿入

(4)運用・作成環境

  1. 起動ファイルを作成し、トラックパラメータを設定します
    cd ~/robot_positioning_ws/src/racecar/racecar_gazebo/launch
    sudo gedit lyy.launch
    
    lyy.launchコンテンツ
    <?xml version="1.0"?>
    <launch>
      <!-- Launch the racecar -->
      <include file="$(find racecar_gazebo)/launch/racecar.launch">
        <arg name="world_name" value="lyy"/>
      </include>
    </launch>
    
  2. 望楼を実行します
    roslaunch racecar_gazebo lyy.launch 
    
    次のように表示されます
    ここに画像の説明を挿入

3、gmappingマッピングを実行します

  1. gmappingマッピング

    roslaunch racecar_gazebo slam_gmapping.launch
    

    問題の説明:ERROR: cannot launch node of type [gmapping/slam_gmapping]: gmapping
    ここに画像の説明を挿入
    解決策

    sudo apt-get install ros-melodic-gmapping
    
  2. トロリーの
    始点を(ktコントロールウィンドウを介して)完全な円を描くと、
    ここに画像の説明を挿入
    トロリーの終点が
    ここに画像の説明を挿入
    Rvizに表示されます。
    ここに画像の説明を挿入

  3. gmappingで作成した地図を保存する

    sudo apt-get install ros-melodic-map-server
    cd ~/robot_positioning_ws/src/racecar/racecar_gazebo/map
    rosrun map_server map_saver -f lyy_map
    

    ここに画像の説明を挿入

第四に、車の自律的なポジショニングとナビゲーション

(1)自分で作った環境

  1. 起動ファイルの編集

    cd ~/robot_positioning_ws/src/racecar/racecar_gazebo/launch
    sudo gedit lyy_auto.launch
    

    lyy_auto.launchファイルの内容

    <?xml version="1.0"?>
    <launch>
      <!-- Launch the racecar -->
      <include file="$(find racecar_gazebo)/launch/racecar.launch">
        <arg name="world_name" value="lyy"/>
      </include>
      
      <!-- Launch the built-map -->
      <node name="map_server" pkg="map_server" type="map_server" args="$(find racecar_gazebo)/map/lyy_map.yaml" />
    
      <!--Launch the move base with time elastic band-->
      <param name="/use_sim_time" value="true"/>
      <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
        <rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
        <rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
        <rosparam file="$(find racecar_gazebo)/config/local_costmap_params.yaml" command="load" />
        <rosparam file="$(find racecar_gazebo)/config/global_costmap_params.yaml" command="load" />
        <rosparam file="$(find racecar_gazebo)/config/teb_local_planner_params.yaml" command="load" />
    
        <param name="base_global_planner" value="global_planner/GlobalPlanner" />
        <param name="planner_frequency" value="0.01" />
        <param name="planner_patience" value="5.0" />
        <!--param name="use_dijkstra" value="false" /-->
        
        <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
        <param name="controller_frequency" value="5.0" />
        <param name="controller_patience" value="15.0" />
    
        <param name="clearing_rotation_allowed" value="false" />
      </node>
      
    </launch>
    

    ここに画像の説明を挿入

  2. 作成した環境を実行します

    roslaunch racecar_gazebo lyy_auto.launch
    
  3. rvizを開始します

    roslaunch racecar_gazebo racecar_rviz.launch
    

    ここに画像の説明を挿入

  4. 車の軌道を設計し
    ます。2DNavゴールを使用してターゲットを公開します。
    ここに画像の説明を挿入
    問題の説明:使用2D Nav Goal发布目标时,始终没有反应
    解決策

    sudo apt-get install ros-melodic-teb-local-planner
    

    始点と終点を隔てる壁がないので、終点を反対側に移動します。

  5. path_pursuit.pyスクリプトファイルを開始します

    rosrun racecar_gazebo path_pursuit.py
    

    実際の状況は
    ここに画像の説明を挿入
    一時的に原因が不明です。

(2)ダウンロードした機能パッケージに環境が含まれている

  1. 動作環境

    roslaunch racecar_gazebo racecar_runway_navigation.launch 	
    
  2. rvizを開始します

    roslaunch racecar_gazebo racecar_rviz.launch
    
  3. 車の軌道を設計し、
    2DNavゴールを使用して目標位置を公開します

  4. path_pursuit.pyスクリプトファイルを開始します

    rosrun racecar_gazebo path_pursuit.py
    

    実行結果(移動プロセスの一部)
    ここに画像の説明を挿入

5つ目は、YOLOを使用して、マークされたオブジェクトを検出および識別します

(1)YOLOをロードします

  1. ssh設定

    ssh-keygen ##输入之后根据提示输入两次回车,两次密码
    ls ~/.ssh
    eval `ssh-agent`
    ssh-add ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub #得到一串密匙
    

    GitHubにログインし、アカウントのドロップダウンオプションで設定、sshおよびGPGキーを選択し、新しいsshキーを選択し、デフォルトの公開キーという名前を入力して、取得したキーをテキストボックスにコピーし、[sshキーの追加]をクリックします。キー設定が完了しました。

  2. darknet-rosをダウンロード

    cd ~/robot_positioning_ws/src
    git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
    
  3. コンパイル

    cd ~/robot_positioning_ws
    catkin_make -DCMAKE_BUILD_TYPE=Release
    

    ここに画像の説明を挿入
    说明:
    プロジェクト全体のコンパイルを開始します。コンパイルが完了すると、。/ darknet_ros / darknet_ros / yolo_network_config / weightsファイルにyolov2-tiny.weightsとyolov3.weightsの2つのモデルファイルがあるかどうかがチェックされます。デフォルトでは、ダウンロードしたコードには、ボリュームを節約するためにこれが含まれていません。2つのモデルファイル。そのため、コンパイル後にモデルファイルが自動的にダウンロードされ、待ち時間が長くなります。コンパイルを開始する前に、事前にダウンロードして、モデルファイルを上記のフォルダーにコピーすると、再度ダウンロードされることはありません。

(2)マークされたオブジェクトの検出を実現します

  1. ガゼボを開く

    roslaunch racecar_gazebo racecar_runway_navigation.launch
    
  2. トピックを表示するには、racecar.gazeboファイルを開きます
    ここに画像の説明を挿入

  3. ros.yamlファイルでサブスクライブされているトピックを変更します
    元のファイル
    ここに画像の説明を挿入
    変更されたファイル
    ここに画像の説明を挿入

  4. YOLOV3を起動します

    roslaunch darknet_ros darknet_ros.launch
    

    このプロセスは非常に簡単に行き詰まるため、何度か試す必要があります。
    ここに画像の説明を挿入
    結局、認識結果はあまり正確ではありません。カメラがすべてのオブジェクトをキャプチャしておらず、一部のオブジェクトが他のオブジェクトとして認識されていることが考えられます。このプロセスには長い時間がかかり、行き詰まりがちでした。最終的な効果を得るには、より多くの忍耐が必要です。自分で環境を構築するときは、始点と終点を分けるものに注意する必要があります。後でパスを計画しないと、パスは描画されません。


参照接続

  1. Ubuntu 18.04では、Gazeboを使用してトラックを構築し、ROSロボットのポジショニングとナビゲーションシミュレーションを完了し、YOLOをロードしてマークされたオブジェクトを検出および識別します[スマートカー]
  2. Ubuntu18.04でROSスマートカーのポジショニングとナビゲーションシミュレーションを実現
  3. ROSでのdarknet_ros(YOLO V3)検出の実装
  4. 組み込みシステムアプリケーションの開発と大きな仕事-ROSロボットのポジショニングとナビゲーションシミュレーション

おすすめ

転載: blog.csdn.net/qq_43279579/article/details/115262778