From 0e5148122887b580d2baa70b47748c1b3ceeacf0 Mon Sep 17 00:00:00 2001 From: uhobeike Date: Fri, 10 Feb 2023 19:27:32 +0900 Subject: [PATCH] Feature ros2 --- docs/raspicat/ros/install.md | 232 ++++++++++----- docs/raspicat/ros/package-install.md | 140 ++++++--- docs/raspicat/ros/samples.md | 422 +++++++++++++++------------ mkdocs.yml | 8 +- 4 files changed, 486 insertions(+), 316 deletions(-) diff --git a/docs/raspicat/ros/install.md b/docs/raspicat/ros/install.md index dcd05ca..190aa3e 100644 --- a/docs/raspicat/ros/install.md +++ b/docs/raspicat/ros/install.md @@ -1,11 +1,11 @@ --- -title: ROSのインストール +title: ROS / ROS 2のインストール robot: Raspberry Pi Cat --- -# ROSのインストール +# ROS / ROS 2のインストール -このページでは、以下の2つのデバイスへのROSのインストール方法を説明します。 +このページでは、以下の2つのデバイスへのROS / ROS 2のインストール方法を説明します。 * Ubuntuインストール済みのノートパソコン等のPC * Ubuntuインストール済みのRaspberry Pi @@ -13,93 +13,171 @@ robot: Raspberry Pi Cat なお、ROSをすでにインストール済みの場合はこのページの手順は不要です。 ## 使用機材 {: #requirements} - -* セットアップ済みRaspberry Pi Cat本体 - * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています - * Raspberry PiにOS(**Ubuntu Server 18.04**)がインストール済みであること - * Raspberry Pi OSでのROSの動作は確認していません。 - * **デバイスドライバ**がインストール済みであること - * [デバイスドライバのインストール手順](../driver/install.md)を参照してください -* USB Type-Bケーブル(Raspberry Pi Catに同梱されています) -* ノートパソコン等のPC - * OS(**Ubuntu Desktop 18.04**)がインストール済みであること +=== "ROS" + * セットアップ済みRaspberry Pi Cat本体 + * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています + * Raspberry PiにOS(**Ubuntu Server 18.04**)がインストール済みであること + * Raspberry Pi OSでのROSの動作は確認していません。 + * **デバイスドライバ**がインストール済みであること + * [デバイスドライバのインストール手順](../driver/install.md)を参照してください + * USB Type-Bケーブル(Raspberry Pi Catに同梱されています) + * ノートパソコン等のPC + * OS(**Ubuntu Desktop 18.04**)がインストール済みであること + +=== "ROS 2" + * セットアップ済みRaspberry Pi Cat本体 + * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています + * Raspberry PiにOS(**Ubuntu Server 22.04**)がインストール済みであること + * Raspberry Pi OSでのROSの動作は確認していません。 + * **デバイスドライバ**がインストール済みであること + * [デバイスドライバのインストール手順](../driver/install.md)を参照してください + * USB Type-Bケーブル(Raspberry Pi Catに同梱されています) + * ノートパソコン等のPC + * OS(**Ubuntu Desktop 22.04**)がインストール済みであること ## 事前準備 {: #preparation} [デバイスドライバのインストール](../driver/install.md)の[Raspberry Piへのログイン](../driver/install.md#raspberry-pi-login)に沿ってRaspberry Piへログインします。 -## ROSのインストール(公式のドキュメントに沿って進める場合) {: #official-document} +## ROS / ROS 2のインストール(公式のドキュメントに沿って進める場合) {: #official-document} +=== "ROS" + [https://wiki.ros.org/melodic/Installation/Ubuntu](https://wiki.ros.org/melodic/Installation/Ubuntu){target=_blank rel=noopener} + を参考に、**ROS Melodic**をインストールします。 -[https://wiki.ros.org/melodic/Installation/Ubuntu](https://wiki.ros.org/melodic/Installation/Ubuntu){target=_blank rel=noopener} -を参考に、**ROS Melodic**をインストールします。 +=== "ROS 2" + [https://docs.ros.org/humble/Installation/Ubuntu](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html){target=_blank rel=noopener} + を参考に、**ROS 2 Humble**をインストールします。 GUIを使用する場合は**Desktop-Full**を、 使用しない場合は**ROS-Base**パッケージをインストールします。 -## ROSのインストール(インストールスクリプトを使う場合) {: #install-script} - -### ノートパソコン等のPC - -非公式のインストールスクリプトを使うことで簡単にROSをインストールできます。 - -このROSインストールスクリプトは`curl`を使用します。以下のコマンドでインストールします。 - -```sh -$ sudo apt install -y curl -``` - -以下のコマンドでROSインストールスクリプトを実行します。 -環境にもよりますが完了までは10分以上かかる場合があります。 - -```sh -$ bash -c "$(curl -SsfL u.ty0.jp/ros-melodic-desktop)" -``` - -スクリプトが問題なく実行できれば以下のメッセージが表示されます。 - -```txt -Success installing ROS melodic -Run 'source ~/.bashrc' +## ROS / ROS 2のインストール(インストールスクリプトを使う場合) {: #install-script} -If any error occurs, please refer to the following URL. -https://github.com/Tiryoh/ros_setup_scripts_ubuntu/ -``` +非公式のインストールスクリプトを使うことで簡単にROS / ROS 2をインストールできます。 -以下のコマンドでインストールした設定を読み込みます。 +### ノートパソコン等のPC -```sh -$ source ~/.bashrc -``` +=== "ROS" + + このROSインストールスクリプトは`curl`を使用します。以下のコマンドでインストールします。 + + ```sh + $ sudo apt install -y curl + ``` + + 以下のコマンドでROSインストールスクリプトを実行します。 + 環境にもよりますが完了までは10分以上かかる場合があります。 + + ```sh + $ bash -c "$(curl -SsfL u.ty0.jp/ros-melodic-desktop)" + ``` + + スクリプトが問題なく実行できれば以下のメッセージが表示されます。 + + ```txt + Success installing ROS melodic + Run 'source ~/.bashrc' + + If any error occurs, please refer to the following URL. + https://github.com/Tiryoh/ros_setup_scripts_ubuntu/ + ``` + + 以下のコマンドでインストールした設定を読み込みます。 + + ```sh + $ source ~/.bashrc + ``` + +=== "ROS 2" + + このROS 2インストールスクリプトは`curl`と`git`を使用します。以下のコマンドでインストールします。 + + ```sh + $ sudo apt install -y curl git + ``` + + 以下のコマンドでROS 2インストールスクリプトを実行します。 + 環境にもよりますが完了までは10分以上かかる場合があります。 + + ```sh + $ git clone https://github.com/Tiryoh/ros2_setup_scripts_ubuntu.git + $ cd ros2_setup_scripts_ubuntu + $ ./ros2-humble-desktop-main.sh + ``` + + スクリプトが問題なく実行できれば以下のメッセージが表示されます。 + + ```txt + Success installing ROS humble + Run 'source ~/.bashrc' + ``` + + 以下のコマンドでインストールした設定を読み込みます。 + + ```sh + $ source ~/.bashrc + ``` ### Raspberry Pi -非公式のインストールスクリプトを使うことで簡単にROSをインストールできます。 - -このROSインストールスクリプトは`curl`を使用します。以下のコマンドでインストールします。 - -```sh -$ sudo apt install -y curl -``` - -以下のコマンドでROSインストールスクリプトを実行します。 -環境にもよりますが完了までは10分以上かかる場合があります。 - -```sh -$ bash -c "$(curl -SsfL u.ty0.jp/ros-melodic-ros-base)" -``` - -スクリプトが問題なく実行できれば以下のメッセージが表示されます。 - -```txt -Success installing ROS melodic -Run 'source ~/.bashrc' - -If any error occurs, please refer to the following URL. -https://github.com/Tiryoh/ros_setup_scripts_ubuntu/ -``` - -以下のコマンドでインストールした設定を読み込みます。 - -```sh -$ source ~/.bashrc -``` +=== "ROS" + + このROSインストールスクリプトは`curl`を使用します。以下のコマンドでインストールします。 + + ```sh + $ sudo apt install -y curl + ``` + + 以下のコマンドでROSインストールスクリプトを実行します。 + 環境にもよりますが完了までは10分以上かかる場合があります。 + + ```sh + $ bash -c "$(curl -SsfL u.ty0.jp/ros-melodic-ros-base)" + ``` + + スクリプトが問題なく実行できれば以下のメッセージが表示されます。 + + ```txt + Success installing ROS melodic + Run 'source ~/.bashrc' + + If any error occurs, please refer to the following URL. + https://github.com/Tiryoh/ros_setup_scripts_ubuntu/ + ``` + + 以下のコマンドでインストールした設定を読み込みます。 + + ```sh + $ source ~/.bashrc + ``` + + +=== "ROS 2" + + このROS 2インストールスクリプトは`curl`と`git`を使用します。以下のコマンドでインストールします。 + + ```sh + $ sudo apt install -y curl git + ``` + + 以下のコマンドでROS 2インストールスクリプトを実行します。 + 環境にもよりますが完了までは10分以上かかる場合があります。 + + ```sh + $ git clone https://github.com/Tiryoh/ros2_setup_scripts_ubuntu.git + $ cd ros2_setup_scripts_ubuntu + $ ./ros2-humble-ros-base-main.sh + ``` + + スクリプトが問題なく実行できれば以下のメッセージが表示されます。 + + ```txt + Success installing ROS humble + Run 'source ~/.bashrc' + ``` + + 以下のコマンドでインストールした設定を読み込みます。 + + ```sh + $ source ~/.bashrc + ``` \ No newline at end of file diff --git a/docs/raspicat/ros/package-install.md b/docs/raspicat/ros/package-install.md index b239efc..848ab8c 100644 --- a/docs/raspicat/ros/package-install.md +++ b/docs/raspicat/ros/package-install.md @@ -1,61 +1,107 @@ --- -title: ROSパッケージのインストール +title: ROS / ROS 2パッケージのインストール robot: Raspberry Pi Cat --- # ROSパッケージのインストール -このページでは、Raspberry Pi/Ubuntu PCへのROSパッケージのインストール方法を説明します。 +このページでは、Raspberry Pi/Ubuntu PCへのROS / ROS 2パッケージのインストール方法を説明します。 ## 使用機材 {: #requirements} -* セットアップ済みRaspberry Pi Cat本体 - * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています - * Raspberry PiにOS(**Ubuntu Server 18.04**)がインストール済みであること - * Raspberry Pi OSでのROSの動作は確認していません。 - * **デバイスドライバ**がインストール済みであること - * [デバイスドライバのインストール手順](../driver/install.md)を参照してください - * ROSがインストール済みであること - * [ROSのインストール手順](./install.md)を参照してください -* USB Type-Bケーブル(Raspberry Pi Catに同梱されています) -* ノートパソコン等のPC - * OS(**Ubuntu Desktop 18.04**)がインストール済みであること +=== "ROS" + + * セットアップ済みRaspberry Pi Cat本体 + * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています + * Raspberry PiにOS(**Ubuntu Server 18.04**)がインストール済みであること + * Raspberry Pi OSでのROSの動作は確認していません。 + * **デバイスドライバ**がインストール済みであること + * [デバイスドライバのインストール手順](../driver/install.md)を参照してください + * ROSがインストール済みであること + * [ROSのインストール手順](./install.md)を参照してください + * USB Type-Bケーブル(Raspberry Pi Catに同梱されています) + * ノートパソコン等のPC + * OS(**Ubuntu Desktop 18.04**)がインストール済みであること + +=== "ROS 2" + + * セットアップ済みRaspberry Pi Cat本体 + * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています + * Raspberry PiにOS(**Ubuntu Server 22.04**)がインストール済みであること + * Raspberry Pi OSでのROS 2の動作は確認していません。 + * **デバイスドライバ**がインストール済みであること + * [デバイスドライバのインストール手順](../driver/install.md)を参照してください + * ROS 2がインストール済みであること + * [ROS / ROS 2のインストール手順](./install.md)を参照してください + * USB Type-Bケーブル(Raspberry Pi Catに同梱されています) + * ノートパソコン等のPC + * OS(**Ubuntu Desktop 22.04**)がインストール済みであること ## 事前準備 {: #preparation} [デバイスドライバのインストール](../driver/install.md)の[Raspberry Piへのログイン](../driver/install.md#raspberry-pi-login)に沿ってRaspberry Piへログインします。 -## ROSパッケージのインストール {: #install-ros-packages} - -制御用のパッケージである -[rt-net/raspimouse](https://github.com/rt-net/raspimouse){target=_blank rel=noopener}、[rt-net/raspicat_ros](https://github.com/rt-net/raspicat_ros){target=_blank rel=noopener} -SLAM/ナビゲーション用のパッケージである -[rt-net/raspicat_slam_navigation](https://github.com/rt-net/raspicat_slam_navigation){target=_blank rel=noopener} -RaspberryPiCat用のURDF記述マクロを含んだパッケージである -[rt-net/raspicat_description](https://github.com/rt-net/raspicat_description){target=_blank rel=noopener} -をダウンロードしてインストールします。 - -!!! Tip - **Raspberry Pi**と**PC**の両方にダウンロードおよびインストールを行います。 - -```sh -# Create workspace -$ source /opt/ros/melodic/setup.bash -$ mkdir -p ~/catkin_ws/src -$ cd ~/catkin_ws/src - -# Clone ROS packages -$ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse.git -$ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_description.git -$ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspicat_ros.git -$ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspicat_slam_navigation.git -$ git clone https://github.com/rt-net/raspicat_description.git - -# Install dependencies -$ rosdep update -$ rosdep install -r -y -i --from-paths raspicat* raspimouse* - -# make & install -$ cd ~/catkin_ws && catkin_make -$ source ~/catkin_ws/devel/setup.bash -``` +## ROS / ROS 2パッケージのインストール {: #install-ros-packages} + +=== "ROS" + + 制御用のパッケージである + [rt-net/raspimouse](https://github.com/rt-net/raspimouse){target=_blank rel=noopener}、[rt-net/raspicat_ros](https://github.com/rt-net/raspicat_ros){target=_blank rel=noopener} + SLAM/ナビゲーション用のパッケージである + [rt-net/raspicat_slam_navigation](https://github.com/rt-net/raspicat_slam_navigation){target=_blank rel=noopener} + RaspberryPiCat用のURDF記述マクロを含んだパッケージである + [rt-net/raspicat_description](https://github.com/rt-net/raspicat_description){target=_blank rel=noopener} + をダウンロードしてインストールします。 + + !!! Tip + **Raspberry Pi**と**PC**の両方にダウンロードおよびインストールを行います。 + + ```sh + # Create workspace + $ source /opt/ros/melodic/setup.bash + $ mkdir -p ~/catkin_ws/src + $ cd ~/catkin_ws/src + + # Clone ROS packages + $ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse.git + $ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_description.git + $ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspicat_ros.git + $ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspicat_slam_navigation.git + $ git clone https://github.com/rt-net/raspicat_description.git + + # Install dependencies + $ rosdep update + $ rosdep install -r -y -i --from-paths raspicat* raspimouse* + + # make & install + $ cd ~/catkin_ws && catkin_make + $ source ~/catkin_ws/devel/setup.bash + ``` + +=== "ROS 2" + + 制御用のパッケージである + [rt-net/raspimouse2](https://github.com/rt-net/raspimouse2){target=_blank rel=noopener}、[rt-net/raspicat_ros](https://github.com/rt-net/raspicat_ros){target=_blank rel=noopener} + をダウンロードしてインストールします。 + + !!! Tip + **Raspberry Pi**と**PC**の両方にダウンロードおよびインストールを行います。 + + ```sh + # Create workspace + $ source /opt/ros/humble/setup.bash + $ mkdir -p ~/catkin_ws/src + $ cd ~/catkin_ws/src + + # Clone ROS 2 packages + $ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse2.git + $ git clone -b ros2 https://github.com/rt-net/raspicat_ros.git + + # Install dependencies + $ rosdep update + $ rosdep install -r -y -i --from-paths raspicat_bringup* raspimouse* + + # make & install + $ cd ~/catkin_ws && colcon build --symlink-install + $ source ~/catkin_ws/install/setup.bash + ``` \ No newline at end of file diff --git a/docs/raspicat/ros/samples.md b/docs/raspicat/ros/samples.md index d486121..c7bf682 100644 --- a/docs/raspicat/ros/samples.md +++ b/docs/raspicat/ros/samples.md @@ -1,229 +1,275 @@ --- -title: ROSの実行 +title: ROS / ROS 2の実行 robot: Raspberry Pi Cat --- -# ROSを使用してRaspberry Pi Catの制御 +# ROS / ROS 2を使用してRaspberry Pi Catの制御 -このページでは -実機を使用した、SLAMからナビゲーションまでの実行方法を説明します。 -## 使用機材 {: #requirements} +=== "ROS" -* セットアップ済みRaspberry Pi Cat本体 - * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています - * Raspberry PiにOS(**Ubuntu Server 18.04**)がインストール済みであること - * Raspberry Pi OSでのROSの動作は確認していません。 - * **デバイスドライバ**がインストール済みであること - * [デバイスドライバのインストール手順](../driver/install.md)を参照してください - * ROSがインストール済みであること - * [ROSのインストール手順](./install.md)を参照してください - * ROSパッケージがインストール済みであること - * [ROSパッケージのインストール手順](./package-install.md)を参照してください -* USB Type-Bケーブル(Raspberry Pi Catに同梱されています) -* ノートパソコン等のPC - * OS(**Ubuntu Desktop 18.04**)がインストール済みであること + このページでは + 実機を使用した、SLAMからナビゲーションまでの実行方法を説明します。 + ## 使用機材 {: #requirements} -## 事前準備 {: #preparation} + * セットアップ済みRaspberry Pi Cat本体 + * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています + * Raspberry PiにOS(**Ubuntu Server 18.04**)がインストール済みであること + * Raspberry Pi OSでのROSの動作は確認していません。 + * **デバイスドライバ**がインストール済みであること + * [デバイスドライバのインストール手順](../driver/install.md)を参照してください + * ROSがインストール済みであること + * [ROSのインストール手順](./install.md)を参照してください + * ROSパッケージがインストール済みであること + * [ROSパッケージのインストール手順](./package-install.md)を参照してください + * USB Type-Bケーブル(Raspberry Pi Catに同梱されています) + * ノートパソコン等のPC + * OS(**Ubuntu Desktop 18.04**)がインストール済みであること -### ROSパッケージの読み込み {: #preparation-source-workspace} + ## 事前準備 {: #preparation} -サンプルを実行する場合は下記コマンドを実行し、 -ROSとパッケージを読み込んでください。 + ### ROSパッケージの読み込み {: #preparation-source-workspace} -```sh -$ source /opt/ros/melodic/setup.bash -$ source ~/catkin_ws/devel/setup.bash -``` + サンプルを実行する場合は下記コマンドを実行し、 + ROSとパッケージを読み込んでください。 -### Raspberry PiとPC間のROSネットワークを接続する {: #preparation-ros-master-uri} - -環境変数`ROS_IP`、`ROS_MASTER_URI`を設定することで、 -PCからネットワークを介してRaspberry Pi側のトピックやサービスにアクセスできます。 - -Raspberry PiのIPアドレスが`192.168.11.89`、 -PCのIPアドレスが`192.168.11.100`のとき、 -下記コマンドで環境変数を設定します。__この設定値は環境によって変わりますのでご注意ください__。 - -```sh -# Raspberry Pi側 -$ export ROS_IP=192.168.11.89 -$ export ROS_MASTER_URI=http://192.168.11.89:11311/ - -# PC側 -# ROS_MASTER_URIにはRaspberry PiのIPアドレスを入力する -$ export ROS_IP=192.168.11.100 -$ export ROS_MASTER_URI=http://192.168.11.89:11311/ -``` - -ネットワーク接続を切る場合は、 -`ROS_MASTER_URI`をデフォルトの`http://localhost:11311/`に戻します。 - -!!! Warning - PCから操縦する場合はネットワークと環境変数を設定してください。 - -## キーボードで操縦する {: #teleop-keyboard} - -操作方法はターミナルに出力されます。 -#### Raspberry Pi {: #teleop-keyboard-pi} -```sh -# センサやモータ用のノードの立ち上げ -$ roslaunch raspicat_bringup raspicat_bringup.launch -``` - -#### PC {: #teleop-keyboard-pc} -```sh -# キーボード用のノードの立ち上げ -$ roslaunch raspicat_bringup teleop.launch joy:=false -``` - -## ジョイスティックコントローラで操縦する {: #teleop-joy} - -操作方法は[こちら](https://github.com/rt-net/raspicat_ros/blob/main/raspicat_gamepad_controller/README.ja.md)のパッケージを参照してください。 - -=== "ジョイスティックコントローラをPCに接続した場合" - #### Raspberry Pi ```sh - # センサやモータ用のノードの立ち上げ - $ roslaunch raspicat_bringup raspicat_bringup.launch - ``` - #### PC - ```sh - # ジョイスティックコントローラ用のノードの立ち上げ - $ roslaunch raspicat_bringup teleop.launch joy:=true - ``` -=== "ジョイスティックコントローラをRaspberry Pi 4に接続した場合" - #### Raspberry Pi - ```sh - # センサやモータ用およびジョイスティックコントローラ用のノードの立ち上げ - $ roslaunch raspicat_bringup raspicat_bringup.launch joy:=true + $ source /opt/ros/melodic/setup.bash + $ source ~/catkin_ws/devel/setup.bash ``` -## LiDARでSLAM {: #lidar-slam} + ### Raspberry PiとPC間のROSネットワークを接続する {: #preparation-ros-master-uri} -ジョイスティックコントローラおよびキーボードにてRaspberry Pi Catを操作出来る状態でSLAMを実行します。 -ここでは、**PC**上にて**SLAM**を実行する方法を紹介します。 -[raspicat_slam](https://github.com/rt-net/raspicat_slam_navigation/tree/main/raspicat_slam) -パッケージで実行が可能なSLAMは、[gmapping](http://wiki.ros.org/gmapping)、[cartographer](http://wiki.ros.org/cartographer)、[slam_toolbox](http://wiki.ros.org/slam_toolbox)の3種類です。 -**rosbag**を使用する場合はオフラインでSLAMを行うことができます。 + 環境変数`ROS_IP`、`ROS_MASTER_URI`を設定することで、 + PCからネットワークを介してRaspberry Pi側のトピックやサービスにアクセスできます。 -!!! Warning - **Raspberry Pi**と**PC**間で通信を行い、**PC**上で**SLAM**を実行する場合は、時刻の同期が必要です。 - これは、**tf**関連のエラーを防ぐためです。 + Raspberry PiのIPアドレスが`192.168.11.89`、 + PCのIPアドレスが`192.168.11.100`のとき、 + 下記コマンドで環境変数を設定します。__この設定値は環境によって変わりますのでご注意ください__。 -### gmapping {: #lidar-slam-gmapping} - -=== "Online SLAM" - #### Raspberry Pi ```sh - # センサやモータ用のノードの立ち上げ - $ roslaunch raspicat_bringup raspicat_bringup.launch - ``` - #### PC - ```sh - # gmappingの実行 - $ roslaunch raspicat_slam raspicat_gmapping.launch joy:=true - - # 地図の保存 - $ roslaunch raspicat_slam map_save.launch map_file:=map-path + # Raspberry Pi側 + $ export ROS_IP=192.168.11.89 + $ export ROS_MASTER_URI=http://192.168.11.89:11311/ + + # PC側 + # ROS_MASTER_URIにはRaspberry PiのIPアドレスを入力する + $ export ROS_IP=192.168.11.100 + $ export ROS_MASTER_URI=http://192.168.11.89:11311/ ``` -=== "Offline SLAM" - #### PC - ```sh - # rosbag playおよびgmappingの実行 - $ roslaunch raspicat_slam raspicat_gmapping.launch rosbag:=true rosbag_rate:=1 rosbag_topics:="/odom /scan /tf /tf_static" rosbag_filename:=rosbag-path + ネットワーク接続を切る場合は、 + `ROS_MASTER_URI`をデフォルトの`http://localhost:11311/`に戻します。 - # 地図の保存 - $ roslaunch raspicat_slam map_save.launch map_file:=map-path - ``` + !!! Warning + PCから操縦する場合はネットワークと環境変数を設定してください。 -### cartographer {: #lidar-slam-cartographer} -=== "Online SLAM" - #### Raspberry Pi - ```sh - # センサやモータ用のノードの立ち上げ - $ roslaunch raspicat_bringup raspicat_bringup.launch - ``` - #### PC - ```sh - # cartographerの実行 - $ roslaunch raspicat_slam raspicat_cartographer.launch joy:=true - - # 地図の保存 - $ roslaunch raspicat_slam map_save.launch map_file:=map-path - ``` - -=== "Offline SLAM" - #### PC - ```sh - # rosbag playおよびcartographerの実行 - $ roslaunch raspicat_slam raspicat_cartographer.launch rosbag:=true rosbag_rate:=1 rosbag_topics:="/odom /scan /tf /tf_static" rosbag_filename:=rosbag-path + ## キーボードで操縦する {: #teleop-keyboard} - # 地図の保存 - $ roslaunch raspicat_slam map_save.launch map_file:=map-path - ``` - -### slam_toolbox {: #lidar-slam-toolbox} -=== "Online SLAM" - #### Raspberry Pi + 操作方法はターミナルに出力されます。 + #### Raspberry Pi {: #teleop-keyboard-pi} ```sh # センサやモータ用のノードの立ち上げ $ roslaunch raspicat_bringup raspicat_bringup.launch ``` - #### PC - ```sh - # slam_toolboxの実行 - $ roslaunch raspicat_slam raspicat_slam_toolbox.launch joy:=true - - # 地図の保存 - $ roslaunch raspicat_slam map_save.launch map_file:=map-path - ``` -=== "Offline SLAM" - #### PC + #### PC {: #teleop-keyboard-pc} ```sh - # rosbag playおよびslam_toolboxの実行 - $ roslaunch raspicat_slam raspicat_slam_toolbox.launch rosbag:=true rosbag_rate:=1 rosbag_topics:="/odom /scan /tf /tf_static" rosbag_filename:=rosbag-path - - # 地図の保存 - $ roslaunch raspicat_slam map_save.launch map_file:=map-path + # キーボード用のノードの立ち上げ + $ roslaunch raspicat_bringup teleop.launch joy:=false ``` -## LiDARでナビゲーション {: #lidar-navigation} - -SLAMによって作成した地図を使用し、Navigationを行います。 -[raspicat_navigation](https://github.com/rt-net/raspicat_slam_navigation/tree/main/raspicat_navigation) -パッケージで実行が可能なNavigationは、[move_base](http://wiki.ros.org/move_base)、[neonavigation](https://github.com/at-wat/neonavigation)の2種類です。 + ## ジョイスティックコントローラで操縦する {: #teleop-joy} + + 操作方法は[こちら](https://github.com/rt-net/raspicat_ros/blob/main/raspicat_gamepad_controller/README.ja.md)のパッケージを参照してください。 + + === "ジョイスティックコントローラをPCに接続した場合" + #### Raspberry Pi + ```sh + # センサやモータ用のノードの立ち上げ + $ roslaunch raspicat_bringup raspicat_bringup.launch + ``` + #### PC + ```sh + # ジョイスティックコントローラ用のノードの立ち上げ + $ roslaunch raspicat_bringup teleop.launch joy:=true + ``` + === "ジョイスティックコントローラをRaspberry Pi 4に接続した場合" + #### Raspberry Pi + ```sh + # センサやモータ用およびジョイスティックコントローラ用のノードの立ち上げ + $ roslaunch raspicat_bringup raspicat_bringup.launch joy:=true + ``` + + ## LiDARでSLAM {: #lidar-slam} + + ジョイスティックコントローラおよびキーボードにてRaspberry Pi Catを操作出来る状態でSLAMを実行します。 + ここでは、**PC**上にて**SLAM**を実行する方法を紹介します。 + [raspicat_slam](https://github.com/rt-net/raspicat_slam_navigation/tree/main/raspicat_slam) + パッケージで実行が可能なSLAMは、[gmapping](http://wiki.ros.org/gmapping)、[cartographer](http://wiki.ros.org/cartographer)、[slam_toolbox](http://wiki.ros.org/slam_toolbox)の3種類です。 + **rosbag**を使用する場合はオフラインでSLAMを行うことができます。 + + !!! Warning + **Raspberry Pi**と**PC**間で通信を行い、**PC**上で**SLAM**を実行する場合は、時刻の同期が必要です。 + これは、**tf**関連のエラーを防ぐためです。 + + ### gmapping {: #lidar-slam-gmapping} + + === "Online SLAM" + #### Raspberry Pi + ```sh + # センサやモータ用のノードの立ち上げ + $ roslaunch raspicat_bringup raspicat_bringup.launch + ``` + #### PC + ```sh + # gmappingの実行 + $ roslaunch raspicat_slam raspicat_gmapping.launch joy:=true + + # 地図の保存 + $ roslaunch raspicat_slam map_save.launch map_file:=map-path + ``` + + === "Offline SLAM" + #### PC + ```sh + # rosbag playおよびgmappingの実行 + $ roslaunch raspicat_slam raspicat_gmapping.launch rosbag:=true rosbag_rate:=1 rosbag_topics:="/odom /scan /tf /tf_static" rosbag_filename:=rosbag-path + + # 地図の保存 + $ roslaunch raspicat_slam map_save.launch map_file:=map-path + ``` + + ### cartographer {: #lidar-slam-cartographer} + === "Online SLAM" + #### Raspberry Pi + ```sh + # センサやモータ用のノードの立ち上げ + $ roslaunch raspicat_bringup raspicat_bringup.launch + ``` + #### PC + ```sh + # cartographerの実行 + $ roslaunch raspicat_slam raspicat_cartographer.launch joy:=true + + # 地図の保存 + $ roslaunch raspicat_slam map_save.launch map_file:=map-path + ``` + + === "Offline SLAM" + #### PC + ```sh + # rosbag playおよびcartographerの実行 + $ roslaunch raspicat_slam raspicat_cartographer.launch rosbag:=true rosbag_rate:=1 rosbag_topics:="/odom /scan /tf /tf_static" rosbag_filename:=rosbag-path + + # 地図の保存 + $ roslaunch raspicat_slam map_save.launch map_file:=map-path + ``` + + ### slam_toolbox {: #lidar-slam-toolbox} + === "Online SLAM" + #### Raspberry Pi + ```sh + # センサやモータ用のノードの立ち上げ + $ roslaunch raspicat_bringup raspicat_bringup.launch + ``` + #### PC + ```sh + # slam_toolboxの実行 + $ roslaunch raspicat_slam raspicat_slam_toolbox.launch joy:=true + + # 地図の保存 + $ roslaunch raspicat_slam map_save.launch map_file:=map-path + ``` + + === "Offline SLAM" + #### PC + ```sh + # rosbag playおよびslam_toolboxの実行 + $ roslaunch raspicat_slam raspicat_slam_toolbox.launch rosbag:=true rosbag_rate:=1 rosbag_topics:="/odom /scan /tf /tf_static" rosbag_filename:=rosbag-path + + # 地図の保存 + $ roslaunch raspicat_slam map_save.launch map_file:=map-path + ``` + + ## LiDARでナビゲーション {: #lidar-navigation} + + SLAMによって作成した地図を使用し、Navigationを行います。 + [raspicat_navigation](https://github.com/rt-net/raspicat_slam_navigation/tree/main/raspicat_navigation) + パッケージで実行が可能なNavigationは、[move_base](http://wiki.ros.org/move_base)、[neonavigation](https://github.com/at-wat/neonavigation)の2種類です。 + + !!! Warning + **Raspberry Pi**と**PC**間で通信を行い、**PC**上で**Navigation**を実行する場合は、時刻の同期が必要です。 + これは、**tf**関連のエラーを防ぐためです。 + + === "move_base" + #### Raspberry Pi + ```sh + $ roscore + + # センサやモータ用のノードの立ち上げ + $ roslaunch raspicat_bringup raspicat_bringup.launch lidar_ether:=false lidar_usb:=true joy:=false + ``` + #### PC + ```sh + + # move_baseの実行 + $ roslaunch raspicat_navigation raspicat_navigation.launch navigation:="move_base" mcl_map_file:=map-path navigation_map_file:=map-path + ``` + + === "neonavigation" + #### Raspberry Pi + ```sh + $ roscore + + # センサやモータ用のノードの立ち上げ + $ roslaunch raspicat_bringup raspicat_bringup.launch lidar_ether:=false lidar_usb:=true joy:=false + ``` + #### PC + ```sh + # neonavigationの実行 + $ roslaunch raspicat_navigation raspicat_navigation.launch navigation:="neonav" mcl_map_file:=map-path navigation_map_file:=map-path + ``` + +=== "ROS 2" + このページでは + 実機を使用した、ジョイスティックコントローラで操縦する方法を説明します。 + ## 使用機材 {: #requirements} + + * セットアップ済みRaspberry Pi Cat本体 + * [製品マニュアル](https://rt-net.jp/products/raspberry-pi-cat/#downloads)を読んで組み立て済みの状態を前提としています + * Raspberry PiにOS(**Ubuntu Server 22.04**)がインストール済みであること + * Raspberry Pi OSでのROS 2の動作は確認していません。 + * **デバイスドライバ**がインストール済みであること + * [デバイスドライバのインストール手順](../driver/install.md)を参照してください + * ROS 2がインストール済みであること + * [ROS 2のインストール手順](./install.md)を参照してください + * ROS 2パッケージがインストール済みであること + * [ROS 2パッケージのインストール手順](./package-install.md)を参照してください + * USB Type-Bケーブル(Raspberry Pi Catに同梱されています) + * ノートパソコン等のPC + * OS(**Ubuntu Desktop 22.04**)がインストール済みであること + + ## 事前準備 {: #preparation} + + ### ROS 2パッケージの読み込み {: #preparation-source-workspace} + + サンプルを実行する場合は下記コマンドを実行し、 + ROS 2とパッケージを読み込んでください。 -!!! Warning - **Raspberry Pi**と**PC**間で通信を行い、**PC**上で**Navigation**を実行する場合は、時刻の同期が必要です。 - これは、**tf**関連のエラーを防ぐためです。 - -=== "move_base" - #### Raspberry Pi ```sh - $ roscore - - # センサやモータ用のノードの立ち上げ - $ roslaunch raspicat_bringup raspicat_bringup.launch lidar_ether:=false lidar_usb:=true joy:=false - ``` - #### PC - ```sh - - # move_baseの実行 - $ roslaunch raspicat_navigation raspicat_navigation.launch navigation:="move_base" mcl_map_file:=map-path navigation_map_file:=map-path + $ source /opt/ros/humble/setup.bash + $ source ~/catkin_ws/install/setup.bash ``` -=== "neonavigation" + ## ジョイスティックコントローラで操縦する {: #teleop-joy} + #### Raspberry Pi ```sh - $ roscore - # センサやモータ用のノードの立ち上げ - $ roslaunch raspicat_bringup raspicat_bringup.launch lidar_ether:=false lidar_usb:=true joy:=false + $ ros2 launch raspicat_bringup raspicat.launch.py ``` #### PC ```sh - # neonavigationの実行 - $ roslaunch raspicat_navigation raspicat_navigation.launch navigation:="neonav" mcl_map_file:=map-path navigation_map_file:=map-path - ``` + # ジョイスティックコントローラ用のノードの立ち上げ + $ ros2 launch raspicat_bringup joy.launch.py + ``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 2087d16..465b124 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -108,10 +108,10 @@ nav: - 2. デバイスドライバ: - 1. インストール: raspicat/driver/install.md - 2. サンプルを動かす: raspicat/driver/samples.md - - 3. ROS: - - 1. ROSのインストール: raspicat/ros/install.md - - 2. ROSパッケージのインストール: raspicat/ros/package-install.md - - 3. ROSサンプルの実行: raspicat/ros/samples.md + - 3. ROS / ROS 2: + - 1. ROS / ROS 2のインストール: raspicat/ros/install.md + - 2. ROS / ROS 2パッケージのインストール: raspicat/ros/package-install.md + - 3. ROS / ROS 2サンプルの実行: raspicat/ros/samples.md - 4. シミュレータの実行: - 1. シミュレータのインストール: raspicat/simulator/install.md - 2. サンプルを動かす: raspicat/simulator/samples.md