Programming Anki's Vector robot

With the sad news that Anki is shutting down (https://www.vox.com/2019/4/29/18522966/anki-robot-cozmo-staff-layoffs-robotics-toys-boris-sofman) I thought it was time I start playing with the SDK for the Vector robot. In this short post, I providing a quick overview of getting going with this with a simple program based on the tutorials Anki provide.




Installation
I am using a Mac (more details are available here https://developer.anki.com/vector/docs/install-macos.html) but there are instructions for Windows and Linux.

- You need the Vector to have been set-up previous on a tablet, and an account set-up on the Anki Cloud.
- Install Homebrew - available here https://brew.sh/
- Using Homebrew to install Python3 brew install python3
-Now install the SDK python3 -m pip install --user anki_vector
- Lst but not least configure the set-up python3 -m anki_vector.configure - that is it. The configuration tool tells you where the serial number, etc is, so makes fairly a little easier.


First  Program
The tutorials have a number of useful Python examples. With them, as the basis the code below,  Vector moves off the charger and says "Hello Scott" - not earth-shattering but fun.


"""Hello World
Drive off the charger 
Make Vector say 'Hello Scott' in this simple Vector SDK example program.
"""

import anki_vector


def main():
    args = anki_vector.util.parse_command_args()
    with anki_vector.Robot(args.serial) as robot:
        robot.behavior.drive_off_charger()
        print("Say 'Hello Scott'...")
        robot.behavior.say_text("Hello Scott")


if __name__ == "__main__":

    main()


I am going to enjoy playing with this a bit more.








All opinions in this blog are the Author's and should not in any way be seen as reflecting the views of any organisation the Author has any association with. Twitter @scottturneruon

Top 10 popular post on Robots and Physical Computing Blog - April 2019

Popular Posts

All opinions in this blog are the Author's and should not in any way be seen as reflecting the views of any organisation the Author has any association with. Twitter @scottturneruon

Combining Beta Edublocks and Microbit Playground

I have recently been playing with Edublocks (edublocks.org) and the 4tronix's Microbit Playground (the appropriately named Super Kit) controlling programmable pixels/neopixels  and a servo.





Recently a beta version of the Edublocks (see above) has become available (https://app.edublocks.org/) so I wanted to play with it a bit and, at the same time, combine control the servo motor and neopixels together via a potentiometer (see below).





The block version of the code is shown below:




The python version
np = None
port1 = None
pot2 = None
port3 = None


from microbit import *
import neopixel
np = neopixel.NeoPixel(pin0, 8)
pin2.set_analog_period(20)# your own code
while True:
  port1 = pin1.read_analog()
  pot2 = port1//128
  port3 = port1//8
  np[pot2] = (255, 0, 128)
  np.show()
  pin2.write_analog(port3)
  sleep(250)
  np.clear()

To see it action



via GIPHY


A few thoughts on the beta version, I actually like it more than the current version for doing this kind of activity. I found it clearer to use,  it was easier to know what was needed to be done with blocks around the neopixels than the previous version, which needed a little more thought.







All opinions in this blog are the Author's and should not in any way be seen as reflecting the views of any organisation the Author has any association with. Twitter @scottturneruon

microbit playground and Edublocks: Controlling the servo

Using the brilliant Edublocks specifically to microbit (https://microbit.edublocks.org/ ) I have been playing with a 4tronix Microbit playground. Previously I played with getting the turning a potentiometer to selected which neopixel light up, in this post the potentiometer is used to control the direction of the servo motor.

Below is the block code in Edublocks used to do this.


Set up use the Potentiometer attached to Pin1 to control the direction of a servo motor on pin2. 

The potentiometer output is turned into values between 0 (or 5 when I checked) and 1023; it is then divided, using the Floor operation (//, returns the integer part of a division), by 8 to decrease the sensitivity of turning the potentiometer. These values allow both clockwise and anticlockwise turning of the servo to based on the full range of the potentiometer. The line pin2.set_analog_period(20) was based on experimentation in a previous post.

The text-based version of the python code is shown below

np = None
pot1 = None
pot2 = None


from microbit import *
pin2.set_analog_period(20)
while True:
  pot1 = pin1.read_analog()
  pot2 = pot1//8
  pin2.write_analog(pot2)



All opinions in this blog are the Author's and should not in any way be seen as reflecting the views of any organisation the Author has any association with. Twitter @scottturneruon

microbit playground and Edublocks: Controlling the pixels

Using the brilliant Edublocks specifically to microbit (https://microbit.edublocks.org/ ) I have been playing with a 4tronix Microbit playground








Set up use the Potentiometer attached to Pin1 to select which of eight neopixels is turned on.

The potentiometer output is turned into values between 0 (or 5 when I checked) and 1023; it is then divided, using the Floor operation (//, returns the integer part of a division), by 128 to give a number between 0 and 7. This number is used to selected which pixel attached to pin 0 lights up. Each pixel is set to white.

The text-based version of the python code is shown below
np = None
pot1 = None
pot2 = None

from microbit import *
import neopixel
np = neopixel.NeoPixel(pin0, 8)
while True:
  pot1 = pin1.read_analog()
  pot2=pot1//128
  np[pot2] = (32,32,32)
  np.show()
  sleep(50)
  np.clear()

via GIPHY

It is going to be interesting to explore both a bit more.







All opinions in this blog are the Author's and should not in any way be seen as reflecting the views of any organisation the Author has any association with. Twitter @scottturneruon

March's Top 10 post on Robots and Physical Computing blog.


via GIPHY

Search This 



All opinions in this blog are the Author's and should not in any way be seen as reflecting the views of any organisation the Author has any association with. Twitter @scottturneruon

Superheroes, Code Competition and Scratch

A Coding competition for primary school aged children was recently launched; aimed at helping teachers to become more confident with teaching coding skills. Any educator working with primary scjool aged children  (e.g. Teacher, Code Club Leader, etc) can run the competition whether they are familiar with coding or completely new to it. All the session planning is done for you so you can learn alongside your pupils. The resources include 
- 12 weeks of lesson planning for absolute beginners (children and teachers!) 
or 
- shorter 6 week version for those who already have a little experience with using Scratch. 

The resources can be used for computing lessons or to run within an after-school club.

It is open for children in years 4, 5 and 6 working in teams of 3 - 6 children. 

The aim is to create a short computer game using Scratch featuring super heroes who use their super powers for good. To register for the competition and access all the resources click on this link 
http://bit.ly/YoungCoders2019 




For a bit of fun, I wondered what my solution would look like if I was using Scratch. Well, one of the coolest features in Scratch (along with speech-to-text; translation; controlling LEGO;...) is the video sensing. So my idea was to make the user the superhero by using a webcam and the user position on the screen to make falling rocks disappear when touched.


The code below controls the falling rocks, adding 1 to a counter when the person in the camera appears to touch the rock. 



The code below is attached to the stage and just sets up the initial conditions when the green flag is pressed.

If you want a copy of the code or to play with it go to: https://scratch.mit.edu/projects/292925459/


To register for the competition and access all the resources click on this link 
http://bit.ly/YoungCoders2019  



All opinions in this blog are the Author's and should not in any way be seen as reflecting the views of any organisation the Author has any association with. Twitter @scottturneruon