Skip to content

Commit

Permalink
Merge pull request #3 from Rione/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
shutosheep authored Jun 26, 2024
2 parents 12e047a + c1fa870 commit edda218
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 43 deletions.
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
sphinx>=7.3.7
sphinx-book-theme>=1.1.3
myst-parser>=3.0.1
sphinx-copybutton>=0.5.2
5 changes: 4 additions & 1 deletion source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,7 @@
# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

html_theme = 'sphinx_book_theme'
html_theme = 'alabaster'
html_theme_options = {
'fixed_sidebar': True, # do not move sidebar while scrolling
}
25 changes: 15 additions & 10 deletions source/programming/action.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
# アクション通信

## アクション通信とは?

アクション通信は一言で言うと、前回学んだ{doc}`/programming/topic`と{doc}`/programming/service`の両方を組み合わせたようなものです。
リクエスを送る**クライアント**と、受け取ったリクエスに応じてレスポンスを返す**サーバ**が存在します。
アクション通信の特徴として、サーバはレスポンスを返すまで、途中経過の値をクライアントに送り続けることが出来ます。

```{note}
アクション通信は使う頻度が少ない(?)ので飛ばしても大丈夫です。
必要になったら勉強してください。
```

### 今回の目標
## 今回の目標

今回は以下のようなノードをもつ`hello_action`パッケージを作ってみましょう。

- `server_node.py`
- `hello_msgs/Sum`型の`/sum`アクションからメッセージを受け取る
- 1から受け取ったメッセージまでの総和をクライアントに送る
- 途中経過の値をfeedbackとして`tmp_sum`として送る
- `hello_msgs/Sum`型の`/sum`アクションからリクエスをを受け取り、クライアントにレスポンスを返す
- `goal`をクライアントから受け取り、1から`goal`までの総和をクライアントに送る
- 目標の値(`goal`)をgoalとして受け取る
- 総和の途中経過の値(`tmp_sum`)をfeedbackとして送る
- 総和(`sum`)をresultとして送る
- `client_node.py`
- `hello_msgs/Sum`型の`/sum`アクションに送ってサーバからレスポンスを受け取る
- 途中経過の値のfeedbackを受け取る
- `hello_msgs/Sum`型の`/sum`アクションにリクエストを送って、サーバからレスポンスを受け取る
- `goal`をサーバに送り、1から`goal`までの総和をサーバから受け取る
- 目標の値(`goal`)をgoalとして送る
- 総和の途中経過の値(`tmp_sum`)をfeedbackとして受け取る
- 総和(`sum`)をresultとして受け取る

## パッケージの作成

Expand All @@ -29,7 +34,7 @@ ros2 pkg create --build-type ament_python hello_action

## server_node.pyのコード

`hello_action/hello_action/server_node.py`を以下の内容で書き込む。
`hello_action/server_node.py`を以下の内容で書き込む。

```py
import rclpy
Expand Down Expand Up @@ -73,7 +78,7 @@ def main(args=None):

## client_node.pyのコード

`hello_action/hello_action/client_node.py`を以下の内容で書き込む。
`hello_action/client_node.py`を以下の内容で書き込む。

```py
import rclpy
Expand Down
12 changes: 9 additions & 3 deletions source/programming/custom-message.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ ros2 pkg create --build-type ament_cmake hello_msgs
mkdir msg
```

`hello_msgs/msg/Person.msg`を以下の内容で保存してください。
`msg/Person.msg`を以下の内容で保存してください。

```none
string name
Expand All @@ -60,7 +60,7 @@ uint8 age
mkdir srv
```

`hello_msgs/srv/Order.srv`を以下の内容で保存してください。
`srv/Order.srv`を以下の内容で保存してください。

```none
string menu
Expand Down Expand Up @@ -89,7 +89,7 @@ string message
mkdir action
```

`hello_msgs/action/Sum.action`を以下の内容で保存してください。
`action/Sum.action`を以下の内容で保存してください。

```none
uint64 goal
Expand Down Expand Up @@ -203,10 +203,16 @@ source install/setup.bash
$ ros2 interface show hello_msgs/msg/Person
string name
uint8 age
```

```bash
$ ros2 interface show hello_msgs/srv/Order
string menu
---
string message
```

```bash
$ ros2 interface show hello_msgs/action/Sum
uint64 goal
---
Expand Down
10 changes: 5 additions & 5 deletions source/programming/hello-world.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ $ tree

この`hello_world`パッケージは`ament_python`形式なので上のようになっています。

```{note}
```{caution}
`hello_world/__init__.py`や`resouce/hello_world`ファイルは空ファイルですが、パッケージに必要なので消さないでください。
```

## コードの編集

今回はコピペで構わないので以下のPythonのコードを`hello_world/hello_world/pub_node.py`に書いてください。
今回はコピペで構わないので以下のPythonのコードを`hello_world/pub_node.py`に書いてください。

```py
import rclpy
Expand Down Expand Up @@ -89,7 +89,7 @@ if __name__ == "__main__":
main()
```

同じように以下のコードを`hello_world/hello_world/sub_node.py`に書いてください。
同じように以下のコードを`hello_world/sub_node.py`に書いてください。

```py
import rclpy
Expand Down Expand Up @@ -206,8 +206,8 @@ cd ~/my_ws
colcon build
```

```{note}
必ず、ワークスペースのルートディレクトリで`colcon build`コマンドを実行してください。
```{caution}
必ず、ワークスペースのルートディレクトリ(`~/my_ws`)で`colcon build`コマンドを実行してください。
```

`colcon build`コマンドを実行すると`my_ws`に新たに、`build``install``log`ディレクトリが作成されます。
Expand Down
21 changes: 12 additions & 9 deletions source/programming/launch.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
# Launchファイル

