原文链接:

目录

  • 1. 入坑始末
  • 2. 启动 Cozmo
  • 3. 开始鼓捣
  • 4. 开发环境搭建——Cozmo Explorer Tool 安装
  • 4.1. 下载
  • 4.2. 安装依赖
    • 4.2.1. Cozmo SDK 安装

      • 4.2.1.1. Python Installation
      • 4.2.1.2. SDK Installation
      • 4.2.1.3. SDK Upgrade
      • 4.2.1.4. 手机驱动安装(补充步骤)
    • 4.2.2. 安装 Pillow 模块
    • 4.2.3. 安装 Flask 模块
    • 4.2.4. 安装 Flask Socket-IO 模块
  • 5. 启动 Cozmo Explorer Tool
    • 5.1. 报错 1
    • 5.2. 再次启动,弹出一个网页显示 500
    • 5.3. 查看目录中 README
  • 5.4. 启动 explorer_tool.py
  • 6. Python 开发 —— 远程控制及示例脚本运行
    • 6.1. 项目 Anki Cozmo - Python SDK
    • 6.2. 下载 SDK Examples
      • 6.3. 查看 SDK Examples 内容
    • 6.4. 离成功不远了
    • 6.5. 启动远程控制—— remote_control_cozmo.py
  • 7. 执行示例脚本
    • 7.1. 执行 tutorials/01_basics/ 脚本
    • 7.2. 执行 tutorials/02_cozmo_face/ 脚本
    • 7.3. 执行 tutorials/03_vision/ 脚本
    • 7.4. 执行 tutorials/04_cubes_and_objects/ 脚本
    • 7.5. 执行 tutorials/05_async_python/ 脚本
    • 7.6. 执行 tutorials/06_actions/ 脚本
  • 8. 用 IDE 开发 Cozmo Python 程序
    • 8.1. 写在前面重要的话
    • 8.2. 开始码代码
      • 8.3. 编写 “say 晚安” 程序
      • 8.3.1. 拷贝 01_hello_world.py 重命名为 nightnight.py
      • 8.3.2. 使用 IDE 或文本编辑器打开 nightnight.py
      • 8.3.3. 对每行内容进行说明
      • 8.3.4. 修改文本内容
      • 8.3.5. 保存并执行
    • 8.4. 后续开发建议
  • 9. 后记

参考文章:

目录

  • 1. 入坑始末
  • 2. 启动 Cozmo
  • 3. 开始鼓捣
  • 4. 开发环境搭建——Cozmo Explorer Tool 安装
  • 4.1. 下载
  • 4.2. 安装依赖
    • 4.2.1. Cozmo SDK 安装

      • 4.2.1.1. Python Installation
      • 4.2.1.2. SDK Installation
      • 4.2.1.3. SDK Upgrade
      • 4.2.1.4. 手机驱动安装(补充步骤)
    • 4.2.2. 安装 Pillow 模块
    • 4.2.3. 安装 Flask 模块
    • 4.2.4. 安装 Flask Socket-IO 模块
  • 5. 启动 Cozmo Explorer Tool
    • 5.1. 报错 1
    • 5.2. 再次启动,弹出一个网页显示 500
    • 5.3. 查看目录中 README
  • 5.4. 启动 explorer_tool.py
  • 6. Python 开发 —— 远程控制及示例脚本运行
    • 6.1. 项目 Anki Cozmo - Python SDK
    • 6.2. 下载 SDK Examples
      • 6.3. 查看 SDK Examples 内容
    • 6.4. 离成功不远了
    • 6.5. 启动远程控制—— remote_control_cozmo.py
  • 7. 执行示例脚本
    • 7.1. 执行 tutorials/01_basics/ 脚本
    • 7.2. 执行 tutorials/02_cozmo_face/ 脚本
    • 7.3. 执行 tutorials/03_vision/ 脚本
    • 7.4. 执行 tutorials/04_cubes_and_objects/ 脚本
    • 7.5. 执行 tutorials/05_async_python/ 脚本
    • 7.6. 执行 tutorials/06_actions/ 脚本
  • 8. 用 IDE 开发 Cozmo Python 程序
    • 8.1. 写在前面重要的话
    • 8.2. 开始码代码
      • 8.3. 编写 “say 晚安” 程序
      • 8.3.1. 拷贝 01_hello_world.py 重命名为 nightnight.py
      • 8.3.2. 使用 IDE 或文本编辑器打开 nightnight.py
      • 8.3.3. 对每行内容进行说明
      • 8.3.4. 修改文本内容
      • 8.3.5. 保存并执行
    • 8.4. 后续开发建议
  • 9. 后记

