Skip to content

ROS Tips

vcstool

OSRFでROS 2プロジェクトを引っ張ってきたDirk Thomas氏によって作られたメタリポジトリなどでのvcs操作をかんたんにするツール。 ただし、氏がNVIDIAに移籍してからは氏の対応が極端に遅くなり、IssueやPullRequestでは氏へ数多の”Friendly Ping”が送られているがそのほとんどは返信がない。

ROSコミュニティの中核の1つをなすこのツールがフリーズする状況は芳しくないため、Steven! Ragnarök氏のフォークやvcstools2を作るものも現れている。

参考

ROS パッケージを debianパッケージ化したい

GitHub Actionが提供されている jspricke/ros-deb-builder-action

これだけでできるらしい

  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と一緒にパラメータを指定する

ros2 run ros_packages executable --ros-args -p <parameter_name>:=<parameter_value>

参考:URL

存在するかわからないパッケージを扱いながらament_cmake_autoを使う

find_package(ament_cmake_auto REQUIRED)  

ament_auto_find_build_dependencies()  

find_package(<pkg_name>)  
if( <pkg_name>_FOUND )  
    add_compile_options(-D USE_<pkg_name>)  
    list(APPEND ${PROJECT_NAME}_BUILD_DEPENDS <pkg_name>)  
    list(APPEND ${PROJECT_NAME}_BUILD_EXPORT_DEPENDS <pkg_name>)  
    list(APPEND ${PROJECT_NAME}_EXEC_DEPENDS <pkg_name>)  
    list(APPEND ${PROJECT_NAME}_BUILD_DEPENDS <pkg_name>)  
    list(APPEND ${PROJECT_NAME}_FOUND_BUILD_DEPENDS <pkg_name>)  
    list(APPEND ${PROJECT_NAME}_FOUND_DEFINITIONS ${<pkg_name>_DEFINITIONS})  
    list(APPEND ${PROJECT_NAME}_FOUND_INCLUDE_DIRS ${<pkg_name>_INCLUDE_DIRS})  
    list(APPEND ${PROJECT_NAME}_FOUND_LIBRARIES ${<pkg_name>_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

Topic統計機能