Giter Site home page Giter Site logo

pf-robotics / kachaka-api Goto Github PK

View Code? Open in Web Editor NEW
79.0 10.0 21.0 5.79 MB

スマートファニチャープラットフォーム「カチャカ」API

Home Page: https://kachaka.zendesk.com/hc/ja/articles/7660222791183-%E3%82%AB%E3%83%81%E3%83%A3%E3%82%ABAPI

License: Apache License 2.0

Shell 2.94% Jupyter Notebook 9.02% Python 32.35% CMake 0.91% C++ 13.51% Dockerfile 0.05% JavaScript 0.15% HTML 0.04% TypeScript 40.86% CSS 0.16%
grpc python robot ros2 kachaka

kachaka-api's Introduction

目次

用語

  • Playground
    • カチャカ本体内で動くコンテナ環境。ユーザが自由にログインして自作のソフトウェアを実行できる。
  • ros2_bridge
    • ros2のtopic, service, actionをカチャカとやり取りするサーバー

IPアドレスとポート番号

  • IPアドレス
    • カチャカのIPアドレス
      • スマートフォンアプリの「設定」→「アプリ情報」→「IPアドレス」に表示されます
    • Playground内部からgRPCを利用する場合のIPアドレス
      • 100.94.1.1
  • ポート番号
ポート番号 用途
26400 gRPC
26500 ssh
26501 JupyterLab
26502~26509 割り当てなし(自由利用可能)

Note IPアドレスが変わってしまい不便な場合は、ルータ等でカチャカのMACアドレスに対して固定IPアドレスを付与すると便利です。

カチャカAPIとは

  • カチャカはgRPCに準拠したAPIを備えており、ローカルネットワーク内、およびカチャカ本体のPlayground内から利用することが出来ます。
  • サンプルとして提供されるカチャカAPIライブラリを使用する事により、gRPCを意識せずに簡単に使うことも可能です。
  • また、ros2_bridgeを使用することにより、ROS 2からgRPCで提供されるサービスの一部を実行することが出来ます。

kachaka-api

対応環境・言語

  • カチャカ本体内で動作するJupyterLabを利用することで、OSを問わずWebブラウザのみ用意すれば開発を行うことができます。
  • カチャカ外部のPCからAPIを利用することも可能で、本ドキュメントの内容は以下の環境にて確認していますが、多くはmacOSやWindowsなど他の環境でも可能です。
    • 動作確認済みのOS
      • Ubuntu 22.04 LTS
    • 開発言語
      • Python3.10
    • ROS 2(使用する場合)
      • ROS 2 Humble

カチャカAPI仕様

  • APIの詳細
  • エラーコード
  • カチャカを移動させるコマンドは、アプリの安全設定などに従い、障害物を検出して止まる事があります。
  • ソフトウェアアップデート中はAPIを実行しないでください。

利用開始の手順

  • スマートフォンアプリを以下の手順に従って操作し、カチャカAPIを有効にしてください。
    • 設定タブ → ロボットを選択 → 「カチャカAPI 」→ 「カチャカAPIを有効化する」をONにします。

enable-api

  • 以下のダイアログが表示されるので、「利用規約」を確認の上、「カチャカAPI利用規約に同意する」をチェックして「設定する」を押して下さい。

api-enable-dialog

サンプルコードをJupyterLabで実行する

  • JupyterLabを使用してサンプルコードを実行する方法を説明します。

準備

  • IPアドレスを確認します。
    • スマートフォンアプリの「設定」→「アプリ情報」→「IPアドレス」にカチャカのIPアドレスが記載されています。
  • PCのブラウザを起動します。
  • ブラウザで以下のURLにアクセスします。
    • http://<カチャカのIPアドレス>:26501/
      • <カチャカのIPアドレス>には、アプリで確認したIPアドレスが入ります。
  • ログイン画面が表示されるので、以下のパスワードを入力してください。
    • パスワード:kachaka

jupyter-login

パスワードの変更方法

  • パスワードを変更する場合は、まずLauncherから「Terminal」を選択します。

jupyter-terminal

  • Terminalで、以下のコマンドを入力します。
