がちもとさんのブログ

co-founder #KumaMCN / @KnowComInc R&D戦略チーム / #Azure #HoloLens #MRPP / #AWS #ML / #CV #SLAM #Python / #WHILL #自動運転 / #メタバース #XR / #Databricks / お仕事のご依頼はDMで✉️

WHILLでカヌー体験みたいなやつ作った

WHILLアドベントカレンダー2019の7日目の記事です。 WHILLでカヌー体験みたいなものを作りました。

www.instagram.com

開発環境

  • Unity JoyCon操作用
  • Python 3.6.9 JoyConの値受信とWHILL制御用
  • WHILL Model CR
  • RS232C->USBケーブル
  • JoyCon
  • 傘w

システム概要

1.UnityでJoyConの傾きを取得する

すみません、プログラムはあとで載せます。

2.TCP通信でJoyConの値を送信

JoyConの傾き具合によって、WHILLを旋回させます。

すみません、プログラムはあとで載せます。

3.JoyConの値を受信し、WHILLを操作する

from whill import ComWHILL
import socket
import time

def main():
    whill = ComWHILL(port='COM5')
    host = "127.0.0.1"
    port = 4000
    buffer_size = 4096
    acc = 50
    while True:
        serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        serversock.bind((host,port))
        serversock.listen(10)
        print('Waiting for connections...')
        clientsock, client_address = serversock.accept()
        print("Succeeded in Connection!")
        while True:
            try:
                data = clientsock.recv(buffer_size)
                if b'exit' in data:
                    break
                data_ = data.decode('utf-8').split("\n")
                [direction, speed] = data_[0].split(",")
                print(int(float(speed)*acc), int(float(direction)*acc))
                whill.send_joystick(int(float(speed)*acc), int(float(direction)*acc))
                time.sleep(0.01)
            except clientsock.error:
                whill.send_joystick(0, 0)
                clientsock.close()
                break
        whill.send_joystick(0, 0)
        serversock.close()

if __name__ == '__main__':
    main()

まとめ

WHILLを用いてカヌーみたいな体験ができるものを作りました。 Unityからシリアル通信でWHILLを動かせるようにしたので、今度はその記事を書きたいと思います。 お楽しみに!

WHILLをJoyConで操作する(Python、Windows)

アドベントカレンダー2019の2日目の記事です。

WHILLをJoyConで動かしてみました。 https://www.instagram.com/p/Bwr5mk3ninW/?igshid=167dycnuhsrv1

システム環境

  • WHILL Model CR
  • RS232C-USBケーブル
  • Windows10
  • Python 3.6

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

  • pip install pyserial
  • pip install pygame

ソースコード

from whill import ComWHILL
import pygame
from pygame.locals import *
import time

def main() :
    whill = ComWHILL(port='COM21')
    pygame.joystick.init()
    joystick0 = pygame.joystick.Joystick(0)
    joystick0.init()

    print ('joystick start')

    pygame.init()

    x, y = 0, 0
    while True:
         # コントローラーの操作を取得
        eventlist = pygame.event.get()

        # イベント処理
        for e in eventlist:
            if e.type == QUIT:
                return

            if e.type == pygame.locals.JOYAXISMOTION:
                x, y = joystick0.get_axis(0), joystick0.get_axis(1)
                print ('axis x:' + str(x) + ' axis y:' + str(y))
            elif e.type == pygame.locals.JOYHATMOTION:
                x, y = joystick0.get_hat(0)
                print ('hat x:' + str(x) + ' hat y:' + str(y))
            elif e.type == pygame.locals.JOYBUTTONDOWN:
                print ('button:' + str(e.button))

        whill.send_joystick(int(x*50), int(-y*50))
        time.sleep(0.01)