目录

  • 1. 入坑始末
  • 2. 启动 Cozmo
  • 3. 开始鼓捣
  • 4. 开发环境搭建——Cozmo Explorer Tool 安装
  • 4.1. 下载
  • 4.2. 安装依赖
    • 4.2.1. Cozmo SDK 安装

      • 4.2.1.1. Python Installation
      • 4.2.1.2. SDK Installation
      • 4.2.1.3. SDK Upgrade
      • 4.2.1.4. 手机驱动安装(补充步骤)
    • 4.2.2. 安装 Pillow 模块
    • 4.2.3. 安装 Flask 模块
    • 4.2.4. 安装 Flask Socket-IO 模块
  • 5. 启动 Cozmo Explorer Tool
    • 5.1. 报错 1
    • 5.2. 再次启动,弹出一个网页显示 500
    • 5.3. 查看目录中 README
  • 5.4. 启动 explorer_tool.py
  • 6. Python 开发 —— 远程控制及示例脚本运行
    • 6.1. 项目 Anki Cozmo - Python SDK
    • 6.2. 下载 SDK Examples
      • 6.3. 查看 SDK Examples 内容
    • 6.4. 离成功不远了
    • 6.5. 启动远程控制—— remote_control_cozmo.py
  • 7. 执行示例脚本
    • 7.1. 执行 tutorials/01_basics/ 脚本
    • 7.2. 执行 tutorials/02_cozmo_face/ 脚本
    • 7.3. 执行 tutorials/03_vision/ 脚本
    • 7.4. 执行 tutorials/04_cubes_and_objects/ 脚本
    • 7.5. 执行 tutorials/05_async_python/ 脚本
    • 7.6. 执行 tutorials/06_actions/ 脚本
  • 8. 用 IDE 开发 Cozmo Python 程序
    • 8.1. 写在前面重要的话
    • 8.2. 开始码代码
      • 8.3. 编写 “say 晚安” 程序
      • 8.3.1. 拷贝 01_hello_world.py 重命名为 nightnight.py
      • 8.3.2. 使用 IDE 或文本编辑器打开 nightnight.py
      • 8.3.3. 对每行内容进行说明
      • 8.3.4. 修改文本内容
      • 8.3.5. 保存并执行
    • 8.4. 后续开发建议
  • 9. 后记

1. 入坑始末

  • 前几日,朋友在群里发了一个机器人的小视频,视频里机器人可以对话,可以推箱子,开心以后会哈哈大笑,非常有趣。

  • 详细了解里一下,这是个叫 Cozmo 的智能机器人,可以配合 SDK 用 Python 编程,兴趣一下子就来了,询问了一下价格,闲鱼 500 左右。顺便跟同事看了一下,同事也感兴趣,立马去闲鱼淘了 2个 蓝色限量款。

  • 第一天下单,没想到第二天下午就到了,哈哈哈。满心激动的打开箱子,里面有:

    • 说明书
    • 充电器
    • 3 个魔方
    • 还有一个就是 Cozmo 本体了
  • 先上张图

原文链接:https://www.cnblogs.com/David-domain/p/11216603.html

2. 启动 Cozmo

  • 打开箱子以后,接下来就是要启动 Cozmo 了,拿起 Cozmo 找了好几圈都没找到开关,emmm~~什么鬼?

  • 通过阅读说明书才知道,Cozmo 开机其实很简单,把充电座接上电,把 Cozmo 放上去就可以了。Cozmo 的底部有 2 个金属触点,通电后屏幕就亮了。

  • 屏幕上有 2 行字,这 2 行字的用途稍后说明。

  • 接下来我们需要掏出手机,下载 App。

  • App 有 iOS 和 Android 两种,值得注意的是:iOS 版本即使在国内,也可以直接从 App Store 下载安装;而 Android 版需要连接 Google Store 才能下载,不禁吐槽一下,国内的 Go 开发者还真是艰难。

  • 为了方便起见,祭出了我的神器——老古董 5s。下载、安装完成 App 后,更换 Wi-Fi 。Wi-Fi 名就是 Cozmo 屏幕右上方的一串字,名为 Cozmo_700xxx 的 Wi-Fi,密码则是第2行的一长串字符串。

  • 连接成功后,切换 App 连接 Cozmo,此时就可以互动了。
    原文链接:https://www.cnblogs.com/David-domain/p/11216603.html

