Roomba Rampage (Olivier Proulx) Mac OS

broken image


If the Roomba still does not connect fully with WPA disabled and it's services don't appear, then Roomba and NG need to review this and hopefully collaborate and find a fix. Be sure to re-enable WPA2 and AES after testing the Roomba. My Setup (Cable 1Gbps/50Mbps)CM1200 v2.02.03(LAG Disabled)RBK50 v2.7.2.104(WW)/RBK853 AP Mode v3.2.18.1. Maintain Your Robots With Official Parts & Accessories for Roomba, Braava, Mirra and Looj among others. Home Shop Parts & Accessories. Parts & Accessories. Roomba® Accessories s Series i Series 900 Series e Series 800 Series 700 Series 600 Series Professional & 500 Series 400 & Discovery Series Original Series.

Roomba Tilt Control with MacBook & Perl

Planet stronghold: colonial defense mac os. This project shows you how to use the built-in tilt sensors of the MacBook to control a Roomba. Since Perl hasn't been used to program a Roomba yet, it seemed like a fun task to show that it could be done (and pretty easily too).


(revver link)
Sneakers and an oversized hoodie mac os.

Download it

You only need two bits of software not already on your Mac:
– AMSTracker
– roomba-tilt.pl
Download them both, put them both in your PATH and try it out. But first you might want to read on to see how it works.

Measuring Tilt

Apple MacBooks have integrated 3-axis accelerometer called the Sudden Motion Sensor (SMS, previously Apple Motion Sensor, AMS). Normally this is used to detect when the laptop is dropped so it can shut down the hard drive to prevent damage. But the SMS can be accessed programmatically and used to measure tilt.

Amit Singh has a wonderful book out called Mac OS X Internals where he goes into great detail about the SMS. He's also created several programs that use the accelerometer data. The one used in this project is the command-line program AMSTracker.

When AMSTracker is run, it outputs three columns of numbers, one for each axis of accelerometer data. AMSTracker can also be run in a 'scrolling' mode where it outputs new data periodically. This is the mode used in this project. The output then looks like:

It's easy for Perl to parse such stuff. The regex to get those three values is '/(-?d+)s+(-?d+)s+(-?d+)/'.

Controlling the Roomba from Perl

On Mac OS X, like other Unixes, serial ports appear as ordinary files. And just like any other files, they can be read from and written to. Perl's whole reason for being is reading and writing files so it'll be a snap for it.

But wait, how do we set the serial parameters like baud rate and so on? Files don't have these kinds of attributes. That's where the program 'stty Starbucket mac os. ' comes in. Stty sets the various options on a 'terminal device' (aka serial port). Figuring out the magic stty incantation needed to let the serial port work with the Roomba is laborious so will just be presented here:

This command is issued by the 'roomba_init()' function in the Perl script before it opens the 'file' that is the serial port. Skate & date [ new demo] mac os.

Once the port/file is open, functions like 'roomba_drive()' and 'roomba_stop()'in the script just print to the open file descriptor. If you wanted to read the sensors, you would read from the file descriptor.

Converting Tilt Data to Roomba Commands

Roomba Rampage (Olivier Proulx) Mac OS

The tilt data is essentially two numbers that vary between -127 and +127. One number corresponds to back-n-forth tilt motion of the laptop while the other corresponds to left-right tilt. A simple linear function can convert between the tilt data space and the velocity/radius space the Roomba expects. This is the ‘proportional' mode of operation, where the degree of tilt affects the speed or angle of the Roomba.

The code implements two special cases of proportional control to make it easier to use:
– if laptop is flat (in the deadzone), send 'roomba_stop()'
– if only tilted left-right, send 'roomba_spinleft()' or 'roomba_spinright()'. Potatio mac os.

Roomba rampage (olivier proulx) mac os download

The tilt data is essentially two numbers that vary between -127 and +127. One number corresponds to back-n-forth tilt motion of the laptop while the other corresponds to left-right tilt. A simple linear function can convert between the tilt data space and the velocity/radius space the Roomba expects. This is the ‘proportional' mode of operation, where the degree of tilt affects the speed or angle of the Roomba.

The code implements two special cases of proportional control to make it easier to use:
– if laptop is flat (in the deadzone), send 'roomba_stop()'
– if only tilted left-right, send 'roomba_spinleft()' or 'roomba_spinright()'. Potatio mac os.

Another mode called 'fourway' or 'd-pad' mode turns the tilt data into a four-state switch: forward, backward, spinleft, spinright, sort of like an old Nintendo D-pad controller. It does this by defining a 'deadzone' in the center and only if you tilt in one direct enough to escape this zone does it count as a valid motion. In this mode, controlling the Roomba is easier but you can't get as precise of positioning.

Usage

To use roomba-tilt.pl, the only required argument is the path to the serial port the Roomba is connected to. This serial can either be a RS-232 serial tether or a Bluetooth adapter as shown in the video. The full usage is:

Running it in verbose mode is interesting because you can see the data sent from AMSTracker and the drive commands sent to the Roomba.

Roomba Rampage (olivier Proulx) Mac Os Catalina

Issues and Improvements

Roomba Rampage (olivier Proulx) Mac Os 11

As you play with AMSTracker or roomba-tilt.pl, you'll see how the tilt data will flop from +/-127 to -/+127. In roomba-tilt.pl, this causes the Roomba to go from making hard left to a hard right (or vice versa). The code currently doesn't attempt to smooth the data to eliminate these jumps. You could write a filter that does a little analysis on the data and if it does something unexpected (like the jump), it calms the data down before sending it to the Roomba.

Roomba Rampage (olivier Proulx) Mac Os 8

22 comments



broken image