Mini Pupperを動かすまで
Mini Pupper公式資料へのリンク
マニュアル
ttps://mangdang-minipupperdocs.readthedocs-hosted.com/en/latest/index.html
3Dデータ [1]
BOM [2]
3Dパーツリスト [1:1]
GitHub
プロジェクトページ
Kickstarter
Makuake
-
2021年11月26日の投稿 https://www.kickstarter.com/projects/336477435/mini-pupper-open-sourceros-robot-dog-kit/posts/3370301 ↩︎ ↩︎
-
GitHubリポジトリのMiniPupperブランチ https://github.com/mangdangroboticsclub/QuadrupedRobot/tree/MiniPupper ↩︎
組み立て
上記資料が2021年12月27日現在の最新(MiniPupperDocs[1]よりアクセス)
画像足りないところはフィードバックして追加してもらった
組み立て資料はアウトラインしかないので3Dデータ見ながらの組み立てスキルも必要
ベータユーザという立ち位置なので受け取ったのは多くのbackerに届くV2より少し古いV1
V1とV2はスピーカーの有無などメイン基板が違うのみでほかは変わらないとのこと
組み立てマニュアルで紹介されている動画
OSのインストールとサーボのオフセット調整方法
OS
OSはV1基板の場合は「20211201_v1.6.1_MiniPupper_PS4_Ubuntu_20.04.2_Baseline.img.zip」
V2基板の場合は「20211220_v2.1.3_MiniPupper_V2_PS4_Ubuntu_20.04.2_Baseline.img.zip」
サーボのオフセット調整方法
2021年12月27日現在マニュアルがないためどの角度に合わせるのが正解なのかは不明
(2021年12月22日に確認したところ間もなく資料は公開されるもよう)
とりあえずなんとなく上記の画像の角度に合わせている
上記の動画で紹介されているコマンドラインでキャリブレーションするツールは、以下のコミットでGUI版キャリブレーションツールに置き換わっている
PWM指定用のsysfsファイルへの書き込み権限がないので修正する
sudo
をつけて各種スクリプトを実行すればエラーは出ないが、sysfsファイルの権限変更だけで問題はだいたい解決
sudo groupadd gpio && sudo gpasswd -a $(whoami) gpio
sudo tee /etc/udev/rules.d/99-mini-pupper.rules << EOF > /dev/null
SUBSYSTEM=="pwm*", PROGRAM="/bin/sh -c '\
chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\
chown -R root:gpio /sys/class/pwm/pwmchip0/pwm*/duty_cycle && chmod -R 770 /sys/class/pwm/pwmchip0/pwm*/duty_cycle'"
EOF
sudo udevadm control --reload-rules && sudo udevadm trigger
VNC経由でのアクセスを有効化
HDMIケーブルを刺さずに起動したときはいまのところなぜかVNC経由でのアクセスが有効にならない(なんで?)
/boot/firmware/config.txt
内にinclude usercfg.txt
が記載されていることを確認しておく。
/boot/firmware/usercfg.txt
に以下の内容を記載して、起動時にHDMIモニタを繋がなくてもあとからでもHDMIモニタを認識できるようにしておく。
以下は1080pに設定する例。
hdmi_force_hotplug=1
hdmi_group=0
hdmi_mode=16
パラメータについては以下のページ参照
丁寧に解説いただきありがとうございます。
私の場合「20211220_v2.1.3_MiniPupper_V2_PS4_Ubuntu_20.04.2_Baseline.img」を使った際にwifiが認識しない状態となりました。後述いただいている「でべ(@devemin)さんの資料」に記載の以下の手順によりwifiが使えるようになりましたので、一応共有させていただきます。
----以下「でべ(@devemin)さんの資料」より引用----
●WiFi オンにするには、
/boot/firmware/syscfg.txt
内の
dtoverlay=disable-wifi
をコメントアウト
#dtoverlay=disable-wifi
して reboot
コメントありがとうございます!
手元のMiniPupperのデータ確認したところコメントアウトしてありましたのでZennへの書き写し忘れだと思います。
ROSのインストールとMini Pupper用ROSパッケージのインストール(Raspberry Pi)
基本的にはMiniPupperDocsの「SLAM環境セットアップ.docx」に従う(アニメーションGIFが埋め込んであって400MB近くあるファイルなのでダウンロードして閲覧するしかない)
ROSパッケージ
キャリブレーション方法動画
でべ(@devemin)さんの資料
ROSのインストール
git clone https://github.com/Tiryoh/ros_setup_scripts_ubuntu.git
./ros_setup_scripts_ubuntu/ros-noetic-ros-base-main.sh
cat << "EOF" >> ~/.bashrc
source /opt/ros/noetic/setup.bash
source `catkin locate --shell-verbs`
export MYWLAN0IP=`ip a show $(ip a | grep -o -E ": wl.*:" | sed -e "s/://g ") | grep -o -E "([0-9]+\.){3}[0-9]+" | head -n1`
export MYETH0IP=`ip a show $(ip a | grep -o -E ": e.*:" | sed -e "s/://g" ) | grep -o -E "([0-9]+\.){3}[0-9]+" | head -n1`
export ROS_IP=$(echo $MYETH0IP $MYWLAN0IP 127.0.0.1 | cut -d' ' -f1)
export ROS_MASTER_URI=http://$ROS_IP:11311
EOF
ROSパッケージのインストール
touch src/minipupper_ros/champ/champ_gazebo/CATKIN_IGNORE
cd mnpp_ws
rosdep install -r -y -i --from-paths src/minipupper_ros/yocs_velocity_smoother
rosdep install -r -y -i --from-paths src/minipupper_ros/champ/champ_base
rosdep install -r -y -i --skip-keys joint_state_publisher_gui --from-paths src/minipupper_ros/champ/champ_bringup
rosdep install -r -y -i --from-paths src/minipupper_ros/champ_teleop
rosdep install -r -y -i --from-paths src/minipupper_ros/ldlidar
rosdep install -r -y -i --skip-keys gazebo --skip-keys rviz --from-paths src/minipupper_ros/mini_pupper_description
chmod +x src/minipupper_ros/servo_interface/scripts/*.py
chmod +x src/minipupper_ros/ps4_interface/scripts/*
ds4drvはjoystick.serviceと重複するのでコメントアウト
$ cat src/minipupper_ros/ps4_interface/launch/ps4_interface.launch
<launch>
<!-- ds4drv -->
<!-- <node name="ds4drv_script_call" pkg="ps4_interface" type="run_ds4drv.sh" output="screen" /> -->
<!-- JOY ROS NODE -->
<node respawn="true" pkg="joy" type="joy_node" name="ps4_joy" >
<param name="dev" type="string" value="/dev/input/js0" />
<param name="deadzone" value="0.12" />
</node>
<!-- PS4 ROS NODE -->
<node pkg="ps4_interface" type="ps4_interface.py" name="ps4_interface" output="screen"/>
<node pkg="ps4_interface" type="pose_controller.py" name="pose_controller" output="screen"/>
</launch>
ROSでの制御(Raspberry Pi)
robot.service
の無効化
DualShock4の信号を受け取ってサーボを動かし始めてROSのノードと干渉するので停止する
sudo systemctl stop robot
※ps4_interface/scripts/run_ds4drv.sh
を呼び出さない場合はjoystick.service
は止めなくて問題ない
ROSパッケージ用キャリブレーション
roslaunch servo_interface calibration.launch
を実行
{'rf1_initial_angle': '87', 'rf2_initial_angle': '125', 'rf3_initial_angle': '123', 'lf1_initial_angle': '96', 'lf2_initial_angle': '60', 'lf3_initial_angle': '65', 'rb1_initial_angle': '94', 'rb2_initial_angle': '130', 'rb3_initial_angle': '130', 'lb1_initial_angle': '85', 'lb2_initial_angle': '53', 'lb3_initial_angle': '55'}
calibration done!
となった。
lb1_initial_angle: '85'
lb2_initial_angle: '53'
lb3_initial_angle: '55'
lf1_initial_angle: '96'
lf2_initial_angle: '60'
lf3_initial_angle: '65'
rb1_initial_angle: '94'
rb2_initial_angle: '130'
rb3_initial_angle: '130'
rf1_initial_angle: '87'
rf2_initial_angle: '125'
rf3_initial_angle: '123'
若干傾いていたので変更
lb1_initial_angle: '85'
lb2_initial_angle: '53'
lb3_initial_angle: '58'
lf1_initial_angle: '102'
lf2_initial_angle: '60'
lf3_initial_angle: '70'
rb1_initial_angle: '94'
rb2_initial_angle: '130'
rb3_initial_angle: '130'
rf1_initial_angle: '87'
rf2_initial_angle: '125'
rf3_initial_angle: '123'
ベースノードを起動+Keyboardから操作
roslaunch mini_pupper bringup.launch
roslaunch champ_teleop teleop.launch
i
, j
, l
, ,
を 長押し して移動
ベースノードを起動+DualShock4から操作
roslaunch mini_pupper bringup.launch
roslaunch ps4_interface ps4_interface.launch
PlayStationボタン+SHAREボタンでペアリング
ROSでの制御(Raspberry Pi+PC)
地図作成用ROSパッケージの準備(PC)
git clone https://github.com/Tiryoh/docker-mini-pupper-ros.git
cd docker-mini-pupper-ros
Raspberry Piにインストールしたのと同じmnpp_ws
を配置する
$ tree -L 2 .
.
├── build.sh
├── Dockerfile
├── launch.sh
├── mnpp_ws
│ └── src
├── README.md
└── save_map.sh
build.sh
を実行してDockerイメージをビルド
./build.sh
launch.sh
を実行してDockerコンテナを起動
rockerが必要なのでインストールしておく
./launch.sh
launch.sh
を実行したあとのDockerコンテナ内で以下を実行
source /opt/ros/noetic/setup.bash
source /ros_ws/install_isolated/setup.bash
cd ~/catkin_ws
catkin init
catkin build
ROS_IP
の設定
Rasperry PiでROS_MASTER_URI
が設定されていることを確認しておく
echo $ROS_MASTER_URI
同じ値をPCで起動したDockerコンテナ内の~/.bashrc
に記載する
export ROS_MASTER_URI=http://192.168.10.128:11311 #ここは環境によって異なるがhttp://000.000.000.000:11311のフォーマットになる
地図作成に必要なROSノードの起動
Raspberry Piで以下を実行(robot.service
は停止しておく)
# 1つ目のTerminalで
roslaunch mini_pupper bringup.launch
# 2つ目のTerminalで
roslaunch ps4_interface ps4_interface.launch
PCで起動したDockerコンテナ内で以下を実行
roslaunch mini_pupper slam.launch
あとはDualShock4を動かすといい感じに地図ができる
動いている様子
OAK-D-Liteを使う
このページを参考に進める
Raspberry Pi
depthai-coreのインストール
# depthai-core dependencies
sudo apt install libusb-1.0-0-dev
# download and build depthai-core
cd ~/
git clone --recursive https://github.com/luxonis/depthai-core.git
cd depthai-core
cmake -S. -Bbuild -D'BUILD_SHARED_LIBS=ON'
cmake --build build --parallel 4
# update udev rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666"' | sudo tee /etc/udev/rules.d/80-movidius.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
depthai-rosのインストール
depthai_bridge
のビルドにリソースがかなり必要なようで-j1 -p1
オプションがないとビルドエラーが出てしまった。
cd ~/catkin_ws
wget https://raw.githubusercontent.com/luxonis/depthai-ros/main/underlay.repos
vcs import src < underlay.repos
source /opt/ros/noetic/setup.bash
rosdep install --from-paths src/luxonis --ignore-src -r -y
catkin build -j1 -p1 --cmake-args -D'depthai_DIR=/home/ubuntu/depthai-core/build'
source devel/setup.bash
ビルドエラー詳細
Errors << depthai_bridge:make /home/ubuntu/catkin_ws/logs/depthai_bridge/build.make.001.log
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[2]: *** [CMakeFiles/depthai_bridge.dir/build.make:89: CMakeFiles/depthai_bridge.dir/src/ImgDetectionConverter.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:894: CMakeFiles/depthai_bridge.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
depthai-rosの起動
roslaunch depthai_examples stereo_inertial_node.launch
動かした様子