3. 开始鼓捣

  • App 上可以互动的功能比较多,但是 App 编程只有一个类似 Scratch 的模块,对于具有探索精神的程序猿来说,肯定不能满足于此,so,立马打开官方手册,准备搭建开发环境。
  • 官方的 SDK 放在了 GitHub ,链接地址: Cozmo Explorer Tool

  • UI 界面,通过该 SDK,你可以看到 cozmo 看到的世界,以及在它观察到这个世界时,在思考什么。
  • 闲话少叙,下面进入正题。
    原文链接:https://www.cnblogs.com/David-domain/p/11216603.html

4. 开发环境搭建——Cozmo Explorer Tool 安装

4.1. 下载

git clone https://github.com/GrinningHermit/Cozmo-Explorer-Tool.git

4.2. 安装依赖

4.2.1. Cozmo SDK 安装

  • 快速浏览 README 后,找到了 docs 链接:Welcome to the Cozmo SDK!。

  • 因为我使用的是 MacBook,直接浏览 Mac OSX 部分: Installation - macOS / OS X

  • 安装步骤很简单,总共需要 3 步:

4.2.1.1. Python Installation

# 首先,根据说明安装最新的 Homebrew
# 如果已经安装了BREW,请打开终端窗口并键入以下内容来更新它:
brew update# 安装并更新homebrew后,在终端窗口中键入以下内容以安装最新版本的python 3:
brew install python3

4.2.1.2. SDK Installation

# 在终端中输入以下命令安装 SDK
pip3 install --user 'cozmo[camera]'
# [camera] 选项增加了对 Cozmo 相机处理图像。

  • 提示安装成功:Pillow-6.1.0cozmo-1.4.10cozmoclad-3.4.0numpy-1.16.4

4.2.1.3. SDK Upgrade

# 输入如下命令升级 SDK
pip3 install --user --upgrade cozmo

  • 提示当前 SDK 已经满足需求,忽略更新。

4.2.1.4. 手机驱动安装(补充步骤)

  1. 在 macOS 系统上运行 Cozmo SDK,iOS 设备不需要安装其他驱动。
  2. 而使用 Android 设备需要安装 Android Debug Bridge (adb) 才能运行 Cozmo SDK ,并且需要用 USB 线连接手机。

4.2.2. 安装 Pillow 模块

  • 一般说来装Cozmo SDK的时候已经自带了
pip3 install --user Pillow

4.2.3. 安装 Flask 模块

  • Flask 是 Python 的 Web 应用框架,因为 Cozmo Explorer Tool 是浏览器应用,故必须安装
pip3 install --user flask

4.2.4. 安装 Flask Socket-IO 模块

pip3 install --user flask-socketio

原文链接:https://www.cnblogs.com/David-domain/p/11216603.html

5. 启动 Cozmo Explorer Tool

  • 因为没有使用 venv 环境,所以直接运行即可
  • 进入 Cozmo Explorer Tool 目录
cd Cozmo-Explorer-Tool
python3 explorer_tool.py

5.1. 报错 1

╭─david@MyAir ~/Cozmo-Explorer-Tool  ‹master›
╰─➤  python3 explorer_tool.py                                                                                                                                     1 ↵
WARNING:root:Cannot import from eventlet: Do `pip3 install --user eventlet` to install
Event monitoring works, but performance is decreased
2019-07-20 09:21:42,886 cozmo.general WARNING  No iOS device found running Cozmo: No connected iOS devices running Cozmo in SDK mode
WARNING:cozmo.general:No iOS device found running Cozmo: No connected iOS devices running Cozmo in SDK mode
2019-07-20 09:21:42,887 cozmo.general WARNING  No Android device found running Cozmo: Failed to execute adb command adb: [Errno 2] No such file or directory: 'adb': 'adb'
WARNING:cozmo.general:No Android device found running Cozmo: Failed to execute adb command adb: [Errno 2] No such file or directory: 'adb': 'adb'* Serving Flask app "explorer_tool" (lazy loading)* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: off
ERROR:flask.app:Exception on / [GET]
Traceback (most recent call last):File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 2292, in wsgi_appresponse = self.full_dispatch_request()File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 1815, in full_dispatch_requestrv = self.handle_user_exception(e)File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 1718, in handle_user_exceptionreraise(exc_type, exc_value, tb)File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraiseraise valueFile "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_requestrv = self.dispatch_request()File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_requestreturn self.view_functions[rule.endpoint](**req.view_args)File "explorer_tool.py", line 89, in indexreturn render_template('index.html', randomID=rndID, animations=lists[0], triggers=lists[1], behaviors=lists[2], hasSocketIO=flask_socketio_installed, hasPillow=active_viewer)
IndexError: list index out of range
  • 提示中有pip3 install --user eventlet ,说明安装依赖中还有一个包要安装,docs 中没有提及
