/mech-3apro-webcface-kobuki

WebCFaceでKobuki(TurtleBot2)を動かすサンプル的ななにか

Primary LanguagePython

webcface-kobuki sample

環境構築

  • windowsで行う (たぶんubuntuでもいける)
  • wsl1のubuntu20をインストール (kobukiがusbにアクセスするため)
  • ubuntu20の場合はgcc-10必須
sudo apt install git cmake build-essential gcc-10 g++-10 python3.8-venv
  • msys2をインストール、msys2内で以下
pacman -Syu
pacman -S git pactoys
pacboy -S gcc:p cmake:p ninja:p
  • visual studioをインストール (学科pcには2019が入っている)
  • python3をインストール(wslではなくwindows側)
    • windowsの場合、python3.8必須
      • dynamixel_driverのブランチ変えたので3.8じゃなくてもいいかもしれないが試してない
    • python3.10以降がよい (3.8だとcolconでエラーが大量に出る)
    • msys2にpythonが入っている場合は消す(pacman -R python,pacboy -R python:p)
  • matlabをインストール
  • poetry (必須ではない)
poetry config virtualenvs.in-project true

webcface

kobuki

  • 参考リンク
  • webcfaceをsrcに入れてcolconでいっしょにビルドする。
    • git submodule update --init --recursiveが必要。

ubuntu20

cd kobuki
source venv.bash
export CC=gcc-10
export CXX=g++-10
  • python3.9以降ではエラーになるがその場合は pip install setuptools==58.2.0 で通る (stackoverflow)
vcs import src < kobuki_standalone.repos
colcon build --merge-install --packages-up-to kobuki_webcface --cmake-args -DBUILD_TESTING=OFF -DWEBCFACE_USE_OPENCV=off --no-warn-unused-cli -Wno-dev

windows (mingw)

ビルドできなかった
  • kobukiはmingwを想定して作られてないのでエラー解決のためフラグをいろいろ追加
cd kobuki
python3.10 -m venv .venv
export PYTHONPATH="$(pwd)/.venv/Lib/site-packages:$(pwd)/install/Lib/site-packages"
cmd //k .\\.venv\\Scripts\\activate.bat
pip install wheel
pip install setuptools==58.2.0 vcstool==0.2.14 colcon-common-extensions==0.2.1
vcs import src < kobuki_standalone.repos
colcon build --merge-install --packages-up-to kobuki_webcface --cmake-args -DBUILD_TESTING=OFF -DWEBCFACE_USE_OPENCV=OFF -DWEBCFACE_FIND_LIBS=OFF "-DCMAKE_CXX_FLAGS=-Wno-unused-parameter -Wno-narrowing" -DECL_PLATFORM_HAS_POSIX_THREADS=FALSE -DECL_PLATFORM_HAS_WIN32_THREADS=TRUE -GNinja --no-warn-unused-cli -Wno-dev
  • まだちょっとエラー出る

windows (msvc)

ビルドできなかった
  • msvcでは
    • git for windowsが必要
    • developer command promptでやる
    • venv.bashの代わりに手動で以下のようにやる
python3 -m venv .venv
.venv\Scripts\activate
pip install wheel
pip install setuptools==45.2.0 vcstool==0.2.14 colcon-common-extensions==0.2.1
* kobuki\src\ecl_core\ecl_ipc\src\ に空のdummy.cppを作成し、kobuki\src\ecl_core\ecl_ipc\src\CMakeLists.txt を修正 (必要ないかも)
if(ECL_PLATFORM_HAS_POSIX_THREADS)
  add_subdirectory(lib)
else()
  add_library(${PROJECT_NAME} dummy.cpp)
  set_target_properties(${PROJECT_NAME}
    PROPERTIES
      SOVERSION ${${PROJECT_NAME}_VERSION}
      VERSION ${${PROJECT_NAME}_VERSION}
  )
  install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}
    RUNTIME DESTINATION bin
    ARCHIVE DESTINATION lib
    LIBRARY DESTINATION lib
  )
