Skip to content

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 - ### 公式ツール・パッケージの置き場所

複数オーガナイゼーションに別れて配置されているので忘れやすいのでメモ

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( FOUND )
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 ${_DEFINITIONS})
list(APPEND ${PROJECT_NAME}_FOUND_INCLUDE_DIRS ${_INCLUDE_DIRS})
list(APPEND ${PROJECT_NAME}_FOUND_LIBRARIES ${_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についての参照パスの最近傍点との距離の平均をコストとする

Path Angle Critic