if __name__ == '__main__':
    try:
        main()
    except pygame.error:
        print ('joystickが見つかりませんでした。')
  1. ライブラリをインポート (WHILL用、JoyCon用、Sleep用)

  2. WhillとJoyConの初期設定

  3. JoyConの値を取得 x,y

  4. WHILLに指令 whill.send_joystick(int(x50), int(-y50))の50という値を変更して速度を調整、屋内では50だと速いので小スペースだと20くらいでOK

まとめ

JoyConがあるだけで、子どもたちが寄ってきます。ゲーム感覚でWHILLを操作できるの楽しい!

参考

Mac版はこちら。ライブラリに公式のpywhillではなく、whillpyを用います。 qiita.com

あれから1年が経ちました

アドベントカレンダー2019の1日目の記事です。

WHILL Model CRを買ってからもう1年が経ってしまいました。今日は、この1年間を振り返ってみます。

2019/01/24 クリエイティブくまもとで展示

2019/01/30 菊池支援学校で展示 https://www.instagram.com/p/BtQactvHE1G/?igshid=fiprn5lmeq63 体験してもらった

2019/02/03 NT広島で展示 https://www.instagram.com/p/BtaqAN6nY6y/?igshid=1m02ru4wctebm JoyConがあるだけで子どもが寄ってくる

2019/02/23 熊本高専キャリアセミナーで展示 https://www.instagram.com/p/BuN5g6knE6k/?igshid=1f4al3o0lbebr 教室でWHILLが入れるところってあんまりない

2019/04/26 JoyConで操作 https://www.instagram.com/p/Bwr5mk3ninW/?igshid=167dycnuhsrv1 ゲームコントローラだと操作が楽しくなる

2019/04/26 カヌーみたいなやつ https://www.instagram.com/p/Bwr5xFonQ81/?igshid=123i6lm6nfmj7 ジョイコンを傾けるとその向きに曲がる

2019/04/26 HoloLensで操作 https://www.instagram.com/p/Bwr55mdHEfK/?igshid=insf1tec2x7r HoloLensで位置指定してそこまで経路計画して走行する

2019/05/05 NT熊本で展示 https://www.instagram.com/p/BxD4FfVnDJ8/?igshid=1rme58dd5b591

2019/05/06 MF京都で展示 人追従(Unity) https://www.instagram.com/p/BxIAzjNHwD0/?igshid=1adutzl17s9xs RealSense

2019/05/30 de:code2019で展示 人追従(Python/CustomVision) https://www.instagram.com/p/ByP8ZcSgjUt/?igshid=1aem83d7hrn4f GPUだと使えるレベル WHILLに乗って電車で鶴見まで行くのが辛かった

