@@ -10,179 +10,187 @@ intro: ROS Tips
1010
1111## vcstool
1212
13- OSRFでROS 2プロジェクトを引っ張ってきたDirk Thomas氏によって作られたメタリポジトリなどでのvcs操作をかんたんにするツール。
14- ただし、氏がNVIDIAに移籍してからは氏の対応が極端に遅くなり、IssueやPullRequestでは氏へ数多の”Friendly Ping”が送られているがそのほとんどは返信がない 。
13+ ### 概要
14+ OSRFでROS 2プロジェクトを引っ張ってきたDirk Thomas氏によって作られたメタリポジトリなどでのvcs操作をかんたんにするツール 。
1515
16- ROSコミュニティの中核の1つをなすこのツールがフリーズする状況は芳しくないため、Steven! Ragnarök氏のフォークやvcstools2を作るものも現れている。
16+ ### 現在の状況
17+ - 開発者のNVIDIA移籍後、対応が極端に遅くなっている
18+ - IssueやPullRequestで数多の"Friendly Ping"が送られているが返信なし
19+ - ROSコミュニティの中核ツールがフリーズしている状況
1720
18- ### 参考
21+ ### 代替手段
22+ - Steven! Ragnarök氏のフォーク
23+ - [ vcstool2] ( https://github.com/MaxandreOgeret/vcstool2/ ) - 新しい実装
1924
20- <!-- cspell:ignore MaxandreOgeret -->
21-
22- - [ Status of vcstool · Issue #242 · dirk-thomas/vcstool · GitHub] ( https://github.com/dirk-thomas/vcstool/issues/242 )
25+ ### 参考リンク
26+ - [ Status of vcstool · Issue #242 ] ( https://github.com/dirk-thomas/vcstool/issues/242 )
2327- [ GitHub - MaxandreOgeret/vcstool2] ( https://github.com/MaxandreOgeret/vcstool2/ )
2428
25- ## ROS パッケージを debianパッケージ化したい
29+ ## ROSパッケージのDebianパッケージ化
2630
27- GitHub Actionが提供されている
28- [ jspricke/ros-deb-builder-action] ( https://github.com/jspricke/ros-deb-builder-action )
31+ ### GitHub Actionを使用した自動化
32+ [ jspricke/ros-deb-builder-action] ( https://github.com/jspricke/ros-deb-builder-action ) が提供されている。
2933
30- これだけでできるらしい
34+ ### 基本的な使用法
3135
3236``` yaml
33- uses : jspricke/ros-deb-builder-action@main
34- with :
37+ uses : jspricke/ros-deb-builder-action@main
38+ with :
3539 ROS_DISTRO : rolling
3640 DEB_DISTRO : jammy
3741 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
3842` ` `
3943
40- <!-- cspell:ignore jspricke -->
41-
42- MoveIt2でも使われている他、Autowareでも試用されている
43- [Network Dependents · jspricke/ros-deb-builder-action · GitHub](https://github.com/jspricke/ros-deb-builder-action/network/dependents)
44-
45- ### 公式ツール・パッケージの置き場所
46-
47- 複数オーガナイゼーションに別れて配置されているため忘れやすいのでメモ
48-
49- - [colcon · GitHub](https://github.com/colcon)
50- - colcon本体・プラグイン
51- - [ROS core stacks · GitHub](https://github.com/ros)
52- - ROS1のものも多いが、rosdistroなどROS2でも共通で使えるものはここにあることが多い
53- - [ros/rosdistro](https://github.com/ros/rosdistro)
54- - rosdepの依存解決・aptへの反映のときに参照されるリポジトリ
55- - 見どころ
56- - 基本:各distroのフォルダの ` distribution.yaml`
57- - 一般的なライブラリ:`rosdep/base.yaml`
58- - pipライブラリ:`rosdep/python.yaml`
59- - [ROS 2 · GitHub](https://github.com/ros2)
60- - ROS2関連はまずここを見る
61- - [ros2/ros2cli](https://github.com/ros2/ros2cli)
62- - ` ros2 <verb>` コマンド
63- - [ros2/rclcpp](https://github.com/ros2/rclcpp)
64- - サンプル系(demosのほうがサンプル豊富)
65- - [ros2/examples](https://github.com/ros2/examples)
66- - [ros2/demos](https://github.com/ros2/demos)
67- - [ament · GitHub](https://github.com/ament)
68- - [ament/ament\_cmake](https://github.com/ament/ament_cmake)
69- - ament_cmake_auto
70- - ament_cmake_core
71- - [ament/ament\_lint](https://github.com/ament/ament_lint)
72- - [ros-infrastructure · GitHub](https://github.com/ros-infrastructure)
73- - [ros-infrastructure/rep](https://github.com/ros-infrastructure/rep)
74- - [ros-infrastructure/rosdep](https://github.com/ros-infrastructure/rosdep)
75- - [ros-infrastructure/ros\_buildfarm](https://github.com/ros-infrastructure/ros_buildfarm)
76- - [Open Robotics · GitHub](https://github.com/osrf)
77- - [osrf/docker\_images](https://github.com/osrf/docker_images)
78- - [osrf/rocker](https://github.com/osrf/rocker)
79- - その他
80- - [ROS 2 Tooling Working Group · GitHub](https://github.com/ros-tooling)
81- - CIなど
82- - [ros-tooling/topic\_tools](https://github.com/ros-tooling/topic_tools)
83- - [ROS Planning · GitHub](https://github.com/ros-planning)
84- - Navigation・MoveItなど
85- - [ros-planning/navigation2](https://github.com/ros-planning/navigation2)
86- - [ros-planning/moveit2](https://github.com/ros-planning/moveit2)
87- - [ROS 2 release repositories · GitHub](https://github.com/ros2-gbp)
88- - リリースリポジトリ置き場
89- - [ros-visualization · GitHub](https://github.com/ros-visualization)
90- - Rviz・Rqt関連
44+ ### 採用事例
45+ - **MoveIt2**: 本格採用
46+ - **Autoware**: 試用中
47+ - その他の依存プロジェクト: [Network Dependents](https://github.com/jspricke/ros-deb-builder-action/network/dependents)
48+
49+ ## 公式ツール・パッケージの置き場所
50+
51+ 複数オーガナイゼーションに別れて配置されているため忘れやすいのでメモ
52+
53+ ### 主要オーガナイゼーション
54+
55+ #### [colcon · GitHub](https://github.com/colcon)
56+ - colcon本体・プラグイン
57+
58+ #### [ROS core stacks · GitHub](https://github.com/ros)
59+ - ROS1のものも多いが、rosdistroなどROS2でも共通で使えるものはここにあることが多い
60+ - **重要リポジトリ**:
61+ - [ros/rosdistro](https://github.com/ros/rosdistro) - rosdepの依存解決・aptへの反映時に参照
62+ - 各distroのフォルダの ` distribution.yaml`
63+ - 一般的なライブラリ:`rosdep/base.yaml`
64+ - pipライブラリ:`rosdep/python.yaml`
65+
66+ # ### [ROS 2 · GitHub](https://github.com/ros2)
67+ - ROS2関連はまずここを見る
68+ - **主要リポジトリ**:
69+ - [ros2/ros2cli](https://github.com/ros2/ros2cli) - `ros2 <verb>`コマンド
70+ - [ros2/rclcpp](https://github.com/ros2/rclcpp)
71+ - [ros2/examples](https://github.com/ros2/examples) - サンプル
72+ - [ros2/demos](https://github.com/ros2/demos) - サンプル豊富
73+
74+ # ### [ament · GitHub](https://github.com/ament)
75+ - [ament/ament_cmake](https://github.com/ament/ament_cmake)
76+ - ament_cmake_auto
77+ - ament_cmake_core
78+ - [ament/ament_lint](https://github.com/ament/ament_lint)
79+
80+ # ### [ros-infrastructure · GitHub](https://github.com/ros-infrastructure)
81+ - [ros-infrastructure/rep](https://github.com/ros-infrastructure/rep)
82+ - [ros-infrastructure/rosdep](https://github.com/ros-infrastructure/rosdep)
83+ - [ros-infrastructure/ros_buildfarm](https://github.com/ros-infrastructure/ros_buildfarm)
84+
85+ # ### [Open Robotics · GitHub](https://github.com/osrf)
86+ - [osrf/docker_images](https://github.com/osrf/docker_images)
87+ - [osrf/rocker](https://github.com/osrf/rocker)
88+
89+ # ## 特殊用途オーガナイゼーション
90+
91+ # ### [ROS 2 Tooling Working Group · GitHub](https://github.com/ros-tooling)
92+ - CIなど
93+ - [ros-tooling/topic_tools](https://github.com/ros-tooling/topic_tools)
94+
95+ # ### [ROS Planning · GitHub](https://github.com/ros-planning)
96+ - Navigation・MoveItなど
97+ - [ros-planning/navigation2](https://github.com/ros-planning/navigation2)
98+ - [ros-planning/moveit2](https://github.com/ros-planning/moveit2)
99+
100+ # ### [ROS 2 release repositories · GitHub](https://github.com/ros2-gbp)
101+ - リリースリポジトリ置き場
102+
103+ # ### [ros-visualization · GitHub](https://github.com/ros-visualization)
104+ - Rviz・Rqt関連
105+
106+ # # コマンドライン操作
91107
92108# ## `ros2 run`と一緒にパラメータを指定する
93109
94- ` ` ` shell
110+ ` ` ` bash
95111ros2 run ros_packages executable --ros-args -p <parameter_name>:=<parameter_value>
96112` ` `
97113
98- 参考:[URL](https://docs.ros.org/en/galactic/How-To-Guides/Node-arguments.html#setting-parameters-directly-from-the-command-line)
114+ **参考**: [Node arguments documentation](https://docs.ros.org/en/galactic/How-To-Guides/Node-arguments.html#setting-parameters-directly-from-the-command-line)
115+
116+ # # 開発テクニック
99117
100- # # 存在するかわからないパッケージを扱いながらament_cmake_autoを使う
118+ # ## 存在するかわからないパッケージを扱いながらament_cmake_autoを使う
101119
102120` ` ` cmake
103- find_package(ament_cmake_auto REQUIRED)
104-
105- ament_auto_find_build_dependencies()
106-
107- find_package(<pkg_name>)
108- if( <pkg_name>_FOUND )
109- add_compile_options(-D USE_<pkg_name>)
110- list(APPEND ${PROJECT_NAME}_BUILD_DEPENDS <pkg_name>)
111- list(APPEND ${PROJECT_NAME}_BUILD_EXPORT_DEPENDS <pkg_name>)
112- list(APPEND ${PROJECT_NAME}_EXEC_DEPENDS <pkg_name>)
113- list(APPEND ${PROJECT_NAME}_BUILD_DEPENDS <pkg_name>)
114- list(APPEND ${PROJECT_NAME}_FOUND_BUILD_DEPENDS <pkg_name>)
115- list(APPEND ${PROJECT_NAME}_FOUND_DEFINITIONS ${<pkg_name>_DEFINITIONS})
116- list(APPEND ${PROJECT_NAME}_FOUND_INCLUDE_DIRS ${<pkg_name>_INCLUDE_DIRS})
117- list(APPEND ${PROJECT_NAME}_FOUND_LIBRARIES ${<pkg_name>_LIBRARIES})
121+ find_package(ament_cmake_auto REQUIRED)
122+
123+ ament_auto_find_build_dependencies()
124+
125+ find_package(<pkg_name>)
126+ if(<pkg_name>_FOUND)
127+ add_compile_options(-D USE_<pkg_name>)
128+ list(APPEND ${PROJECT_NAME}_BUILD_DEPENDS <pkg_name>)
129+ list(APPEND ${PROJECT_NAME}_BUILD_EXPORT_DEPENDS <pkg_name>)
130+ list(APPEND ${PROJECT_NAME}_EXEC_DEPENDS <pkg_name>)
131+ list(APPEND ${PROJECT_NAME}_FOUND_BUILD_DEPENDS <pkg_name>)
132+ list(APPEND ${PROJECT_NAME}_FOUND_DEFINITIONS ${<pkg_name>_DEFINITIONS})
133+ list(APPEND ${PROJECT_NAME}_FOUND_INCLUDE_DIRS ${<pkg_name>_INCLUDE_DIRS})
134+ list(APPEND ${PROJECT_NAME}_FOUND_LIBRARIES ${<pkg_name>_LIBRARIES})
118135endif()
119136` ` `
120137
121- # ## package.xmlの/ <depend/>に書けるconditionで使える変数
138+ # ## package.xmlの` <depend/>` に書けるconditionで使える変数
122139
123- [REP 149 -- Package Manifest Format Three Specification (ROS.org) ](https://www.ros.org/reps/rep-0149.html#build-depend-multiple:~:text=condition%3D%22CONDITION_EXPRESSION%22,1%22%3Eroscpp%3C/depend%3E)
140+ [REP 149 - Package Manifest Format Three Specification](https://www.ros.org/reps/rep-0149.html#build-depend-multiple:~:text=condition%3D%22CONDITION_EXPRESSION%22,1%22%3Eroscpp%3C/depend%3E)
124141
125- 基本、環境変数だけ
142+ **基本的に環境変数のみ使用可能**
126143
127- [rosdep/rospkg_loader.py L146](https://github.com/ros-infrastructure/rosdep/blob/master/src/rosdep2/rospkg_loader.py#L146)
128- contextとして環境変数をぶち込んでいる。逆にこれ以外のコンテキストは存在しない
144+ # ### 実装詳細
145+ [rosdep/rospkg_loader.py L146](https://github.com/ros-infrastructure/rosdep/blob/master/src/rosdep2/rospkg_loader.py#L146) - contextとして環境変数をぶち込んでいる。これ以外のコンテキストは存在しない。
129146
130147` ` ` python
131148pkg.evaluate_conditions(os.environ)
132149` ` `
133150
134- [catkin\_pkg/condition.py L47](https://github.com/ros-infrastructure/catkin_pkg/blob/master/src/catkin_pkg/condition.py#L47)
135- ` $` 付き文字が抽出されて…
136-
137- <!-- cspell:ignore alphanums -->
151+ [catkin_pkg/condition.py L47](https://github.com/ros-infrastructure/catkin_pkg/blob/master/src/catkin_pkg/condition.py#L47) - `$`付き文字が抽出される
138152
139153` ` ` python
140154identifier = pp.Word('$', pp.alphanums + '_', min=2).setName('identifier')
141155` ` `
142156
143- [catkin\_pkg/condition.py L102-103](https://github.com/ros-infrastructure/catkin_pkg/blob/master/src/catkin_pkg/condition.py#L102-L103)
144- コンテキストで解決される
157+ [catkin_pkg/condition.py L102-103](https://github.com/ros-infrastructure/catkin_pkg/blob/master/src/catkin_pkg/condition.py#L102-L103) - コンテキストで解決される
145158
146159` ` ` python
147160def __call__(self, context):
148- return str(context.get(self.value[1:], ''))
161+ return str(context.get(self.value[1:], ''))
149162` ` `
150163
151- # # MPPIメモ
164+ # # MPPIアルゴリズム詳解
152165
153- # ## **Critic**
166+ # ## Critic一覧
154167
155168# ### Constraint Critic
156-
157- - 最大速度を超えている部分をペナルティに追加
158- - 最低速度を下回っている部分をペナルティに追加
169+ - **最大速度制約**: 最大速度を超えている部分をペナルティに追加
170+ - **最低速度制約**: 最低速度を下回っている部分をペナルティに追加
159171
160172# ### Cost Critic
161-
162- - 衝突計算をして衝突したら大きなペナルティを入れる
163- - waypointごとのコストの平均
173+ - **衝突検出**: 衝突計算をして衝突したら大きなペナルティを追加
174+ - **経路コスト**: waypointごとのコストの平均
164175
165176# ### Goal Angle Critic
166-
167- - ゴールの近くに来たとき角度が合っていないと低評価
168- - ゴール近くに来ると、ゴール角度と各Waypointの角度の差の絶対値平均を取って、重み係数をかけてべき乗係数分べき乗される
177+ - **角度制約**: ゴールの近くに来たとき角度が合っていないと低評価
178+ - **評価方法**: ゴール近くで、ゴール角度と各Waypointの角度の差の絶対値平均を取って、重み係数をかけてべき乗係数分べき乗
169179
170180# ### Goal Critic
171-
172- - ゴール付近に来たとき、各Waypointとゴール座標の差分の平均をとってコストとする
181+ - **距離評価**: ゴール付近に来たとき、各Waypointとゴール座標の差分の平均をコストとする
173182
174183# ### Obstacle Critic
175-
176- - waypointごとに障害物やインフレーション層からコストを計算する
177- - コストを全部足し合わせる
178- - 長さで割って正規化
184+ - **障害物回避**: waypointごとに障害物やインフレーション層からコストを計算
185+ - **正規化**: コストを全部足し合わせて長さで割って正規化
179186
180187# ### Path Align Critic
181-
182- - ゴール付近では使わない(代わりにGoal Criticが使われる)
183- - 動的障害物がパスとかなり重なっているときはコストを足さない
184- - それぞれのwaipointについての参照パスの最近傍点との距離の平均をコストとする
188+ - **適用条件**: ゴール付近では使わない(代わりにGoal Criticが使われる)
189+ - **動的障害物対応**: 動的障害物がパスとかなり重なっているときはコストを足さない
190+ - **評価方法**: それぞれのwaypointについての参照パスの最近傍点との距離の平均をコストとする
185191
186192# ### Path Angle Critic
193+ (詳細記載なし)
187194
188- # # Topic統計機能
195+ # # Topic統計機能
196+ (詳細記載なし)
0 commit comments