Cozmo人工智慧機器人SDK使用筆記(X)-總結- |人工智慧基礎(中小學版)實踐平臺|

zhangrelay發表於2019-01-28

|人工智慧基礎(中小學版)實踐平臺| Cozmo人工智慧機器人SDK使用筆記(X)-總結-

Cozmo的SDK包括了使用其開發的大部分功能示例,全部內容參考如下連結:

----https://blog.csdn.net/zhangrelay/article/category/7739166----

更多精彩的開發內容參考forums.anki.com,例如:Vector機器人的Scratch 3.0擴充套件Vector和Leap Motion


總結:

1. SDK能做什麼?

Cozmo SDK平臺的主要優勢是軟硬體的多功能和可擴充套件性。

2. 豐富的工具和實用程式

SDK提供從有限狀態機到三維視覺化等全部內容。

 3. 專案研究

Cozmo獨特的硬體、軟體和角色組合使其成為人機互動、行為和計算機視覺等領域研究專案的理想選擇。

4. 物聯網

使用Cozmo控制家居中Hue燈光,提供有關FitBit資料的反饋或在Nest攝像頭檢測到移動時做出提醒。

5. 原型測試

通過Cozmo這個緊湊、高效、多功能的測試平臺,快速輕鬆地迭代新演算法並完善專案設計。

6. 寓教於樂(遊戲)

從經典的棋盤遊戲到創新的Twich體驗,SDK充分啟用無限想象力,構建豐富多彩的遊戲專案。

7. 表演展示

數百種無以倫比的世界級動態表情(呆、萌、酷、炫)並支援全手動硬體控制,使Cozmo成為目前最受歡迎的機器人演員。


Anki Cozmo和Vector全部SDK內容均為開源,可以在githubanki官網找到豐富的資源,進行系統的學習。

之後部落格中內容會以ROS機器人作業系統1.0和2.0介紹使用為主(高校版本);

外掛ROS外掛可以使Cozmo或Vector支援中文等更多功能。

SDK中還有四個資料夾沒有介紹,分別是face_images、lib、multi_robot和tools。

  • face_images中放了一些可以在Cozmo面部顯示的圖片png格式;
  • lib中使用的Flask是一個Python Web框架, remote_control_cozmo.py和其他指令碼可以使用這些實用程式功能與Web瀏覽器進行互動;
  • multi_robot是多機器人案例;
  • tools中給出了4個立方體的專案程式碼。

multi robot independent:

import asyncio
import sys

import cozmo
from cozmo.util import degrees


async def turn_left(sdk_conn):
    robot = await sdk_conn.wait_for_robot()
    cozmo.logger.info("Turning robot 1")
    await robot.turn_in_place(degrees(90)).wait_for_completed()

async def turn_right(sdk_conn):
    robot = await sdk_conn.wait_for_robot()
    cozmo.logger.info("Turning robot 2")
    await robot.turn_in_place(degrees(-90)).wait_for_completed()


if __name__ == '__main__':
    cozmo.setup_basic_logging()
    loop = asyncio.get_event_loop()

    # Connect to both robots
    try:
        conn1 = cozmo.connect_on_loop(loop)
        conn2 = cozmo.connect_on_loop(loop)
    except cozmo.ConnectionError as e:
        sys.exit("A connection error occurred: %s" % e)

    # Run two independent coroutines concurrently, one on each connection
    task1 = asyncio.ensure_future(turn_left(conn1), loop=loop)
    task2 = asyncio.ensure_future(turn_right(conn2), loop=loop)

multi robot unified:

import asyncio
import sys

import cozmo
from cozmo.util import degrees


async def run(sdk_conn1, sdk_conn2):
    robot1 = await sdk_conn1.wait_for_robot()
    robot2 = await sdk_conn2.wait_for_robot()

    # First have one turn left and one turn right, one after the other
    cozmo.logger.info("Turning robot 1")
    await robot1.turn_in_place(degrees(90)).wait_for_completed()
    cozmo.logger.info("Turning robot 2")
    await robot2.turn_in_place(degrees(-90)).wait_for_completed()

    # Then have them both turn back to the original position at the same time
    cozmo.logger.info("Turning both robots")
    turn1 = robot1.turn_in_place(degrees(-90))
    turn2 = robot2.turn_in_place(degrees(90))
    await turn1.wait_for_completed()
    await turn2.wait_for_completed()


if __name__ == '__main__':
    cozmo.setup_basic_logging()
    loop = asyncio.get_event_loop()

    # Connect to both robots
    # NOTE: to connect to a specific device with a specific serial number,
    # create a connector (eg. `cozmo.IOSConnector(serial='abc')) and pass it
    # explicitly to `connect` or `connect_on_loop`
    try:
        conn1 = cozmo.connect_on_loop(loop)
        conn2 = cozmo.connect_on_loop(loop)
    except cozmo.ConnectionError as e:
        sys.exit("A connection error occurred: %s" % e)

    # Run a coroutine controlling both connections
    loop.run_until_complete(run(conn1, conn2))

Fin


 

相關文章