2019/08/07 シリアル通信(非ROS/C++/C#/Unity)を実装 https://twitter.com/sotongshi/status/1157158292801511424?s=21 https://twitter.com/sotongshi/status/1159015561990328320?s=21 これでなんでもできる

2019/08/19 加加速度による路面評価 ROHC2019 https://www.instagram.com/p/B1UEou7AlYt/?igshid=zsk8f18qm6ti https://twitter.com/sotongshi/status/1163117819812179968?s=21 決勝までいった

2019/09/03 超福祉展で展示 屋内自動運転 https://www.instagram.com/p/B2GFSFqAgEH/?igshid=1rnkn3bp3lpb5 https://twitter.com/sotongshi/status/1168740395125075968?s=21 https://twitter.com/sotongshi/status/1170177662381281282?s=21 NHKデビューした

明日からはこの記事の中からいくつか紹介していく予定です。 お楽しみに〜

PythonでWHILLを動かしてみた

WHILL Advent Calendar 2018 - Adventarの21日目の記事です。

WHILL Model CRのモーターコントローラが返ってきました。経緯はこちら。 モーターコントローラのトランシーバー及びマイコンが故障していたそうです。 原因は、TX/RXとバッテリーのピンが接触し、トランシーバーに定格以上の電圧が加わったためです。 TX/RXとバッテリーのピンは隣にあるので、注意しましょう! WHILLの仕様書はこちらです。 github.com

今日はPythonでWHILL Model CRを動かします。

開発環境

接続ケーブルを準備する

外部機器(PC)からWHILLを動かすには、接続ケーブルを自作する必要があります。
接続ケーブルの作り方はMioさんの記事(接続ケーブルのつくりかた - WHILL Model CRについてのブログ)を参考にしてください。
構成は、PC(USBポート)→ USB - RS232C 変換ケーブル → 自作ケーブル → WHILL になります。

USB - RS232C変換ケーブルはこちらを使用しました。ドライバはここ(USB-CVRS9 のソフト(ドライバ)ダウンロード - サンワサプライ株式会社)にあります。

自作ケーブルの部品はミスミから買いました。送料かからないので超良いです。

PCとWHILLを接続ケーブルで繋ぎ、デバイスマネージャーを開き、ポートの設定を下記のようにします。
f:id:gachimoto:20181230181105p:plain

Pythonのサンプルを動かす

サンプルプログラムがgithubにあるので、ダウンロードします。
github.com
scriptフォルダのwhill.py、whill_data.py、whill_packet.pyをexamplesフォルダにコピペしました。あとはwhill.pyにimport serialを追記します。serialが見つからなければ、pip install pyserialでインストールします。

examplesの中に、4つのサンプルがあるので、実行してみましょう。 試しに動かすときは、転倒防止バーの下に角材かなにかを敷いて、タイヤを浮かせて実験します。

cr_example1_joy.py

1秒ごとに少しずつ前進するプログラムです。
cr_example1_joy.pyの11行目、whill = ComWHILL(port='COM4')のポート番号は、デバイスマネージャーから調べて書きかえてください。
13行目の whill.send_joystick(int(10), int(0)) は、第一引数が前後、第二引数が回転になっており、それぞれ-100~100までの値を入力します。
第一引数:(+)前進、(-)後退
第二引数:(+)右回転、(-)左回転

cr_example2_data.py

1秒ごとに加速度、ジャイロ、ジョイスティック、バッテリー、モーターの値を表示するプログラムです。
whill.pyの42行目、self.accelerometerself.accelerationに変更します。
cr_example2_data.pyの21行目、print(whill.accelerometer)print(whill.acceleration)に変更します。
f:id:gachimoto:20181230183745p:plain

cr_example3_callback.py

cr_example2_data.pyのコールバック関数を用いたプログラムです。
cr_example3_callback.pyの25行目、print(whill.accelerometer)print(whill.acceleration)に変更します。
f:id:gachimoto:20181230184258p:plain

cr_example4_blink_power.py

3秒ごとに電源をオンオフするプログラムです。

まとめ

今回、Pythonのサンプルプログラムを用いて、PCからWHILLを動かしてみました。 実際に動くと楽しくなってきますね!(モーターコントローラ治ってよかった...)

whill.jp

https://www.facebook.com/KumaMCN/

株式会社ナレッジコミュニケーション(ナレコム)- コーポレートサイト

WHILL 試乗会やってみた

ガチ本です。
WHILL Advent Calendar 2018 - Adventarの12日目の記事です。

熊本ソフトウェア株式会社の身体障がい者ソフトウェア開発訓練センターで、WHILLを紹介してきました。 Model CRは先週修理に出したので、Model Cをレンタルしました。 間に合って良かった~(;'∀')

WHILLの紹介

最初に50分程度、WHILLのコンセプトや機能説明、自分が考えているこれからのモビリティについて話しました。 資料はこちらです。

WHILLの組み立て・分解、オムニホイールにより小回りが効くところやBluetoothでの遠隔操作を披露しました。

いくらで買えるのか?との質問があったので、予想してもらいました。 50万、100万、120万などの声があがり、Model Cは「45万」と回答したところ、意外と安かった様子。

他にもたくさんの質問が出ました。 仕様等については、ホームページによく書いてあります。よくある質問もこちらカタログも。

  • バッテリーが切れたら、押すのは大変か? ハンズマンで手押しで一周したが大変だった。 パイプフレームが便利そう
  • バッテリーの充電時間は? 5時間
  • バッテリーがどれくらい持つか? 走行距離は16km
  • 修理にどれくらいかかるか、修理になったら駆けつけてくれるのか? WHILL Smart Careがあるようです
  • バッテリーの重さは? 約2.8kg
  • バッテリーの値段は? ¥64,584
  • バッテリーの寿命は? 1000回充電できる
  • 日本でどれくらい売れているのか? 販売台数は非公開
  • WHILLの重さは? 52kg
  • 馬力は?最大荷重は? 115kgまで乗れます
  • スマホの充電もできる? USBポートあります。
  • 雨は大丈夫か? 生活防水なので、ゲリラ豪雨の中はダメそう。
  • コントローラは右と左入れ替えられる? 中の人に聞いてみます
  • WHILLの寿命は? バッテリーもしくは駆動部分の劣化... 中の人に聞いてみます
  • 買うって決めてから届くまでの時間 Model CRは1か月程度だった気がしますが、Model Cはどうでしょうか。中の人に聞いてみます

WHILLの試乗会

そして、試乗会

気になったのは、車椅子からの乗り降りが難しかったことです。
シートの高さが合わなかった。車椅子よりもシートの位置が高い印象。
シートの高さは、405~485mmまで変えることが可能のようです。フィッティングについてはこちら

あと車椅子には、写真のように脚の横にパイプがあります。 f:id:gachimoto:20181216023418j:plain

WHILLは肘掛を畳むこともできますが、掴む場所がありません。
肘掛を掴むとしても、コントローラの部分がでっぱりとなっているので、動かせたり引っ込ませたりできると便利かもしれないですね。

屋外に出て、段差など乗り越えてみました。 車いすだと勢いが要るところもWHILLだと近づいてからでも大丈夫でした。

さいごに

体験しないとわからないことはいっぱいありますね。
WHILLを知っていたという方はひとり。テレビで知ったそうです。
熊本でもまだまだ知らない方が多いので、たくさん試乗会をしてこのかっこいいWHILLに乗る人を増やしたいですね!

whill.jp

https://www.facebook.com/KumaMCN/

株式会社ナレッジコミュニケーション(ナレコム)- コーポレートサイト

WHILLとハンズマンに行ってきた

f:id:gachimoto:20181211133642j:plain

ガチ本です。
WHILL Advent Calendar 2018 の11日目の記事です。

WHILLとハンズマンに行ってきました!もちろん手押しでw
まずは車に載せるところから。軽自動車ですが後ろを倒せばらくらく載せることができました!簡単に分解できて、すぐに載せられるのはうれしい! f:id:gachimoto:20181211133850j:plain

ハンズマンに到着、かなさんを乗せて手押しで店内へ。
早速、入ってすぐにあるLEDコーナー。

f:id:gachimoto:20181211135556j:plainf:id:gachimoto:20181211135554j:plain

やっぱり手押しが大変だったので、まずはパイプ探しに...
いまめっちゃこれが欲しい。。。 https://whill.jp/wp-content/uploads/2017/04/08151fc47b86c3f95a2c24b06195fd90.jpg あなたに合った収納アクセサリーでお出かけを楽しく - WHILL 次世代型電動車椅子

ないなら作ろうと思い、水道管とか取っ手とかいろいろ探していたのですが、、、

f:id:gachimoto:20181211142931j:plainf:id:gachimoto:20181211142941j:plain
  • 背もたれカバーのスリットに取り付けると、カバーが割れそう
  • 背もたれを押すと倒れるので、動かしづらいだろう
  • 背もたれを外して取り付けるか
  • 肘掛の後ろの部分にカポッとハマるようなものがいいかも

良さげなものが見つかりませんでした。
今回の目的は、IntelRealSense D400シリーズとScanseのsweep(Scanning LiDAR)を搭載するため。
そして、たどり着いたのが、金具とネジのコーナー。だんだん楽しくなってきました! f:id:gachimoto:20181211144508j:plain

防振のツリバンド、本来何に使うんだろう。。。
座席前のパイプにすっぽりハマるではありませんか。
RealSenseが1/4ネジ、ツリバンドが3/8ネジなので、あとはネジ変換があれば簡単に固定できそうです!

f:id:gachimoto:20181211145048j:plainf:id:gachimoto:20181211145242j:plainf:id:gachimoto:20181211145051j:plainf:id:gachimoto:20181211145056j:plainf:id:gachimoto:20181211145416j:plain

防振のUバンドもいい感じ。 LiDARの固定に使えるかも!

f:id:gachimoto:20181211144623j:plainf:id:gachimoto:20181211144626j:plainf:id:gachimoto:20181211144630j:plainf:id:gachimoto:20181211144637j:plainf:id:gachimoto:20181211144634j:plain

他にも、パイプを通すものや、背もたれカバーの穴に結束バンドで固定できそうなものが見つかりました。

f:id:gachimoto:20181211145749j:plainf:id:gachimoto:20181211145745j:plain

WHILLの修理が終わったら、電源の入るWHILLでまた来たいと思います!
おっちゃんに「ハンズマンの中を歩き回るの疲れるから乗せて欲しい」と言われたので、ハンズマンはWHILLを導入すべき。 f:id:gachimoto:20181211150646j:plain

かなさんには、ガチ本が手押しする「自動運転」を体験してもらいましたw 自分もかなさんに手押ししてもらいましたが、最高でした。 ジョイスティックすら握らずに気にしなくていいなんて。 オムニホイールのぬるぬる動く感じもまたたまらんですな。

センサの取り付け箇所については、武井さんの記事も参考まで。
WHILL Model CR センサはここに取り付けろ! - tak-tek’s diary

明日のアドベントカレンダーもお楽しみに!
試乗会をやります。

whill.jp

https://www.facebook.com/KumaMCN/

株式会社ナレッジコミュニケーション(ナレコム)- コーポレートサイト

悲報、WHILL壊した

ガチ本です。
WHILL Advent Calendar 2018 の9日目の記事です。

先週、WHILLをPCから制御するため、自作ケーブルで試していたところ、電源が入らなくなってしまいました・・・

最初は正常に動作していた → 自作ケーブルで試すが動かず → 自作ケーブルを調整 → 本体の電源が入らなくなる(;'∀')

確認事項は以下です。
①バッテリーを本体から外し、再度装着すると、赤いテールランプが点灯するか?
→ 点灯せず
②バッテリーを外して、横のボタンを押す。全点灯するか、流れるように点灯するか?
→ 全点灯する
バッテリーは正常で、モーターコントローラが故障したようです。

モーターコントローラを修理に出すことになりました。
バッテリーを外したところにモータコントローラがあるので、六角レンチで4つのネジを外します。 f:id:gachimoto:20181209202819j:plain

座席の下にあるカバーを外します。ネジ類はまとめてテープで貼り付けてなくさないようにします。

f:id:gachimoto:20181209202830j:plainf:id:gachimoto:20181209202845j:plain

モーターコントローラの取り外しが完了、郵送しました。 f:id:gachimoto:20181209202800j:plain

自作ケーブルを調整する間、
* TX、RXを間違えたか
* 電源ピンがショートしたか
* シリアル通信の設定をミスってなにか書き込んでしまったのか?

原因はわかりませんが、、、
自作ケーブルの作り方は、14日のMioさんの記事を待つことにしますw
しばらくは手押しWHILLで頑張りますw

whill.jp

https://www.facebook.com/KumaMCN/

株式会社ナレッジコミュニケーション(ナレコム)- コーポレートサイト