endif()
  • kobuki\src\ecl_core\ecl_geometry\include\ecl\geometry\angle.hpp の41,55,115,138行目のecl_geometry_PUBLICを削除
  • kobuki\src\kobuki_core\include\kobuki_core\macros.hpp の31行目kobuki_EXPORTSkobuki_core_EXPORTS
  • kobuki\src\kobuki_core\CMakeLists.txt にadd_compile_options(/permissive-)追加
  • kobuki\src\kobuki_core\include\kobuki_core\logging.hpp に#undef ERROR追加
  • kobuki\src\kobuki_core\src\driver\kobuki.cpp の57行目0.0/0.0std::numeric_limits<double>::quiet_NaN()
  • (これでもまだ通らない)
  • msvcでは --cmake-args -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ONを追加

kobuki_test_app

kobukiの動作確認のために作ったが今は不要
source kobuki/install/setup.bash
cd kobuki_test_app
cmake -Bbuild
make -Cbuild
./build/main

kobuki_webcface

  • 別でcmakeしていたが、kobuki_coreといっしょにcolconでビルドすることにした
colconをつかわない場合 (今は不要)
source kobuki/install/setup.bash
cd kobuki_webcface
CC=gcc-10 CXX=g++-10 cmake -Bbuild
make -Cbuild
./build/main

dynamixel

  • dynamixel_driverは kindsenior/dynamixel_motor のコピー (そのままインストールするにはROSが必要だったのでフォルダだけコピー)
cd dynamixel
# poetry env use python3.8
poetry install
poetry run jupyter lab
  • dynamixel/dynamixel_webcface.ipynbを実行

pybullet

ik

  • ロボットモデルを取り出すためにROSが要る。
  • ROSが使えるubuntuで
rosrun xacro xacro robot.urdf.xacro > robot.urdf
  • をしたものが ik/robot.urdf
  • ik/webcface_matlab.mlx をごにょごにょしてwebcfaceをビルド、インポート
    • ik/build_webcface.m を実行するとビルドされる
  • ik/arm_test.mlx は直接角度を指定してwebcfaceに送る
  • ik/webcface_sample.mlx は逆**学計算してwebcfaceに送る

OpenNI

やめた
  • Visual Studio Installerで「最新の v142 ビルドツール用 C++ MFC (x86 および x64)」を追加する。
  • OpenNI/Include/XnPlatform.h の56-58行をコメントアウト
  • OpenNI/Platform/Win32/Build/OpenNI.sln を開き、ソリューションのビルド
  • OpenNI/Platform/Win32/Driver/Binにあるドライバーをインストールする
  • READMEの手順どおりにインストールしようとするとうまくいかない
    • OpenNI/Platform/Win32/CreateRedist/RedistMaker.bat の38行目を python Redist_OpenNi.py %1 %2 %3 %4 にする
pip install pywin32
cd OpenNI\Platform\Win32\CreateRedist
RedistMaker.bat y 64 y
  • めっちゃエラーが出る

Kinect

  • Kinect for Windows SDK v1.8
    • 指示に従ってDeveloper Toolkit もインストール
    • Toolkitを起動しサンプルコードをインストール
  • ↑をして改変したものがColorBasics-D2D/ColorBasics-D2D.sln これを開いてビルド
    • ColorBasics-D2D/webcface に画像送信機能を追加したものがあり、ColorBasics-D2D.slnからそれを参照してビルドしている
    • slnを開く前にそのwebcfaceディレクトリを開いてCMakeする必要がある
    • webcfaceはインストールされているものを使う

controller

  • cmakeしてビルド

EusLisp

(load "load-webcface.l")
(setq *wcli* (wcf-init-default "sample"))
(wcf-value-set *wcli* "test" 12345) ;; value("test").set(12345)
(wcf-sync *wcli*)