pip3 install --user eventlet

  • 提示安装完成

5.2. 再次启动,弹出一个网页显示 500

  • 页面500,emmmm~~~,什么情况?

5.3. 查看目录中 README

System requirements
-
- PC with Windows OS, mac OSX or Linux
- Python 3.5.1 or later
- WiFi connection
- An iOS or Android mobile device with the Cozmo app installed, connected to the PC via USB cable
  • 最后一条提示要用 USB 线连接手机和电脑
  • 之后呢?拜托一口气说完好不好~~~
  • 再次查看 docs,Starting Up the SDK
  • 终于找到了
    • 手机连接 Cozmo Wi-Fi后,用 App 连接 Cozmo
    • 点击右上角的⚙️设置菜单
    • 开启 SDK 功能
    • 最后运行 explorer_tool.py
    • 注意window环境地址是 http://127.0.0.1:5000/ ,不是 http://0.0.0.0:5000

  • 点击开启 SDK 模式

  • 进入 SDK 模式后

  • 接下来Cozmo 就傻傻的、迷惑的看着你,等待你下指令了

5.4. 启动 explorer_tool.py

  • 重新运行,哈哈,页面正常打开 _

  • Terminal 详细日志输出

  • 因为这种启动类似 run server 方式,所以后续操作日志还会持续不断的输出到 Terminal 中。
    原文链接:https://www.cnblogs.com/David-domain/p/11216603.html

6. Python 开发 —— 远程控制及示例脚本运行

  • 以上是 UI 工具安装过程,类似与一个调试界面,下面进入真正的 Python 开发部分

6.1. 项目 Anki Cozmo - Python SDK

  • 手册中第二部分是 GitHub 项目地址:Anki Cozmo - Python SDK
  • 下载完 SDK 案例,就可以准备进行 python 开发了

6.2. 下载 SDK Examples

  • 点击手册中下载标签:SDK Examples
  • 第一部分是 SDK 案例,有 Mac OSX / Linux 和 Windows 版本。

6.3. 查看 SDK Examples 内容

