Skip to content

Commit b336194

Browse files
committed
🔄 synced local 'docs' with remote 'cheatsheets'
1 parent ab1ca6a commit b336194

File tree

3 files changed

+278
-216
lines changed

3 files changed

+278
-216
lines changed

docs/ROS Tips.md

Lines changed: 124 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -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
95111
ros2 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})
118135
endif()
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
131148
pkg.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
140154
identifier = 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
147160
def __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

Comments
 (0)