Friday, September 26, 2014

Pawly @ Makeworks Open House

Pawly was happy to take part at Makeworks’ second open house which occurred on Wednesday July 9th at their location at 1139 College St.

MakeWorks is an amazing 10,000 sq-ft creative studio. They feature a prototyping studio and a workshop complete with a fleet of 3D printers (awesome!!), electronics lab, laser cutter, cnc machine, plus an in-house woodworking and ceramics studio (they pretty much covered everything so it seems ;).

It's a cool hub for makers, designers, and creatives of all kinds to develop their projects, collaborate, and inspire each other.

The atmosphere was vibrant accompanied by live music, a cocktail bar, and munchies from a local cuisine nearby (oh, it was quite a Gushi). The event showcased a variety of startups from inspiring post-card quotes, to an innovative smart sensor based wheelchair.

Our team showcased Pawly during the event. We got to demo Pawly around the studio and allowed others to control it. We’ve received a lot of interest and feedback regarding Pawly. We were also hoping to allow people to use our hacked X-box controller to control Pawly, but Pawly, having a mind of its own, decided to be a rebel and not want to be controlled by anything other than our Ipad. Oh well, better luck next time. While the X-box controller didn’t work, people enjoyed hearing about Pawly all thanks to our super amazing Championship belt from winning the Global Startup Battle powered by Google!

The open house was a great turnout and allowed us to connect with people and inform them of our next step in launching a crowdfunding campaign through Indiegogo.

On a further note, Indiegogo has partnered up with MakeWorks to provide the San Francisco based company representation within Canada. 

Monday, September 22, 2014

A Hackers Guide To Pawly

Pried Open

Pawly is being marketed as a way to play with your pet while you're not at home. However it is much more than that. The possibilities are only limited by your imagination.
Opening up the Pawly platform is straightforward. First find the IP address of the Pawly. One way to do this is to connect to your router and see what is online. For example on my home router I point my browser to, then go to IP & MAC Bindings. Once you have the IP you can ssh into the Raspberry Pi inside your Pawly.
Now that you are in, have a look around. You can see that Robot Operation System is installed at /opt/ros/groovy. Suddenly the possibilities expand quickly because ROS has a large and active community, as well as an advanced ecosystem to go with it.

Electric Bloodstream
ROS simplifies process communication in the robot. ROS main concepts are called topics and nodes. Topics know how to make the robot do stuff, such as turn motors on and off. A node can either publish (send messages to) or subscribe (read messages from) a topic.
In addition ROS has a code generation tool that converts your message definitions into C or Python code. This makes for tight code integration with ROS.

Nudge your Robot

A ROS topic is installed that knows how to make the Pawly drive around. The message it takes is a standard twist message. The topic knows how to convert the twist message into a power level on the left and right wheel motors so that it drives in the desired direction. The power level goes from -100 (full reverse) to 0 (stop) to +100 (full forward). A PawlyMove message is also provided that can take these values directly.
For example to spin around in a clockwise circle for 5 seconds you can publish to a topic in Python:
import roslib; roslib.load_manifest('pawly')
import rospy
from pawly.msg import PawlyMove

pub = rospy.Publisher('pawly', PawlyMove)
hertz = 10
rate = rospy.Rate(hertz)
= 0
while not rospy.is_shutdown() and i < 5*hertz:
    move = PawlyMove();
    move.right_throttle = -100
    move.left_throttle = 100
    += 1
You may be wondering what the PawlyMove import is referencing. Remember I told you that ROS does code generation? All I had to do was create a msg file that looked like this and ROS did the rest:
  int16 left_throttle
  int16 right_throttle

This just scratches the surface of what is possible. In the next article I show you how to get images from the camera.