## Launchファイルとは?

ROSでは複数のノードを同時に立ち上げて、それぞれのノードからデータを送受信したりしています。
今までは`ros2 run`コマンドで1つ1つノードを立ち上げていましたが、実際には複数のノードをLaunchファイルというもので起動します。
このLaunchファイルではトピック名やノード名、パラメータの値を変更出来るので非常に便利です。
このLaunchファイルからトピック名やノード名、パラメータの値を変更出来るので非常に便利です。

```{note}
ここでは
Expand All @@ -15,7 +13,7 @@ ROSでは複数のノードを同時に立ち上げて、それぞれのノー
まだ作ってない人は先に、そちらをご覧ください。
```

### 今回の目標
## 今回の目標

今回は以下のようなLaunchファイルをもつ`hello_launch`パッケージを作りましょう。

Expand All @@ -39,15 +37,20 @@ ROSでは複数のノードを同時に立ち上げて、それぞれのノー
- `/number`トピックを`/double_number`トピックにリマップ
- `m_number`パラメータを`4`に変更

```{note}
今回はPythonでLaunchファイル書きますが、YAMLやROS 1時代ののXMLでもLaunchファイルを書けます
```{tip}
今回はPythonでLaunchファイルを書きますが、YAMLやROS 1時代のXMLでもLaunchファイルを書けます
詳しくは[公式のチュートリアル(英語)](https://docs.ros.org/en/humble/How-To-Guides/Launch-file-different-formats.html)を読んでください。
```

## パッケージの作成

```bash
ros2 pkg create --build-type ament_cmake hello_launch
```

Launchファイルを保存する`launch`ディレクトリを作成します。

```bash
cd hello_launch
mkdir launch
```
Expand Down Expand Up @@ -103,7 +106,7 @@ ament_package()

## hello.launch.pyのコード

`hello_launch/launch/hello.launch.py`を以下の内容で書き込む。
`launch/hello.launch.py`を以下の内容で書き込む。

```py
from launch import LaunchDescription
Expand All @@ -126,7 +129,7 @@ def generate_launch_description():

## two_double.launch.pyのコード

`hello_launch/launch/two_double.launch.py`を以下の内容で書き込む。
`launch/two_double.launch.py`を以下の内容で書き込む。

```py
from launch import LaunchDescription
Expand Down Expand Up @@ -158,7 +161,7 @@ def generate_launch_description():

## double_and_multiply.launch.pyのコード

`hello_launch/launch/double_and_multiply.launch.py`を以下の内容で書き込む。
`launch/double_and_multiply.launch.py`を以下の内容で書き込む。

```py
from launch import LaunchDescription
Expand Down
8 changes: 4 additions & 4 deletions source/programming/parameter.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# パラメータ

## パラメータとは?

ROSではパラメータというものを設定することが出来ます。
これはプログラムを実行する前に値を任意に変更することが出来て、ソースコードを変えることなく自由に値を変えられます。
これはプログラムを実行する前に値を任意に変更することが出来て、ソースコードを変えることなく値を自由に変えられます。

## 今回の目標

今回は以下のようなノードをもつ`hello_param`パッケージを作ってみましょう

Expand All @@ -19,7 +19,7 @@ ros2 pkg create --build-type ament_python hello_param

## multiply_node.pyのコード

`hello_param/hello_param/multiply_node.py`を以下の内容で書き込む。
`hello_param/multiply_node.py`を以下の内容で書き込む。

```py
import rclpy
Expand Down
8 changes: 3 additions & 5 deletions source/programming/service.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
# サービス通信

## サービス通信とは?

サービス通信では**クライアント****サーバ**が存在します。
クライアントはデータをリクエストしてサーバからのレスポンスを受け取り、サーバはクライアントからのリクエストに応じてレスポンスを送ります。
TCP/IP通信をイメージすると分かりやすいと思います。

### 今回の目標
## 今回の目標

今回は以下のようなノードをもつ`hello_service`パッケージを作ってみましょう。

Expand All @@ -25,7 +23,7 @@ ros2 pkg create --build-type ament_python hello_service

## server_node.pyのコード

`hello_service/hello_service/server_node.py`を以下の内容で書き込む。
`hello_service/server_node.py`を以下の内容で書き込む。

```py
import rclpy
Expand Down Expand Up @@ -60,7 +58,7 @@ if __name__ == "__main__":

## client_node.pyのコード

`hello_service/hello_service/client_node.py`を以下の内容で書き込む。
`hello_service/client_node.py`を以下の内容で書き込む。

```py
import rclpy
Expand Down
8 changes: 3 additions & 5 deletions source/programming/topic.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
# トピック通信

## トピック通信とは?

トピック通信ではデータを送る**パブリッシャ**とデータを受け取る**サブスクライバ**が存在します。
パブリッシャは任意のトピックにデータを連続的に送り続け、サブスクライバは任意のトピックに送られたデータを受け取ることができます。
UDP通信をイメージすると分かりやすいと思います。

### 今回の目標
## 今回の目標

今回は以下のようなノードをもつ`hello_topic`パッケージを作ってみましょう

Expand All @@ -25,7 +23,7 @@ ros2 pkg create --build-type ament_python hello_topic

## iteration_node.pyのコード

`hello_topic/hello_topic/iteration_node.py`を以下の内容で書き込む。
`hello_topic/iteration_node.py`を以下の内容で書き込む。

```py
import rclpy
Expand Down Expand Up @@ -63,7 +61,7 @@ if __name__ == "__main__":

## double_node.pyのコード

`hello_topic/hello_topic/double_node.py`を以下の内容で書き込む。
`hello_topic/double_node.py`を以下の内容で書き込む。

```py
import rclpy
Expand Down

0 comments on commit edda218

Please sign in to comment.