jupyter lab password
Enter password: <新しいパスワード>
Verify password: <新しいパスワード>
  • カチャカ本体を再起動すると、新しいパスワードが反映されます。

サンプルコードのダウンロード

  • 左側のファイル一覧から README.ipynb をダブルクリックしてください。
  • 上部メニューの「▶▶」をクリックしてください。

jupyter-readme

  • 以下のダイアログが表示された場合は「Restart」ボタンを押してください。

jupyter-restart-dialog

  • サンプルコードのダウンロードが完了すると、以下のようなメッセージが表示され、左側のファイル一覧に kachaka-apiフォルダが作成されます。

jupyter-clone-sample

依存ライブラリのインストール

ダウンロード後初回の一回だけ、下記の手順を実行する必要があります。

  • 左側のファイル一覧からkachaka-api → python → demosフォルダを選択します。
  • install_libraries.ipynbをダブルクリックすると、右側にソースコードが表示されます。
  • 上部メニューの「▶▶」ボタンを押して実行します。

サンプルコードの実行方法

  • 左側のファイル一覧からkachaka-api → python → demosフォルダを選択します。
  • speak.ipynbをダブルクリックすると、右側にソースコードが表示されます。
  • 上部メニューの「▶▶」ボタンを押して実行します。

jupyter-sample-speal

実行結果

「カチャカです、よろしくね」とカチャカが発話します。

カチャカAPIライブラリ

  • カチャカAPIライブラリは、gRPCを意識せずにPythonで開発を行うことができるライブラリです。
  • 同期、非同期それぞれのライブラリがあります。

使用方法

docs/kachaka_api_client.ipynb で各APIを動作させながら試すことができます。

カチャカAPIライブラリのサンプルコード

  • sample_llm_speak.py ... ChatGPT を使って、コマンド終了時にお喋りをするサンプル
  • その他、python/demos/ 以下に、JupyterLab で利用できる Notebook 形式が多数あります

非同期ライブラリ

gRPCの呼び出しを非同期にしたライブラリも提供しています。必要に応じてご利用ください。
同期ライブラリの機能に加えてcallback登録をサポートしています。
callback機能についてはsample_llm_speak.pyをご参照ください。
使用方法を非同期版に書き換えたものはこちらです。docs/kachaka_api_client_async.ipynb

gRPC

  • ライブラリを用いなくても、gRPCのインターフェースで直接カチャカAPIを利用することも可能です。
  • 詳細はgRPCをご参照ください。

ROS 2

ROS 2 Humbleのセットアップ

Dockerのセットアップ

サンプルコードのダウンロード

cd ~
git clone https://github.com/pf-robotics/kachaka-api.git

kachaka_interfaces, kachaka_descriptionのビルド

  • 以下の手順でビルドします。
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
ln -s ~/kachaka-api/ros2/kachaka_interfaces/ kachaka_interfaces
ln -s ~/kachaka-api/ros2/kachaka_description/ kachaka_description

cd ~/ros2_ws
colcon build

動作確認

  • ros2_bridgeの起動
    • 別のターミナルで以下を実行してください。
    • 初回実行時に、Dockerイメージがダウンロードされます。
      • イメージの提供は予告なく停止される場合があります。
cd ~/kachaka-api/tools/ros2_bridge
./start_bridge.sh <カチャカのIPアドレス>
  • ros2コマンドによる動作確認
    • 以下のコマンドを実行すると、topic一覧が表示されます
cd ~/ros2_ws
source install/setup.bash
ros2 topic list
  • 目的地一覧を取得する例
cd ~/ros2_ws
source install/setup.bash
ros2 topic echo /kachaka/layout/locations/list

目的地一覧の例

locations:
- id: L01
  name: ダイニング
  type: 0
  pose:
    x: 1.33572
    y: 2.328592
    theta: 0.0
  • rviz2による可視化
cd ~/ros2_ws
source install/setup.bash
cd src/kachaka_description/config
rviz2 -d kachaka.rviz

サンプルコード

  • サンプルコードは以下の場所にあります
  • サンプルコードの実行方法
    • サンプルコードのREADME.mdの手順を実行してください

