1.Lego boost机器人介绍
boost是乐高在2017年推出的可变成机器人,算是今年过年给我的孩子(和我自己)的新年礼物。其中包含一下组件:
品牌:Lego
编号:17101
颗粒数:843
核心模块(Move Hub):整合逻辑单元、蓝牙接收模块、六轴传感器、2个输入输出插头、一个电源按钮、一个电源灯,两个双向可调功率电机、电池槽(6节7号电池,套装不带)
外部执行器:一个外部双向可调功率电机
传感器:一个可分辨距离、颜色的传感器,自带色灯
官方推荐搭建模式:5种(Vernie机器人、弗兰基猫、吉他、铲装车或者自动搭建平台)
官方推荐年龄:7岁~12岁
控制及编程模式:Ipad 10.0以上版本,语言可选择中文(编辑界面及机器人发言中的语种)Move hub,外置电机以及颜色距离传感器
我刚满6岁的女儿玩的不亦乐乎,由于官方只能使用IPad或手机上的app进行控制,控制手段还是很多样的,有很多玩法,对于小孩子可以玩很久了。可以对于我来说就不够灵活了,因此在网上找到了可以使用python语言控制机器人的方法,介绍给感兴趣的人。
2.开发环境搭建
GitHub上找到两个可以用的开源库:
https://github.com/panyicast/pylgbst
https://github.com/panyicast/pyb00st
两个库均可以在linux和windows平台下运行,但是在windows平台下需要配置BLE Smart适配器(BLED112),这个适配器我查了一下,某宝80块可以买到。而linux平台下只需要笔记本自带的蓝牙就可以。因此本文主要如何在linux平台下进行操作。
两个库中,pyb00st功能不够完整,缺少部分传感器数据的读取功能。pylgbst功能比较完整,但在python3.7下运行需要进行一点点修改,因此本文只介绍如何在ubuntu操作系统下使用pylgbst库对lego boost进行控制。
我的笔记本是windows平台的联想笔记本,为此将硬盘新建了20g的分区,在上面安装了Ubuntu 18.04.1 LTS操作系统。python安装的anaconda 2018.12(python 3.7)。这两者的安装我就不细说了,需要的可以自行百度。安装anaconda,强烈建议安装“visual studio code”软件,非常好用的IDE工具。
首先安装bluez的最新版本。
(注:一下绿色字体均为需要在系统中输入的命令。)
1、安装相关依赖库:
#sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev automake libudev-dev libical-dev libreadline-dev
2、下载Bluez-5.28压缩包并解压:
#wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.50.tar.xz
#tar xvf bluez-5.50.tar.xz
进入解压后的目录:
#cd bluezbluez
3、执行配置文件
#./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
4、执行make和install
#make
#sudo make install
安装pylgbst之前需要安装一些依赖库。请执行以下命令:
sudo pip install pygatt
sudo pip install gatt
sudo pip install gattlib
安装完上述三个库后,打开ubuntu的蓝牙配置程序,如果找不到配置程序,可以按以下步骤安装使用:
sudo apt install gnome-control-center
gnome-control-centergnome-control-center
在设置界面中确保打开蓝牙开关,按下lego movehub上的绿色按钮,movehub的LED灯闪烁后,应该能在设备列表中看到“LEGO Move Hub”。
3.pylgbst的安装
浏览器打开以下页面:
https://github.com/panyicast/pylgbst
点击“Clone or download”按钮,选择“Download ZIP”,将库文件下载。不要使用“pip”命令安装,因为需要对原文件进行一下修改。将下载的文件解压到工作目录。在工作目录下建立“legoboost”目录,将解压后的文件夹中的“pylgbst”目录整个拷贝到“legoboost”目录下。然后使用vscode打开“pylgbst”目录下的“peripherals.py”文件,将该文件内的所有名为“async”的变量都改为另外一个名字,例如“myasync”。这样就可以在python3.7下完美运行pylgbst。(async是python3.5新加入的关键字,估计作者实在3.5之前的版本上开发的,将async用作了函数的参数,导致在新版本上命名冲突。)
4.pylgbst的使用
开源项目的首页说明里(https://github.com/panyicast/pylgbst)对主要功能有比较详细的说明,我就不重复了。这里放一个我做的一个小例子,给大家参考。
一个弱智的壁障机器人。先上视频。
python程序代码在这里:
https://github.com/panyicast/LEGO_Boost
使用方法:
下载全部代码后,在程序目录下打开命令行终端,运行:
sudo python test.py
之后按下LEGO boost上的绿色按钮。