SLAM

SLAM(自己位置推定とマッピング)

ミニぷぱのROSバージョンは、Champ オープンソースプロジェクトをベースにしており、SLAMとNavigationの機能にいくつかの変更を加えました。

1. 顔写真のカスタマイズ

PCとミニぷぱが同じWiFiに接続されていることを確認してから、ROSネットワークでミニぷぱを探索することをお勧めします。

1.1 PC セットアップ

PCセットアップは、ミニぷぱをリモートコントロールするためのPC(デスクトップまたはラップトップPC)に対応しています。これらのコマンドはミニぷぱに適用しないでください。

  • 1.1.1 Cartographer ROS パッケージのインストール

SLAMとNavigationの機能は、cartographer_ros をベースにしています。

cd ~
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
mkdir carto_ws
cd carto_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
src/cartographer/scripts/install_abseil.sh
sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash
  • 1.1.2 ミニぷぱROSパッケージのインストール

cd <your_ws>/src
git clone --recursive https://github.com/mangdangroboticsclub/minipupper_ros
cd ..
rosdep install --from-paths src --ignore-src -r -y
catkin_make
source <your_ws>/devel/setup.bash
  • 1.1.3 ネットワークの設定

PCとミニぷぱを同じWiFiに接続し、以下のコマンドで割り当てられたIPアドレスを確認してください。

ifconfig

ファイルを開き、以下のコマンドでROSのIP設定を更新してください。

sudo gedit ~/.bashrc

次に、マスターとホスト名の設定を追加してください。

export ROS_MASTER_URI=http://192.168.1.106:11311
export ROS_HOSTNAME=192.168.1.106

1.2 ミニぷぱセットアップ

ミニぷぱの pre-built ROS image (ファイル名: .MiniPupper_ROS&OpenCV_Ubuntu20.04.03.img )をダウンロードすることができます。

  • 1.2.1 ハードウェアの依存関係

まず、サーボ、バッテリーモニター、表示画面などの依存関係をインストールする必要があります。詳しくは minipupper_ros_bsp を参照してください。

  • 1.2.2 コントローラ ジョイスティック インターフェースの設置

ROSのジョイスティックインターフェースは ps4-ros プロジェクトをベースにしています。

pip install ds4drv
sudo apt install ros-noetic-joy
sudo wget https://raw.githubusercontent.com/chrippa/ds4drv/master/udev/50-ds4drv.rules -O /etc/udev/rules.d/50-ds4drv.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo reboot

ホームボタン+シェアボタンで3秒間ペアリングモードにします。コントローラが接続されるまで、コマンドラインから$ds4drvを実行してください。

ds4drv

すると、「Created devices /dev/input/jsX」のような出力が表示されます。次に、デバイスにパーミッションを与えます。

sudo chmod a+rw /dev/input/jsX
  • 1.2.3 ミニぷぱのROSパッケージのインストール

次に、ミニぷぱ用のROSパッケージをインストールします。これはミニぷぱとPCの両方にインストールする必要があります

cd <your_ws>/src
git clone --recursive https://github.com/mangdangroboticsclub/minipupper_ros
cd minipupper_ros/champ
# it's not recommend to compile gazebo on raspberry pi
sudo rm -rf champ_gazebo
cd ../../..
rosdep install --from-paths src --ignore-src -r -y
catkin_make
source <your_ws>/devel/setup.bash
  • 1.2.4 ネットワークのセットアップ

PCとMiniPupperを同じWiFiに接続して、下記のコマンドで割り当てられたIPアドレスを見つけます。

ifconfig

bashrcファイルを開いて,以下のコマンドでROSのIP設定を更新してください。

sudo gedit ~/.bashrc

マスターとホスト名の構成をbashrcファイルに追加します。

export ROS_MASTER_URI=http://192.168.1.106:11311
export ROS_HOSTNAME=192.168.1.107

2.クイックスタート

2.1 キャリブレーション

このスクリプトにより、1ターンですべてのサーボの角度をキャリブレーションすることができます。腰とすねは水平に、ハムは垂直になるように角度を入力してください。

roslaunch servo_interface calibrate.launch

キャリブレーション後、ミニぷぱがこのような状態になることを確認してください。

../_images/109.jpg

2.2 歩行

  • 2.2.1 ベースドライバーの実行

ミニぷぱでこのコマンドを実行する必要があります

roslaunch mini_pupper bringup.launch

ミニぷぱが思ったように立たなかった場合は、servo_interface/config/calibration にある calibration.yaml を編集して角度を修正することができます。

  • 2.2.2 ミニぷぱのコントロール

ミニぷぱの制御には2つの方法があります。

1.キーボードの使用

このコマンドはPCで実行することをお勧めします

roslaunch champ_teleop teleop.launch

2.コントローラーの使用

ミニぷぱでこのコマンドを実行することをお勧めします

ジョイスティックで何もしていなくても、cmd_velにすべての値を0として送信してしまうため、move_base使用中にはこのコマンドを実行しないでください

roslaunch ps4_interface ps4_interface.launch

コントローラーの使用方法については、『クイックスタートガイド』を参照してください。

  • 2.2.2 LCDスクリーン

python3 ~/minipupper_ros_bsp/mangdang/LCD/demo.py

We also made a simple ROS interface of the LCD screen, which subscribes sensor_msgs/Image.

rosrun display_interface display_interface.py

3. SLAM

3.1 ベースドライバーの実行

ミニぷぱでこのコマンドを実行する必要があります

roslaunch mini_pupper bringup.launch

3.2 カートグラファーの実行

このコマンドはPCで実行する必要があります

roslaunch mini_pupper slam.launch

そして、キーボードやジョイスティックでミニぷぱを操作して歩き回り、マップを作成することができます。マップを保存するには、以下のコマンドを実行してください。

rosservice call /finish_trajectory 0
rosservice call /write_state "{filename: '${HOME}/map.pbstream'}"
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/map -pbstream_filename=${HOME}/map.pbstream -resolution=0.05

map.yamlを忘れずに編集してください。最初の行は下記の通りです。

image: map.pgm

次に、先ほど保存した map.pbstream、map.pgm、map.yaml を <your_ws>/src/minipupper_ros/mini_pupper/maps へコピーしてください。