Playground

  • カチャカ本体の資源の一部(Playground)を開発者が使用する事が出来ます。
  • 以下にログイン方法や、便利な使い方の説明をします。

Playgroundにsshでログインする

  • jupyterlabのterminalもしくは下記のnotebookいずれかを用いて公開鍵の設定を行います
    • utils/set_authorized_keys.ipynb
    • utils/set_authorized_keys_from_github.ipynb
      • githubに登録している鍵をカチャカでも利用したい場合、こちらのスクリプトが便利です
  • utils/set_authorized_keys.ipynbを使用した設定方法
    • 画面左上のFile Browserを選択します。
    • 画面左のファイル一覧からutils → set_authorized_keys.ipynbをダブルクリックします。
    • 画面**のpublic_keysに公開鍵のテキストを貼り付けます。
    • 上部メニューの「▶▶」ボタンを押します。

set-authorized-keys

  • utils/set_authorized_keys_from_github.ipynbを使用した設定方法
    • 画面左上のFile Browserを選択します。
    • 画面左のファイル一覧からutils → set_authorized_keys_from_github.ipynbをダブルクリックします。
    • 画面**のuserにgithubのユーザ名を入力します。
    • 上部メニューの「▶▶」ボタンを押します

set-authorized-keys-from-github

以下のコマンドを実行してPlaygroundにログインします

ssh -p 26500 -i <登録した公開鍵に対応する秘密鍵> kachaka@<kachakaのIPアドレス>

Playgroundでサンプルプログラムを実行する

  • カチャカにsshでログインします。
  • 以下のコマンドを実行すると、カチャカが時報を1分間隔で発話します。
cd ~
git clone https://github.com/pf-robotics/kachaka-api.git
pip install -r /home/kachaka/kachaka-api/python/demos/requirements.txt
python3 /home/kachaka/kachaka-api/python/demos/time_signal.py 100.94.1.1:26400

自作ソフトの自動起動

  • /home/kachaka/kachaka_startup.sh に自動起動したい処理を記述してください。
  • カチャカ起動時に自動的に実行されます
  • ログが /tmp/kachaka_startup.log に記録されます
    • python3 を自動起動する際は -u オプションを付けると良いです。そうでないと標準出力がバッファリングされてしまい、ログが確認できないことがあります。

サンプルを自動起動する例

  • /home/kachaka/kachaka_startup.sh を以下のように編集します。
#!/bin/bash

jupyter-lab --port=26501 --ip='0.0.0.0' &

# 以下の行を追加します
python3 -u /home/kachaka/kachaka-api/python/demos/time_signal.py 100.94.1.1:26400 &
  • 保存後、カチャカを再起動します。再起動後、暫くすると、1分間隔で現在時刻を発話します。

Playgroundのリソース制限

  • ストレージ総計(/home, tmp) 3GB
  • メモリー 512MB

Web

  • ブラウザで動作するwebアプリからも、カチャカAPIを利用することができます。
  • ただし、webアプリからの通信は現状grpc-webのプロトコルに則る必要があり、これを仲介してくれるプロキシサーバーを立てる必要があります。
    • gRPCの通信に必要なHTTP/2の通信をjavascriptから自由に取り扱うことが可能な環境は限られており、HTTP/1.1で表現するgrpc-webプロトコルが必要です。
  • ここでは、プロキシをenvoyを使って立てる方法を紹介し、webアプリからカチャカAPIを利用するサンプルをご紹介します。

プロキシサーバ

  • プロキシサーバーの起動
$ ./tools/web_proxy/start_proxy_remote.sh <カチャカのIPアドレス>
  • プロキシサーバーは、webアプリからアクセスでき、またカチャカにアクセスできるネットワーク接続を備えた場所であればどこで起動しても構いません。
  • このスクリプトでは、localhost:50000にプロキシサーバを立てる例を示しています。

Webサンプル (React + TypeScript)

  • Reactを利用して、カチャカAPIと連携するwebアプリのサンプルです。
  • プラスボタンを押すとパネルが追加され、パネルの種類を選ぶと対応するAPIを利用した表示がなされるデモです。
  • 起動するには、以下のコマンドを実行してください。
