Pepper やNaoで使用されているNaoqi OSのメモです。


NAOqi Core - 概要 | API | NetworkInfo | NetworkInfo-IPInfo

用途


ALConnectionMagagerはネットワーク接続のメソッドを提供します。
ネットワークの設定及び接続だけでなくネットワークプロパティの取得やネットワークの作成もサポートします。

ALConnectionManagerはイーサネット、Wi-Fi、Bluetoothのような技術もサポートしています。

主な特徴は

利用可能なネットワークの一覧表示
ネットワークへの接続
Wi-Fi,Bluetoothに対応したネットワークの作成
利用可能なネットワーク技術の一覧表示
ネットワークの設定
Wi-Fiの強度や状態、セキュリティ要件などの異なったネットワークに関する情報の取得
イベントを通してネットワーク接続の変更の通知

仕組み


ALConnectionManagerはネットワークの情報取得と接続のためにOSSのConnManをベースにしています。
Aldebaran RoboticsはConnmanプロジェクトのコントリビュータで、ConnManのソースはhttps://github.com/aldebaranにあります。
公式のものとは一部パッチが異なる程度で、できるだけ差異を減らすようにしています。

Wi-FiはWPA Supplicant
BluetoothはBlueZによるものです。

パフォーマンスと制限


制限

ALConnectionManagerはロボット場でのみ使用可能です。
ALConnectionManagerは現在WPAエンタープライズはサポートしていません。
テザリングモードを使用しているときはWi-Fiサービスの一覧は取得できません。
ALConnectionManagerはBlueToothはサポートしていません。

テザリングとセキュリティに関する注意


テザリングモードは、ロボットをアクセスポイントにしますが、インターネットへの接続も保持します。
もしロボットが企業のネットワーク環境に接続された場合、ネットワークセキュリティに互換性があることを確認する必要があります。

はじめに


ALConnectionManagerを使うために必要な情報。

ConnectionManagerからのサービスオブジェクトはNetworkInfoとなります。

ネットワーク接続のグローバルステートの取得
---


#! /usr/bin/env python
# -*- encoding: UTF-8 -*-

"""Example: Use state Method"""

import qi
import argparse
import sys


def main(session):
    """
 この例はステートメソッドを使います。
    """
    # ALConnectionManagerサービスの取得。

    con_mng_service = session.service("ALConnectionManager")

    # ネットワークの状態取得。
    print "Network state: " + con_mng_service.state()


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--ip", type=str, default="127.0.0.1",
                        help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
    parser.add_argument("--port", type=int, default=9559,
                        help="Naoqi port number")

    args = parser.parse_args()
    session = qi.Session()
    try:
        session.connect("tcp://" + args.ip + ":" + str(args.port))
    except RuntimeError:
        print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
               "Please check your script arguments. Run with -h option for help.")
        sys.exit(1)
    main(session)


ネットワークサービスリストの取得

#! /usr/bin/env python
# -*- encoding: UTF-8 -*-

"""スキャンとサービスメソッドの利用例"""

import qi
import argparse
import sys


def main(session):
    """
    この例ではスキャンとサービスメソッドを使用します。
    """

    #**ALConnectionManagerサービスの取得

    con_mng_service = session.service("ALConnectionManager")

    #スキャンのためのサービスリストのアップデート
    con_mng_service.scan()
    services = con_mng_service.services()

    for service in services:
        network = dict(service)
        if network["Name"] == "":
            print "{hidden} " + network["ServiceId"]
        else:
            print network["Name"] + " " + network["ServiceId"]


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--ip", type=str, default="127.0.0.1",
                        help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
    parser.add_argument("--port", type=int, default=9559,
                        help="Naoqi port number")

    args = parser.parse_args()
    session = qi.Session()
    try:
        session.connect("tcp://" + args.ip + ":" + str(args.port))
    except RuntimeError:
        print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
               "Please check your script arguments. Run with -h option for help.")
        sys.exit(1)
    main(session)

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

NAOqi - Developer guide

Creating an application?

Programming for a living robot?

Other tutorials?

Choregraphe Suite?

どなたでも編集できます