ROS Tips
vcstool¶
OSRFでROS 2プロジェクトを引っ張ってきたDirk Thomas氏によって作られたメタリポジトリなどでのvcs操作をかんたんにするツール. ただし,氏がNVIDIAに移籍してからは氏の対応が極端に遅くなり,IssueやPullRequestでは氏へ数多の”Friendly Ping”が送られているがそのほとんどは返信がない.
ROSコミュニティの中核の一つをなすこのツールがフリーズする状況は芳しくないため,
Steven! Ragnarök氏のフォークやvcstools2を作るものも現れている
参考:
Status of vcstool · Issue #242 · dirk-thomas/vcstool · GitHub
GitHub - MaxandreOgeret/vcstool2: Vcstool2 is an attempt at continuing development of vcstool, a command line tool designed to make working with multiple repositories easier.
- ## ROS パッケージを debianパッケージ化したい
GitHub Actionが提供されている jspricke/ros-deb-builder-action
これだけでできるらしい
yaml
uses: jspricke/ros-deb-builder-action@main
with:
ROS_DISTRO: rolling
DEB_DISTRO: jammy
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MoveIt2でも使われている他,Autowareでも試用されている Network Dependents · jspricke/ros-deb-builder-action · GitHub - ### 公式ツール・パッケージの置き場所
複数オーガナイゼーションに別れて配置されているので忘れやすいのでメモ
- colcon · GitHub - colcon本体,プラグイン
- ROS core stacks · GitHub
- ROS1のものも多いが,rosdistroなどROS2でも共通で使えるものはここにあることが多い
- ros/rosdistro
- rosdepの依存解決・aptへの反映のときに参照されるリポジトリ
- 見どころ
- 基本:各distroのフォルダの
distribution.yaml
- 一般的なライブラリ:rosdep/base.yaml
- pipライブラリ:rosdep/python.yaml
- ROS 2 · GitHub
- ROS2関連はまずここを見る
- ros2/ros2cli
-
ros2 <verb>
コマンド - ros2/rclcpp - サンプル系(demosのほうがサンプルが豊富) - ros2/examples - ros2/demos - ament · GitHub - ament/ament_cmake - ament_cmake_auto - ament_cmake_core - ament/ament_lint
- ros-infrastructure · GitHub - ros-infrastructure/rep - ros-infrastructure/rosdep - ros-infrastructure/ros_buildfarm
- Open Robotics · GitHub - osrf/docker_images - osrf/rocker
- その他 - ROS 2 Tooling Working Group · GitHub - CIなど - ros-tooling/topic_tools - ROS Planning · GitHub - Navigation, MoveItなど - ros-planning/navigation2 - ros-planning/moveit2 - ROS 2 release repositories · GitHub - リリースリポジトリ置き場 - ros-visualization · GitHub - Rviz, Rqt関連
ros2 run
と一緒にパラメータを指定する¶
bash
ros2 run ros_packages executable --ros-args -p <parameter_name>:=<parameter_value>
参考:URL
存在するかわからないパッケージを扱いながらament_cmake_autoを使う¶
```CMake find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()
find_package(
if(
add_compile_options(-D USE
list(APPEND ${PROJECT_NAME}_BUILD_DEPENDS
list(APPEND ${PROJECT_NAME}_BUILD_EXPORT_DEPENDS
list(APPEND ${PROJECT_NAME}_EXEC_DEPENDS
list(APPEND ${PROJECT_NAME}_BUILD_DEPENDS
list(APPEND ${PROJECT_NAME}_FOUND_BUILD_DEPENDS
list(APPEND ${PROJECT_NAME}_FOUND_DEFINITIONS ${
list(APPEND ${PROJECT_NAME}_FOUND_INCLUDE_DIRS ${
list(APPEND ${PROJECT_NAME}_FOUND_LIBRARIES ${
endif()
```
package.xmlの/ に書けるconditionで使える変数¶
REP 149 -- Package Manifest Format Three Specification (ROS.org)
基本,環境変数だけ
rosdep/rospkg_loader.py L146 contextとして環境変数をぶち込んでいる.逆にこれ以外のコンテキストは存在しない
pkg.evaluate_conditions(os.environ)
catkin_pkg/condition.py L47
$
付き文字が抽出されて...
identifier = pp.Word('$', pp.alphanums + '_', min=2).setName('identifier')
catkin_pkg/condition.py L102-103 コンテキストで解決される
def __call__(self, context):
return str(context.get(self.value[1:], ''))
MPPIメモ¶
Critic¶
Constraint Critic¶
- 最大速度を超えている部分をペナルティに追加
- 最低速度を下回っている部分をペナルティに追加
Cost Critic¶
- 衝突計算をして衝突したら大きなペナルティを入れる
- waypointごとのコストの平均
Goal Angle Critic¶
- ゴールの近くに来たとき角度が合っていないと低評価
- ゴール近くに来ると、ゴール角度と各Waypointの角度の差の絶対値平均を取って、重み係数をかけてべき乗係数分べき乗される
Goal Critic¶
- ゴール付近に来たときに各Waypointとゴール座標の差分の平均をとってコストとする
Obstacle Critic¶
- waypointごとに障害物やインフレーション層からコストを計算する
- コストを全部足し合わせる
- 長さで割って正規化
Path Align Critic¶
- ゴール付近では使わない(代わりにGoal Criticが使われる)
- 動的障害物がパスとかなり重なっているときはコストを足さない
- それぞれのwaipointについての参照パスの最近傍点との距離の平均をコストとする