$ cd web/demos/kachaka_api_web_sample
$ npm install
$ npm run dev
  • npmの環境がない方は、適宜インストール作業を行って下さい。
  • 以下にインストール方法の例を示します。
    • aptでインストールされるnpmは古い可能性があります。nで最新のstableをインストールすることを推奨します。
    • サンプルは nodejs v18.17.1、npm 9.6.7 で動作を確認しています。
$ sudo apt install nodejs npm
$ sudo npm install -g n
$ sudo n stable

カチャカAPIとReact hook

  • Cursor の概念で紹介したとおり、カチャカAPIではcursorという概念を用いることで、無駄のない値の更新を行っています。
  • React hookでは、このカーソルの更新をつかってGet系のAPIを呼び出し、レスポンスが返ってくるたびにstateを更新することで、値が変更されるたびに最低限の計算でレンダリングを行うことができます。
  • 具体的な処理については web/demos/kachaka_api_web_sample/src/kachakaApi.ts を参照してください。

License

Copyright 2023 Preferred Robotics, Inc. Licensed under the Apache License, Version 2.0.

kachaka-api's People

Contributors

nozaki-pfr avatar youtalk-pfr avatar watanabe-pfr avatar kmurase-pfr avatar hidai-pfr avatar terakoji-pfr avatar ksyundo-pfr avatar 3110 avatar kimushun1101 avatar dieu-detruit avatar nakaoka-pfr avatar yamaguchi-am avatar h-wata avatar kenjisato-qt avatar yoshikai-qt avatar yukiendo-pfr avatar

Stargazers

ReMIX avatar Makoto Saito avatar Kaito Sugimoto avatar  avatar Yu Inao avatar  avatar Nonomura avatar  avatar TatsuyaAoki avatar Michael avatar iorileslie avatar  avatar  avatar  avatar MizuhoAOKI avatar Fumiya Ohnishi avatar  avatar ym avatar Yoshihisa Saito avatar holpong avatar  avatar Hiromu Taketsugu | 武次 広夢 avatar Takahiro Yamana avatar Masato Kobayashi avatar  avatar Keisei Tsubomoto avatar Akito Nishiyama avatar Katz Kawai avatar Akihiro Komori avatar Gakuto Okamoto avatar myasu avatar  avatar Akito Nishiyama avatar  avatar Akihiro Miki avatar Akira Kawata avatar Fabian Dubois avatar Tatsuya Ishikawa avatar himkt avatar Katsu Uchiyama avatar Daijiro MORI avatar Sandalots avatar UmedaTakefumi avatar Ken Yoshizoe avatar Yuki Takeyama avatar Wassy | Ryoga Washizawa avatar Okawa Yusuke avatar 爱可可-爱生活 avatar Takumi Okamoto avatar Koichiro Kato avatar  avatar Ar-Ray avatar karaage avatar Yuki Furuta avatar Shumpei Wakabayashi avatar Hideaki Tai avatar  avatar  avatar  avatar Eisuke Okazaki avatar Tatsuya Matsushima avatar Daisuke Nishimatsu avatar Yuki Igarashi avatar Tatsuhiro Ikebe avatar Shirokuma (k tanaka) avatar Rikiya Yamamoto avatar uint256_t avatar KazuhitoTakahashi avatar  avatar izm avatar Masaya Kataoka avatar RyuYamamoto avatar Hirokazu Ishida avatar  avatar Yutaka Kondo avatar Kazuki MIyazawa avatar ksasao avatar Kenichi Hidai avatar  avatar

Watchers

Takeshi Watanabe avatar  avatar Tatsuya Matsushima avatar ReMIX avatar  avatar  avatar  avatar  avatar Toshihiro Sotomaru avatar  avatar

kachaka-api's Issues

rqt_robot_steeringでマニュアル走行を試みたところエラーが出る

/kachaka/manual_control/cmd_vel

Topicに対してrqt_robot_steeringを介して geometry_msgs/msg/Twist型のデータを投げたところカチャカが動き出さずブリッジが以下のエラーを吐き出していることを確認しました。

