記事のディレクトリ
序文
環境の説明:
このプロセスでは、Ubuntu18.04 + ROS Melodic + Gazebo + yolo3を使用します
1.予備準備
(1)ワークスペースを作成する
-
ros作業領域を作成します
mkdir -p ~/robot_positioning_ws/src
-
作業領域ディレクトリに切り替えます
cd ~/robot_positioning_ws/src
-
ROSワークスペースを初期化します
catkin_init_workspace
(2)ファンクションパッケージレースカー
-
トラックを構築するためにGazeboをダウンロードする
git clone https://github.com/xmy0916/racecar.git
-
関連するコントローラーをインストールする
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
-
レースカー機能パックのコンパイル
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)関連設定
- 環境変数を設定する
echo "source ~/robot_positioning_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
(2)車のモデルを実行する
- ステートメントを実行します
roslaunch racecar_gazebo racecar.launch
- 操作効果
説明:tkの制御インターフェースの小さなウィンドウが車の動きを制御します。Wは前進、Dは左折、Sは後退、Aは右折を意味します。
(3)手動で環境を構築する
-
ガゼボを開く
roslaunch gazebo_ros empty_world.launch
-
[編集]-> [ビルドエディター]をクリックしてモデルを作成し、モデルを保存します
-
車のモデルを実行するために作成したトラックモデルフレームワークをインポートしますroslaunch racecar_gazebo racecar.launch
環境モデルのインポートと作成挿入-
>対応する保存済みモデルの選択、
障害物の追加
、ワールドファイルとしての保存
(4)運用・作成環境
- 起動ファイルを作成し、トラックパラメータを設定します
lyy.launchコンテンツcd ~/robot_positioning_ws/src/racecar/racecar_gazebo/launch sudo gedit 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>
- 望楼を実行します
次のように表示されますroslaunch racecar_gazebo lyy.launch
3、gmappingマッピングを実行します
-
gmappingマッピング
roslaunch racecar_gazebo slam_gmapping.launch
問題の説明:
ERROR: cannot launch node of type [gmapping/slam_gmapping]: gmapping
解決策sudo apt-get install ros-melodic-gmapping
-
トロリーの
始点を(ktコントロールウィンドウを介して)完全な円を描くと、
トロリーの終点が
Rvizに表示されます。
-
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)自分で作った環境
-
起動ファイルの編集
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>
-
作成した環境を実行します
roslaunch racecar_gazebo lyy_auto.launch
-
rvizを開始します
roslaunch racecar_gazebo racecar_rviz.launch
-
車の軌道を設計し
ます。2DNavゴールを使用してターゲットを公開します。
問題の説明:使用2D Nav Goal发布目标时,始终没有反应
解決策sudo apt-get install ros-melodic-teb-local-planner
始点と終点を隔てる壁がないので、終点を反対側に移動します。
-
path_pursuit.pyスクリプトファイルを開始します
rosrun racecar_gazebo path_pursuit.py
実際の状況は
一時的に原因が不明です。
(2)ダウンロードした機能パッケージに環境が含まれている
-
動作環境
roslaunch racecar_gazebo racecar_runway_navigation.launch
-
rvizを開始します
roslaunch racecar_gazebo racecar_rviz.launch
-
車の軌道を設計し、
2DNavゴールを使用して目標位置を公開します -
path_pursuit.pyスクリプトファイルを開始します
rosrun racecar_gazebo path_pursuit.py
実行結果(移動プロセスの一部)
5つ目は、YOLOを使用して、マークされたオブジェクトを検出および識別します
(1)YOLOをロードします
-
ssh設定
ssh-keygen ##输入之后根据提示输入两次回车,两次密码 ls ~/.ssh eval `ssh-agent` ssh-add ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub #得到一串密匙
GitHubにログインし、アカウントのドロップダウンオプションで設定、sshおよびGPGキーを選択し、新しいsshキーを選択し、デフォルトの公開キーという名前を入力して、取得したキーをテキストボックスにコピーし、[sshキーの追加]をクリックします。キー設定が完了しました。
-
darknet-rosをダウンロード
cd ~/robot_positioning_ws/src git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
-
コンパイル
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)マークされたオブジェクトの検出を実現します
-
ガゼボを開く
roslaunch racecar_gazebo racecar_runway_navigation.launch
-
トピックを表示するには、racecar.gazeboファイルを開きます
-
ros.yamlファイルでサブスクライブされているトピックを変更します
元のファイル
変更されたファイル
-
YOLOV3を起動します
roslaunch darknet_ros darknet_ros.launch
このプロセスは非常に簡単に行き詰まるため、何度か試す必要があります。
結局、認識結果はあまり正確ではありません。カメラがすべてのオブジェクトをキャプチャしておらず、一部のオブジェクトが他のオブジェクトとして認識されていることが考えられます。このプロセスには長い時間がかかり、行き詰まりがちでした。最終的な効果を得るには、より多くの忍耐が必要です。自分で環境を構築するときは、始点と終点を分けるものに注意する必要があります。後でパスを計画しないと、パスは描画されません。