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

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 へコピーしてください。