ros2_bridge_1            | [component_container_mt-1] [ERROR] [1692035822.885589870] [kachaka.manual_control]: 'manual_control' error #14: failed to connect to all addresses

別ターミナルを立ち上げて

ros2 topic echo /kachaka/manual_control/cmd_vel

を実行してみてtopicに正しい非ゼロな速度司令が入力されていることは確認しています。

ROS2 colcon build error: No SOURCES given to target: kachaka_grpc_ros2_bridge

Hello, I'm having trouble building the kachaka ros2 project on Ubuntu 22.04, ROS2 Humble.
I would really appreciate some help to make it working.

In .bashrc file, I'm sourcing both ros2 and kachaka ros2 libs:

...
# ROS2 Versions
source /opt/ros/humble/setup.bash
# Kachaka
source /opt/kachaka/setup.bash
...
(base) administrator@B760:~/workspaces/ros2_kachaka$ ls
src
(base) administrator@B760:~/workspaces/ros2_kachaka$ colcon build
Starting >>> kachaka_interfaces
Starting >>> kachaka_description
Starting >>> kachaka_bringup
Starting >>> kachaka_speak
Starting >>> kachaka_vision                                      
--- stderr: kachaka_speak            
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
---
Finished <<< kachaka_speak [0.75s]
Finished <<< kachaka_bringup [0.81s]
Finished <<< kachaka_description [1.51s]
--- stderr: kachaka_interfaces       
CMake Warning (dev) at /opt/ros/humble/share/rosidl_generator_py/cmake/rosidl_generator_py_generate_interfaces.cmake:20 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
  /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
  CMakeLists.txt:18 (rosidl_generate_interfaces)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /opt/ros/humble/share/python_cmake_module/cmake/Modules/FindPythonExtra.cmake:52 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /opt/ros/humble/share/rosidl_generator_py/cmake/rosidl_generator_py_generate_interfaces.cmake:23 (find_package)
  /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
  /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
  CMakeLists.txt:18 (rosidl_generate_interfaces)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /opt/ros/humble/share/python_cmake_module/cmake/Modules/FindPythonExtra.cmake:140 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /opt/ros/humble/share/rosidl_generator_py/cmake/rosidl_generator_py_generate_interfaces.cmake:23 (find_package)
  /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
  /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
  CMakeLists.txt:18 (rosidl_generate_interfaces)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /opt/ros/humble/share/python_cmake_module/cmake/Modules/FindPythonExtra.cmake:52 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmake-extras.cmake:18 (find_package)
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmakeConfig.cmake:41 (include)
  /opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_find_test_dependencies.cmake:36 (find_package)
  CMakeLists.txt:38 (ament_lint_auto_find_test_dependencies)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /opt/ros/humble/share/python_cmake_module/cmake/Modules/FindPythonExtra.cmake:140 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmake-extras.cmake:18 (find_package)
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmakeConfig.cmake:41 (include)
  /opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_find_test_dependencies.cmake:36 (find_package)
  CMakeLists.txt:38 (ament_lint_auto_find_test_dependencies)
This warning is for project developers.  Use -Wno-dev to suppress it.

---
Finished <<< kachaka_interfaces [4.90s]
Starting >>> kachaka_follow
Starting >>> kachaka_grpc_ros2_bridge
Starting >>> kachaka_smart_speaker
--- stderr: kachaka_smart_speaker    
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
---
Finished <<< kachaka_smart_speaker [0.85s]
--- stderr: kachaka_follow
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
---
Finished <<< kachaka_follow [0.95s]
--- stderr: kachaka_grpc_ros2_bridge 
CMake Warning (dev) at /opt/ros/humble/share/python_cmake_module/cmake/Modules/FindPythonExtra.cmake:52 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmake-extras.cmake:18 (find_package)
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmakeConfig.cmake:41 (include)
  /opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_find_test_dependencies.cmake:36 (find_package)
  CMakeLists.txt:164 (ament_lint_auto_find_test_dependencies)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /opt/ros/humble/share/python_cmake_module/cmake/Modules/FindPythonExtra.cmake:140 (find_package):
  Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
  are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmake-extras.cmake:18 (find_package)
  /opt/ros/humble/share/launch_testing_ament_cmake/cmake/launch_testing_ament_cmakeConfig.cmake:41 (include)
  /opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_find_test_dependencies.cmake:36 (find_package)
  CMakeLists.txt:164 (ament_lint_auto_find_test_dependencies)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at /opt/ros/humble/share/ament_cmake_auto/cmake/ament_auto_add_library.cmake:66 (add_library):
  Cannot find source file:

    gen-src/kachaka-api.grpc.pb.cc

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm
  .ccm .cxxm .c++m .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90
  .f95 .f03 .hip .ispc
