Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
PiWars V2.0 (2016) (alexellis.io)
50 points by alexellisuk on Feb 11, 2017 | hide | past | favorite | 14 comments


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.


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


> So I brought it along as a spectator and had some fun dragging chairs across the floor and playing with the cones.


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)


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.


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.


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


See also: Adafruit 16-channel i2c Servo Driver (was also very popular at the time)


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


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.


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-Carpeted-Su...


> 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.


Or for hard wood install some good quality casters?


Make the robots like the Kiva bots and have a liftable platform. That way, they only need to support the weight of the furniture, not the people.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: