
PiWars V2.0 (2016) - alexellisuk
http://blog.alexellis.io/piwars-v2-0/
======
Animats
Not seeing the furniture-moving part there.

About 20 years ago, somebody built a pair of robots which could move
furniture. They were little forklifts which could cooperate. With one at each
end of a couch or large object, they could lift and move things much bigger
than the robots. Good idea, but too expensive at the time to get out of the
lab. Today, that could work.

It was done with six axes of force sensing on the forks, and minimal
communication. Both ends would get into a balanced lift position and push a
little bit towards the other end. Then, the master end would do most of the
planning and control. The other end just followed by maintaining the force
situation - balanced lift and a little push towards the master end.

This would be a nice project today. Maybe even useful. Think of the Kiva
platform with a forklift attachment.

~~~
Pica_soO
It sounds like a good idea, until you trip over the rearranged furniture in
the dark, in some apartment you thought you knew..

sudo apt-get instyell toe-holding-curses

------
ChuckMcM
It looks like a fun project and it was awesome that you got on the cover of
the magazine! However, this was unexpected: _" In my PiWars 1.0 robot I used
the RPIO.PWM library to generate PWM pulses through software and the PI's DMA
interface. This library has sadly been abandoned by the author - from what I
have seen on the Github issue tracker a lot of work would be required to
support the Pi2."_

I understand the appeal of DRY* and OPC* but doing PWM on the Pi (1, 2, or 3)
is pretty straightforward when you read the code. It does require that you
learn how to actually program the Pi at a much deeper way than you can with
sticking to other people's Python modules but isn't that the point? Learning
how to do this stuff?

* DRY (Don't Repeat Yourself), OPC (Other People's Code)

~~~
alexellisuk
The original library used DMA to create a reliable signal to drive both motor
drivers and servos (the servos are more picky)

The alternatives at the time did not use DMA and so an Arduino is often paired
with a Pi by the community to generate hardware quality signals.

I'm not sure what you're getting at re: DRY/OPC. Are you aware that software
PWM has issues especially when coupled with servos it produces judder.

~~~
ChuckMcM
I am aware that hardware generated servo signals are preferable to software
generated ones. I'm also aware that the Pi2 and Pi3 are capable of creating
such signals even more effectively than the original Pi.

So when you came up against this challenge, the original library doesn't work
on the Pi and the author had moved on to other things you had two choices;
give up on that or figure out how to make it work.

Related was another conversation I was in where the other party was unable to
achieve their object on the Pi because "they Googled it and nobody has done
it."

And as a spectator its always a bit sad and disappointing when people stop
there.

~~~
alexellisuk
I tried a few options and made a decision to use hardware PWM. If you're in
the same position that I was in > 12 months ago and need to drive servos and
motors then by all means give software PWM a shot and please let us know what
the results are like.

Also don't underestimate the complexity of the changes needed to fix the DMA
library - there were several long threads about it. In fact browsing the repo
now there may be signs of renewed activity -
[https://github.com/metachris/RPIO/issues](https://github.com/metachris/RPIO/issues)

------
alexellisuk
If people are interested, I've now found the robot with a year's worth of dust
on it and copied the code from its SD card that drives the Python side of
things. (Blog also updated)

> Update: 20th Feb, 2017

> Python code is now available at
> [https://github.com/alexellis/wild_robot](https://github.com/alexellis/wild_robot)

------
Roritharr
Nice. I actually put some thought into this lately. I would like to be able to
redecorate my room digitally, preferably via some voice command. "Alexa,
rearrange for Movie Night please."

The idea was to put every piece of furniture on little platforms that can be
driven around. The costs are quite prohibitive, especially for couches and
other furniture that have to carry quite a load, the Mecanum Wheels on
Aliexpress that can carry >100kg are very expensive and too large for my
taste. If anyone has a better idea how to actually make this happen, i'd love
to hear some ideas.

~~~
gjkood
If you have carpeted floors, you can use those little teflon disks that you
insert under your furniture legs. Once you have all the legs on the teflon
disks, its quite easy to push them around.

No need of lifting heavy furniture. You only have to push. Of course the
traction of your robot wheels should be greater than that of the furniture
laden disks.

I am not sure if you will have the same performance on wooden or other
flooring though.

[https://www.amazon.com/Reusable-Furniture-Movers-
including-s...](https://www.amazon.com/Reusable-Furniture-Movers-including-
surfaces/dp/B001WAK5VQ/ref=sr_1_1?ie=UTF8&qid=1486858218&sr=8-1&keywords=furniture+moving+disks)

[https://www.amazon.com/Reusable-Furniture-Movers-Carpeted-
Su...](https://www.amazon.com/Reusable-Furniture-Movers-Carpeted-
Surfaces/dp/B001W6Q4VA/ref=sr_1_2?ie=UTF8&qid=1486858218&sr=8-2&keywords=furniture+moving+disks)

~~~
mschuster91
> If you have carpeted floors, you can use those little teflon disks that you
> insert under your furniture legs. Once you have all the legs on the teflon
> disks, its quite easy to push them around.

Well... you're bound to running (or bumping) into problems when you have...
physical activity on the couch. You'd need some way of anchoring e.g. a couch
so that it doesn't move around when not desired.