╭─david@MyAir ~/Downloads/cozmo_sdk_examples_1.4.10
╰─➤  ll
total 32
-rw-r--r--@  1 david  staff    10K  3 13 04:32 LICENSE.txt
-rw-r--r--@  1 david  staff   676B  3 13 04:32 README.md
drwxr-xr-x@ 10 david  staff   320B  3 13 04:32 apps
drwxr-xr-x@  7 david  staff   224B  3 13 04:32 face_images
drwxr-xr-x@  7 david  staff   224B  3 13 04:32 if_this_then_that
drwxr-xr-x@  4 david  staff   128B  7 20 13:27 lib
drwxr-xr-x@  4 david  staff   128B  3 13 04:32 multi_robot
drwxr-xr-x@  3 david  staff    96B  3 13 04:32 tools
drwxr-xr-x@  8 david  staff   256B  3 13 04:32 tutorials╭─david@MyAir ~/Downloads/cozmo_sdk_examples_1.4.10
╰─➤  tree -Cl .
.
|-- LICENSE.txt
|-- README.md
|-- apps
|   |-- 3d_viewer.py
|   |-- cli.py
|   |-- color_finder.py
|   |-- desk_security_guard.py
|   |-- quick_tap.py
|   |-- quiz_questions.json
|   |-- quizmaster_cozmo.py
|   `-- remote_control_cozmo.py
|-- face_images
|   |-- cozmosdk.png
|   |-- hello_world.png
|   |-- ifttt_gmail.png
|   |-- ifttt_sports.png
|   `-- ifttt_stocks.png
|-- if_this_then_that
|   |-- common
|   |   `-- __init__.py
|   |-- ifttt_gmail.py
|   |-- ifttt_sports.py
|   |-- ifttt_sports_flask.py
|   `-- ifttt_stocks.py
|-- lib
|   `-- flask_helpers.py
|-- multi_robot
|   |-- multi_robot_independent.py
|   `-- multi_robot_unified.py
|-- tools
|   `-- cubes
|       |-- auto_cube_disconnect.py
|       |-- connect_cubes.py
|       |-- disconnect_cubes.py
|       `-- log_cube_battery_levels.py
`-- tutorials|-- 01_basics|   |-- 01_hello_world.py|   |-- 02_drive_and_turn.py|   |-- 03_count.py|   |-- 04_drive_square.py|   |-- 05_motors.py|   |-- 06_sing_scales.py|   |-- 07_backpack_lights.py|   |-- 08_animation.py|   |-- 09_cube_lights.py|   |-- 10_play_sound.py|   |-- 11_play_song.py|   `-- 12_random_animation.py|-- 02_cozmo_face|   |-- 01_cozmo_face_image.py|   |-- 02_cozmo_face_mirror.py|   `-- 03_alarm_clock.py|-- 03_vision|   |-- 01_light_when_face.py|   |-- 02_face_follower.py|   |-- 03_annotate.py|   `-- 04_exposure.py|-- 04_cubes_and_objects|   |-- 01_go_to_pose_test.py|   |-- 02_create_wall.py|   |-- 03_go_to_object_test.py|   |-- 04_stack_or_roll.py|   |-- 05_cube_stack.py|   |-- 06_pickup_furthest.py|   |-- 07_lookaround.py|   |-- 08_drive_to_charger_test.py|   |-- 09_custom_objects.py|   |-- 10_object_moved.py|   |-- 11_dock_with_cube.py|   |-- 12_roll_cube.py|   `-- 13_pop_a_wheelie.py|-- 05_async_python|   |-- 01_cube_blinker_sync.py|   `-- 02_cube_blinker.py`-- 06_actions`-- 01_parallel_actions.py15 directories, 62 files
  • 因为梯子故障,docs 里的视频链接无法观看,所以只能自己摸索
  • tree 目录后,看到 lib 库中有一个 flask_helper.py 的文件,通过刚才 Cozmo Explorer Tool 的调试,我们能知道 Cozmo 使用 flask 框架做的 web 。所以,这个应该也是有 flask web 界面的。

6.4. 离成功不远了

  • 打开 flask_helper.py文件,可以看到顶部注释部分有一个说明
Flask is a Python web framework. remote_control_cozmo.py and other scripts may use
these utility functions to interact with a web browser.
  • 我们看到了什么?

  • 你说对了!——remote_control_cozmo.py

  • find 一下

╭─david@MyAir ~/Downloads/cozmo_sdk_examples_1.4.10
╰─➤  find ./* -name "remote_control_cozmo.py"
./apps/remote_control_cozmo.py

6.5. 启动远程控制—— remote_control_cozmo.py

╭─david@MyAir ~/Downloads/cozmo_sdk_examples_1.4.10
╰─➤  python3 apps/remote_control_cozmo.py
Traceback (most recent call last):File "apps/remote_control_cozmo.py", line 29, in <module>import flask_helpers
ModuleNotFoundError: No module named 'flask_helpers'
  • what the fuck? 发生了什么?
  • 没找到 flask_helpers模块。你觉得在哪?是的,flask_helper.py文件中
  • so,切换到 lib 目录中
╭─david@MyAir ~/Downloads/cozmo_sdk_examples_1.4.10
╰─➤  cd lib                                                                                                                                                       1 ↵
╭─david@MyAir ~/Downloads/cozmo_sdk_examples_1.4.10/lib
╰─➤  python3 ../apps/remote_control_cozmo.py
2019-07-20 13:27:29,093 cozmo.general WARNING  No iOS device found running Cozmo: No connected iOS devices running Cozmo in SDK mode
2019-07-20 13:27:29,095 cozmo.general WARNING  No Android device found running Cozmo: Failed to execute adb command adb: [Errno 2] No such file or directory: 'adb': 'adb'
A connection error occurred: No devices connected running Cozmo in SDK mode
  • 好吧,你赢了,还是需要用手机连接,开启 SDK 模式
  • so,念咒:天灵灵,地灵灵,太上老君急急如律令,变~变~变~
  • 屏幕白光一闪,已经打开了一个神奇的页面