ROS公式サイト中級教程学習総括(1-6)
9597 ワード
チュートリアルのWebサイト:http://wiki.ros.org/cn/ROS/Tutorials. このブログは1-6節です.
xmlファイルを追加します.パッケージにプロファイル(package.xml)が含まれている場合、ROSはそれを見つけることができます.実行: CMakeListsも必要だtxtファイル.これでcatkin_makeは、CMakeの強力なプラットフォーム間特性を利用して、作成したpackageをコンパイルすることができます.
ROS packagesでは、オペレーティングシステムがいわゆる「システム依存項目」である外部関数ライブラリを提供する必要がある場合があります.ROSは、必要なシステム依存項目をダウンロードしてインストールするためのツールrosdepを提供します.ROS packagesは、構成ファイルにシステム依存項目を宣言する必要があります.
rosdepは、ROS packagesをダウンロードしてインストールするために必要なシステム依存項目の小さなツールの使用方法です.
launchファイルをできるだけ再利用することで、異なるロボットプラットフォームでこれらのlaunchファイルを修正する必要がなくなります.実際の環境からシミュレーション環境に移行しても少しだけ修正すればよい.
コマンド「rospack find 2 dnav_pr 2/move_base/2 dnav_pr 2.launch」を使用して、上位レベルのlaunchファイルを見つけることができます.
この書類は他の書類を引用している.これらの参照されるファイルには、位置決め、センサ処理、パス計画など、システムに関連するnodeおよびparameter(さらにはネストされた参照)が含まれています.作成テクニック:上位レベルのlaunchファイルは短く、includeコマンドを使用してシステムの構成部分とROS parameterを参照すればよい.
負荷のバランスと帯域幅の管理のために、どのノードがどのマシン上で動作するかを制御する必要があります.また,再利用性を考慮して,具体的なマシン名をlaunchファイルに書き込むことは望んでいない.roslaunchはmachine tagsを用いてこの問題を解決した.最初の参照は、env置換子を使用して、ROBOT変数の値を使用する
引用されたmoveを見てみましょうbase.xmlファイル:
このセグメントコードはmoveを起動します.ベースノード.最初の参照要素はremappingです.作成テクニック:特定のタイプの情報が異なる場合に異なるtopicに公開されると、topic remappingファイルにいくつかのラベルが使用できます.これらのパラメータは、ノードの内部要素(前に書かれているため)であるため、ノードのプライベートパラメータです.要素の後にはyamlファイルからパラメータを読み出す要素もあります.yamlは人間が読みやすいファイルフォーマットで、複雑なデータをサポートする構造です.作成テクニック:Yamlファイルでは、複雑なネストされたドメイン名のパラメータを許可し、同じパラメータ値を複数の場所で繰り返し使用できます.
複数のロボットでROSを使用するのは簡単ですが、いくつかの点を覚えておく必要があります.-マスターが1つしか必要ありません.1つのマシンで実行すればいいです.-すべてのノードは、ROS_を構成する必要があります.MASTER_URIは同じマスターに接続されています.-任意の2つのマシン間の任意の2つのポートには、完全で双方向に接続されたネットワークが必要です.-各機器は解析可能な名前を他の機器に放送しなければならない.
対応するコンパイル構築システムを選択することを忘れないでください.
メッセージ・タイプは、packageに対応するドメイン名空間に帰属します.たとえば、次のようにします.
他のpackageで定義したメッセージタイプを使用する場合は、packageを忘れないでください.xmlは、
ROSパッケージの手動作成
rospack find [ ]
.さっき作成したpackageに気づくべきです.xmlはroscppとstd_に依存するmsgs.catkinは、作成したpackageを構成するためにこれらの依存項目を利用しています.cmake_minimum_required(VERSION 2.8.3)
project(foobar)
find_package(catkin REQUIRED roscpp std_msgs)
catkin_package()
システム依存の管理
System Dependencies
ROS packagesでは、オペレーティングシステムがいわゆる「システム依存項目」である外部関数ライブラリを提供する必要がある場合があります.ROSは、必要なシステム依存項目をダウンロードしてインストールするためのツールrosdepを提供します.ROS packagesは、構成ファイルにシステム依存項目を宣言する必要があります.
rosdep
rosdepは、ROS packagesをダウンロードしてインストールするために必要なシステム依存項目の小さなツールの使用方法です.
rosdep install [package]
Roslaunchの大規模なプロジェクトでの使用テクニック
Introduction
launchファイルをできるだけ再利用することで、異なるロボットプラットフォームでこれらのlaunchファイルを修正する必要がなくなります.実際の環境からシミュレーション環境に移行しても少しだけ修正すればよい.
上層部の構造
コマンド「rospack find 2 dnav_pr 2/move_base/2 dnav_pr 2.launch」を使用して、上位レベルのlaunchファイルを見つけることができます.
<launch>
<group name="wg">
<include file="$(find pr2_alpha)/$(env ROBOT).machine" />
<include file="$(find 2dnav_pr2)/config/new_amcl_node.xml" />
<include file="$(find 2dnav_pr2)/config/base_odom_teleop.xml" />
<include file="$(find 2dnav_pr2)/config/lasers_and_filters.xml" />
<include file="$(find 2dnav_pr2)/config/map_server.xml" />
<include file="$(find 2dnav_pr2)/config/ground_plane.xml" />
<include file="$(find 2dnav_pr2)/move_base/move_base.xml" />
group>
launch>
この書類は他の書類を引用している.これらの参照されるファイルには、位置決め、センサ処理、パス計画など、システムに関連するnodeおよびparameter(さらにはネストされた参照)が含まれています.作成テクニック:上位レベルのlaunchファイルは短く、includeコマンドを使用してシステムの構成部分とROS parameterを参照すればよい.
Machine tags and Environment Variables
負荷のバランスと帯域幅の管理のために、どのノードがどのマシン上で動作するかを制御する必要があります.また,再利用性を考慮して,具体的なマシン名をlaunchファイルに書き込むことは望んでいない.roslaunchはmachine tagsを用いてこの問題を解決した.最初の参照は、env置換子を使用して、ROBOT変数の値を使用する
です.例えば、roslaunch命令の前に実行する:export ROBOT=pre
、pre.machineが引用されます.作成テクニック:envディスプレイスメントを使用すると、launchファイルの一部を環境変数の値に依存させることができます.Parameters, namespaces, and yaml files
引用されたmoveを見てみましょうbase.xmlファイル:
"move_base" type="move_base" name="move_base" machine="c2">
from="odom" to="pr2_base_odometry/odom" />
<param name="controller_frequency" value="10.0" />
<param name="footprint_padding" value="0.015" />
<param name="controller_patience" value="15.0" />
<param name="clearing_radius" value="0.59" />
file="$(find 2dnav_pr2)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
file="$(find 2dnav_pr2)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
file="$(find 2dnav_pr2)/move_base/local_costmap_params.yaml" command="load" />
file="$(find 2dnav_pr2)/move_base/global_costmap_params.yaml" command="load" />
file="$(find 2dnav_pr2)/move_base/navfn_params.yaml" command="load" />
file="$(find 2dnav_pr2)/move_base/base_local_planner_params.yaml" command="load" />
このセグメントコードはmoveを起動します.ベースノード.最初の参照要素はremappingです.作成テクニック:特定のタイプの情報が異なる場合に異なるtopicに公開されると、topic remappingファイルにいくつかのラベルが使用できます.これらのパラメータは、ノードの内部要素(前に書かれているため)であるため、ノードのプライベートパラメータです.要素の後にはyamlファイルからパラメータを読み出す要素もあります.yamlは人間が読みやすいファイルフォーマットで、複雑なデータをサポートする構造です.作成テクニック:Yamlファイルでは、複雑なネストされたドメイン名のパラメータを許可し、同じパラメータ値を複数の場所で繰り返し使用できます.
Launchファイルの再利用
パラメータリロード
ROSのマルチロボットでの使用
概要
複数のロボットでROSを使用するのは簡単ですが、いくつかの点を覚えておく必要があります.-マスターが1つしか必要ありません.1つのマシンで実行すればいいです.-すべてのノードは、ROS_を構成する必要があります.MASTER_URIは同じマスターに接続されています.-任意の2つのマシン間の任意の2つのポートには、完全で双方向に接続されたネットワークが必要です.-各機器は解析可能な名前を他の機器に放送しなければならない.
マシン間で動作するTalker/listener
マスターの起動
Listenerの起動
talkerの起動
実行エラー
訳者注
カスタムメッセージ
カスタムメッセージ
対応するコンパイル構築システムを選択することを忘れないでください.
リファレンスと出力メッセージのタイプ
メッセージ・タイプは、packageに対応するドメイン名空間に帰属します.たとえば、次のようにします.
C++
#include <std_msgs/String.h>
std_msgs::String msg;
Python
from std_msgs.msg import String
msg = String()
依存
他のpackageで定義したメッセージタイプを使用する場合は、packageを忘れないでください.xmlは、
および
を追加する.