Call Stack (most recent call first):
  CMakeLists.txt:28 (ament_auto_add_library)


CMake Error at /opt/ros/humble/share/ament_cmake_auto/cmake/ament_auto_add_library.cmake:66 (add_library):
  No SOURCES given to target: kachaka_grpc_ros2_bridge
Call Stack (most recent call first):
  CMakeLists.txt:28 (ament_auto_add_library)


CMake Generate step failed.  Build files cannot be regenerated correctly.
---
Failed   <<< kachaka_grpc_ros2_bridge [1.78s, exited with code 1]
Aborted  <<< kachaka_vision [6.74s] 

Summary: 6 packages finished [7.36s]
  1 package failed: kachaka_grpc_ros2_bridge
  1 package aborted: kachaka_vision
  6 packages had stderr output: kachaka_follow kachaka_grpc_ros2_bridge kachaka_interfaces kachaka_smart_speaker kachaka_speak kachaka_vision

依存関係解決に関する相談

この手順に従ってROS2 bridgeの起動を試みたところ、自分の環境にdocker-composeが入っておらず失敗しました。
docker-composeの依存がある旨を記載するPRは出しておきますが、それとは別にpoetryやryeなどによるパッケージ管理を導入してもよいのではないかと感じました。

docker-coposeはPyPIで公開されているようですので、モダンなパッケージ管理ツールを用いれば依存関係の解決はより簡単になると思います。

とはいえ自分が勝手にすすめていいことにも思えないので現在requirements.txtで依存解決をされている理由などがありましたら情報いただけると幸いです。

開発用Docker Imageを公開するgithub actionsの追加

gRPCはrosdepで依存解決するのが少し難しかったと記憶しており、Dockerで開発ができると非常に嬉しいです。
そこで公開頂いているこちらのDockerfileなのですが、docker pullするだけで使えたら非常に嬉しいと考えています。
Github ActionsでDocker ImageをBuildしてPushするのは簡単なのでそれがいいかなと思っています。
イメージを無料で公開できる先として考えられるものに

あたりが考えられると思います。
このあたりのサービスを使ってDocker Imageを公開できたらなと思っています。

ただ、リポジトリの内部でPFRさんのCI設定らしきものも見つけてるのでどうコミットしたものかなと考えています。

ご検討よろしくお願いいたします。

/map -> /odomのTFフレームがない

既知のバグです。カチャカソフトウェア自体を修正する必要があり、次回以降のカチャカソフトウェアのアップデートで対応予定です。

image_compressed トピックの発行

現在 ros2 bridgeを立ち上げたところimage_rawトピックのみしか発行されておらず、image_compressedを発行する方法があるという話を伺ったのですが、どの設定ファイルを変更すればimage_compressedトピックをブリッジできるのかわからなくって困っています。
よろしくおねがいします。

How to get the data

Hey!! Great work!

I would like to know, how we can get the database for the position that are stored when we mark the position. I want to build a code so that a user can create his ID for a specific location by giving the coordinate (x,y) along with the name.

/clockトピックの発行

ROS 2ではclockトピックを用いて分散計算環境の時刻同期を行うと認識していますが、トピックのリストを確認するとそのトピックが出ていないように見えます。

/clicked_point
/goal_pose
/initialpose
/kachaka/front_camera/camera_info
/kachaka/front_camera/image_raw
/kachaka/front_camera/image_raw/compressed
/kachaka/imu/imu
/kachaka/layout/locations/list
/kachaka/layout/shelves/list
/kachaka/lidar/scan
/kachaka/manual_control/cmd_vel
/kachaka/mapping/map
/kachaka/mapping/map_updates
/kachaka/object_detection/result
/kachaka/odometry/odometry
/kachaka/robot_info/version
/kachaka_description/joint_states
/kachaka_description/robot_description
/parameter_events
/rosout
/tf
/tf_static

rvizで可視化を実行すると以下のようなエラーがでており、使用しているPCが大きく時間がずれているわけではないためNPTによる時刻同期かclockトピックによる時刻同期が必要かと思います。

[INFO] [1692065101.170873319] [rviz]: Message Filter dropping message: frame 'odom' at time 1692065097.799 for reason 'discarding message because the queue is full

`ros2 topic echo /kachaka/layout/locations/list` does not show any message from brdige

Setup Procedure

  1. setup ros:humble workspace with https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html# (with ros2/ros2@74aa201)
  2. start bridge as described in https://github.com/pf-robotics/kachaka-api#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D
tomoyafujita@~/DVT/docker_ws/kachaka-api/tools/ros2_bridge >pwd
/home/tomoyafujita/DVT/docker_ws/kachaka-api/tools/ros2_bridge
tomoyafujita@~/DVT/docker_ws/kachaka-api/tools/ros2_bridge >./start_bridge.sh 192.168.1.226
...
  1. Build kachaka required interfaces with colcon workspace.
root@tomoyafujita:~/docker_ws/ros2_humble/src/ros2# ls -lt | grep kachaka
lrwxrwxrwx  1 1000 1000   46 Dec  6 18:26 kachaka_description -> ../../../kachaka-api/ros2/kachaka_description/
lrwxrwxrwx  1 1000 1000   45 Dec  6 18:25 kachaka_interfaces -> ../../../kachaka-api/ros2/kachaka_interfaces/
root@tomoyafujita:~/docker_ws/ros2_humble/src/ros2# cd ../../
root@tomoyafujita:~/docker_ws/ros2_humble# colcon build --symlink-install
  1. check ROS 2 topics from colcon workspace created procedure-1
root@tomoyafujita:~/docker_ws/ros2_humble# source install/local_setup.bash 
root@tomoyafujita:~/docker_ws/ros2_humble# ros2 topic list
/goal_pose
/kachaka/front_camera/camera_info
/kachaka/front_camera/image_raw
/kachaka/front_camera/image_raw/compressed
/kachaka/imu/imu
/kachaka/layout/locations/list
/kachaka/layout/shelves/list
/kachaka/lidar/scan
/kachaka/manual_control/cmd_vel
/kachaka/mapping/map
/kachaka/object_detection/result
/kachaka/odometry/odometry
/kachaka/robot_info/version
/kachaka_description/joint_states
/kachaka_description/robot_description
/parameter_events
/rosout
/tf
/tf_static
  1. ros2 topic echo
root@tomoyafujita:~/docker_ws/ros2_humble# ros2 topic echo /kachaka/layout/locations/list
### NO OUTPUT ###

Expected Behavior

root@tomoyafujita:~/docker_ws/ros2_humble# ros2 topic echo /kachaka/layout/locations/list

should print the kachaka_interfaces/msg/LocationList.

Docker Imageのビルドコマンドについて

こちらのDockerfileを以下のコマンドでビルドしようとしたところエラーになりました。
なにか抜けている手順があるのでしょうか?

docker build -t kachaka-api -f Dockerfile.ros2 . --build-arg BASE_ARCH=x86_64
Step 34/87 : RUN mv /host/mimic-cross-target /mimic-cross
 ---> Running in b69b2342aca2
Removing intermediate container b69b2342aca2
 ---> c9107739ee0e
Step 35/87 : RUN /mimic-cross/setup.sh
 ---> Running in f9309177ad93
ln: failed to create symbolic link '/usr/lib/x86_64-linux-gnu': File exists

通知用テスト

通知bot動作確認用にissueを作ります。無視してください。

Can not get image data via rviz

Hi, I am using kachaka in ros2 humble environment, it seems that I can not get image data in rviz even if I subscribe to the /kachaka/front_camera/image_raw. I check the topic list and topic info, the image message was published and subscribed, but I just can not see it in rviz.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.