Editing Noise-Bot
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
Hereby known as "MC Hawking - The Wheelchair Robot" | Hereby known as "MC Hawking - The Wheelchair Robot" | ||
Here's the beast: http://spaz.org/~jake/robot-emc/DSCN9886.JPG | |||
[http://www.youtube.com/watch?v=R-5oosZ_wq4 | Videos: | ||
[http://www.youtube.com/watch?v=kJKXFENEDdE| rachel driving rachel] | |||
[http://www.youtube.com/watch?v=XI_19brMqUU| attacks a wheelchair] | |||
[http://www.youtube.com/watch?v=R-5oosZ_wq4| driving around noisebridge] | |||
== IMPORTANT! == | == IMPORTANT! == | ||
Line 25: | Line 12: | ||
Improperly used, the robot can destroy itself, its suroundings, and run you over. Please know what you are doing and don't be afraid to ask questions. | Improperly used, the robot can destroy itself, its suroundings, and run you over. Please know what you are doing and don't be afraid to ask questions. | ||
* RTFI! Know how to engage / disengage wheel clutches, and where the power | * RTFI! Know how to engage / disengage wheel clutches, and where the power switch is incase it goes crazy. | ||
* Always warn humans nearby that the robot could lose control and run them over. | * Always warn humans nearby that the robot could lose control and run them over. | ||
Line 34: | Line 19: | ||
* if someone is sitting in the chair when it is on, warn them that the robot could go crazy and kill them, it has almost happened. | * if someone is sitting in the chair when it is on, warn them that the robot could go crazy and kill them, it has almost happened. | ||
* always make sure it's plugged into the battery charger, and that the charger is plugged in and powered on. The batteries are throwaways and barely hold a charge as is, so we need to keep it on the charger. | |||
* We have not implemented even basic safety shutoffs, so you should be watching it all the time. It will very happily drive through its operator and the wall without stopping. | * We have not implemented even basic safety shutoffs, so you should be watching it all the time. It will very happily drive through its operator and the wall without stopping. | ||
* | * '''If it appears to be getting out of hand, the power switch is just behind the joystick, where you turned it on.''' This will power down the motors and stop it where it is immediately, with the brakes on. At this point you can disconnect the parallel-port interface and drive it home with the joystick, or disengage the wheel clutches and push it home manually. | ||
* If it REALLY IS getting out of hand, use furniture to try to stop its movement so you can get at the power switch. DO NOT try to use your body to stop it, it's heavier and stronger than you are and it doesn't feel pain. | |||
== Hardware == | == Hardware == | ||
Line 58: | Line 36: | ||
An Arduino has been added to monitor battery voltage, and has the ability to turn off power to everything except itself and the wheelchair joystick (but that is coming soon). If the battery voltage drops below 18 volts for 25 consecutive seconds, the Arduino will turn off the computer until the batteries go above 24 volts - when the charger is hooked up. | An Arduino has been added to monitor battery voltage, and has the ability to turn off power to everything except itself and the wheelchair joystick (but that is coming soon). If the battery voltage drops below 18 volts for 25 consecutive seconds, the Arduino will turn off the computer until the batteries go above 24 volts - when the charger is hooked up. | ||
There is also a DB25F connector wired to the Arduino so that the wheelchair's joystick interface board can plug into the Arduino instead of the PC parallel port. It is wired so that the four directions connect to four PWM-capable outputs of the Arduino. | There is also a DB25F connector wired to the Arduino so that the wheelchair's joystick interface board can plug into the Arduino instead of the PC parallel port. It is wired so that the four directions connect to four PWM-capable outputs of the Arduino. | ||
The Arduino program is written to watch for direction commands sent by the computer through the serial interface as a two-byte sequence. Case-sensitive F B L R for the four directions, followed by a byte corresponding to the magnitude of thrust in that direction. The left-right axis is independant of the forward-backward axis. To stop, send SS (Capital S twice). All direction commands expire after one second and so must be re-sent often enough to prevent auto-cancellation. | |||
'''The arduino's FTDI chip is a USB serial port, accessed at /dev/arduino1''' | |||
[http://spaz.org/~jake/robot-emc/robotpower5.pde| Arduino program as of April 2011] | |||
[http://spaz.org/~jake/robot-emc/IMG_0602.JPG| Robot Arduino without DB25 yet] | |||
The battery charger consists of a voltage-regulated power-supply connected to the battery pack through a large Diode. The robot has an AC power plug mounted on a bracket in between the front wheels and facing foward. There is an electrical outlet mounted on a wooden bracket at the appropriate height for electrical docking. There is a USB camera (with built-in LED lights) on the robot which allows for visual alignment of the electrical connection. In the future, the robot will be able to plug itself in by driving up to its special socket, so that the onboard computer does not have to be shut down or manually plugged into mains AC to avoid draining the batteries. By that point the computer will have the ability to power-up the wheelchair electronics, so that the robot can be summoned from afar at anytime, without a human present to enable power to the DC motor subsystem by flipping the swtich. | |||
There is a computer (separate from the wheelchair controller which technically has a computer in it) which is in a stamped aluminum case just like the media server. It uses a model [http://spaz.org/~jake/robot-emc/MS-9642-Manual.pdf| MS-9642] mini-motherboard and a [http://www.mini-box.com/M3-ATX-DC-DC-ATX-Automotive-Computer-car-PC-Power-Supply?sc=8&category=981| Mini-Box M3-ATX power supply] | |||
There is a computer (separate from the wheelchair controller which technically has a computer in it) which is in a stamped aluminum case just like the media server. It uses a model [http://spaz.org/~jake/robot-emc/MS-9642-Manual.pdf | MS-9642] mini-motherboard and a [http://www.mini-box.com/M3-ATX-DC-DC-ATX-Automotive-Computer-car-PC-Power-Supply?sc=8&category=981 | Mini-Box M3-ATX power supply] | |||
The box is currently powered by a custom voltage regulator made by jake. It accepts up to 40 or so volts, but will never deliver more than 23 to the M3-ATX which is hard-limited to 25 volts. If the voltage is at or below 23 volts, its FETs are in full conduction and there is zero dropout. Once on, the M3-ATX will keep the computer running unless voltage goes below 7 volts, at which point the 24-volt battery array of the wheelchair is being seriously damaged. | The box is currently powered by a custom voltage regulator made by jake. It accepts up to 40 or so volts, but will never deliver more than 23 to the M3-ATX which is hard-limited to 25 volts. If the voltage is at or below 23 volts, its FETs are in full conduction and there is zero dropout. Once on, the M3-ATX will keep the computer running unless voltage goes below 7 volts, at which point the 24-volt battery array of the wheelchair is being seriously damaged. | ||
Line 83: | Line 55: | ||
Sensors have been installed on the motor which allow the computer to track movement and speed. An old ball-mouse has been disassembled and its sensors mounted on wires, and these sensors were placed at the open end of the drive motors. An optical interruptor is attached to the end of the motors' driveshafts, so the "mouse" reports movement on the x and y axes of the mouse when the left and right wheelmotors turn. The "mouse" is DB9 serial, and is seen by the computer as a serial accessory rather than as an actual Human Interface Device to move a mouse cursor (this would not be the case if a USB serial adaptor were used). The serial port corresponding to this "mouse" (which uses standard serial mouse protocol to report "movement") is '''/dev/odometry''' as set in udev config files. | Sensors have been installed on the motor which allow the computer to track movement and speed. An old ball-mouse has been disassembled and its sensors mounted on wires, and these sensors were placed at the open end of the drive motors. An optical interruptor is attached to the end of the motors' driveshafts, so the "mouse" reports movement on the x and y axes of the mouse when the left and right wheelmotors turn. The "mouse" is DB9 serial, and is seen by the computer as a serial accessory rather than as an actual Human Interface Device to move a mouse cursor (this would not be the case if a USB serial adaptor were used). The serial port corresponding to this "mouse" (which uses standard serial mouse protocol to report "movement") is '''/dev/odometry''' as set in udev config files. | ||
An LCD monitor has been mounted permanently as the seatback. '''The ON/OFF switch for the monitor and its built-in amplified speaker-system is a pushbutton switch on the left (as you look at it) "shoulder" of the robot. Sometimes the speakers enter a feedback loop and power to the screen should be shut off to cease this irritation.''' | An LCD monitor has been mounted permanently as the seatback. '''The ON/OFF switch for the monitor and its built-in amplified speaker-system is a pushbutton switch on the left (as you look at it) "shoulder" of the robot. Sometimes the speakers enter a feedback loop and power to the screen should be shut off to cease this irritation.''' | ||
A robot arm made of mostly aluminum and animated by air-cylinders was fitted to the robot, but few electronic valves and no air compressor or tank have been acquired. Someone will have to invest time and energy to get the arm to do more than make the thing look more menacing. As of 11/15/2010 the arm was removed to make the robot more wieldy/less unwieldy. | A robot arm made of mostly aluminum and animated by air-cylinders was fitted to the robot, but few electronic valves and no air compressor or tank have been acquired. Someone will have to invest time and energy to get the arm to do more than make the thing look more menacing. As of 11/15/2010 the arm was removed to make the robot more wieldy/less unwieldy. | ||
Line 91: | Line 63: | ||
== Software == | == Software == | ||
The PC is running a stock Ubuntu with PyParallel being used by the controller program to access the parallel port. All the software from the home directory as of 11/15/ | The PC is running a stock Ubuntu with PyParallel being used by the controller program to access the parallel port. All the software from the home directory as of 11/15/2010 is here: | ||
http://spaz.org/~jake/robot-emc/ | http://spaz.org/~jake/robot-emc/ | ||
As of April 2011 the software has been moved around and a lot of projects are in the works. Contact Lilia Kai at gmail or Jake at spaz if you want to get involved in reading or writing programming for the robot. | As of April 2011 the software has been moved around and a lot of projects are in the works. Contact Lilia Kai at gmail or Jake at spaz dot org if you want to get involved in reading or writing programming for the robot. | ||
=== Login === | === Login === | ||
Line 111: | Line 77: | ||
The embedded PC is using a '''Cisco Aironet 1220B''' which was hardware-hacked by Jake to accept power from the ATX power supply of the computer. This consists of 3.3V and 5.0V which, plus ground, come into it with a custom three-terminal connector. A '''Generic Realtek USB 802.11b''' interface, which is sub-excellent, is also available in case the Cisco is not working or if the robot needs to access an 802.11b network. | The embedded PC is using a '''Cisco Aironet 1220B''' which was hardware-hacked by Jake to accept power from the ATX power supply of the computer. This consists of 3.3V and 5.0V which, plus ground, come into it with a custom three-terminal connector. A '''Generic Realtek USB 802.11b''' interface, which is sub-excellent, is also available in case the Cisco is not working or if the robot needs to access an 802.11b network. | ||
There's a Cisco Aironet 1220B named wbr2 on the wheelchair, which associates to a matching Cisco 1220B named wbr1 at 2169 Mission. They use 802.11a to communicate on a dedicated channel. They use the default username and password for that platform. The embedded PC uses its ethernet port '''eth1''' to talk to the Noisebridge network via a connection to wbr2's ethernet port. | |||
The embedded PC is configured from '''/etc/networks/interfaces''' Also, Network-Manager which is the gui-compatible 21st century newschool network configuration system is been pushed to the side, possibly for good. The embedded PC is now configured to find the wireless network called '''noisebridge''' and take the internal IP below. | The embedded PC is configured from '''/etc/networks/interfaces''' Also, Network-Manager which is the gui-compatible 21st century newschool network configuration system is been pushed to the side, possibly for good. The embedded PC is now configured to find the wireless network called '''noisebridge''' and take the internal IP below. | ||
Line 120: | Line 86: | ||
172.30.0.50 | 172.30.0.50 | ||
<S>Its ethernet port is using DHCP at the moment.</S> | |||
=== Static world IP address === | |||
For those not inside the noisebridge internal network, a '''static IP''' from sonic.net has been assigned. The '''static IP''' is | |||
REDACTED | |||
=== Access from outside 2169 Mission === | === Access from outside 2169 Mission === | ||
Line 133: | Line 107: | ||
== Local Operation == | == Local Operation == | ||
The electric wheelchairs' controller brain will not allow movement unless the joystick is at rest for a second when power is switched on. If the computer has not initialized the parallel port to the "stop" bitpattern, and the switch is flipped on, the green LED will flash endlessly because it thinks you are leaning on the joystick and don't intend to do so. | '''The electric wheelchairs' controller brain will not allow movement unless the joystick is at rest for a second when power is switched on. If the computer has not initialized the parallel port to the "stop" bitpattern, and the switch is flipped on, the green LED will flash endlessly because it thinks you are leaning on the joystick and don't intend to do so'''. | ||
The drive-wheels have clutches which can be disengaged from their motors (and brakes) by pressing a button and rotating a collar until it can be pulled outwards. When the clutches are disengaged, the robot can be pushed around like a shopping cart, and the motors can be activated without actually causing movement. Sometimes the robot must be pushed forward or backward in order to engage or disengage the wheel clutches, because they are like gears and only fit together in some positions. | The drive-wheels have clutches which can be disengaged from their motors (and brakes) by pressing a button and rotating a collar until it can be pulled outwards. When the clutches are disengaged, the robot can be pushed around like a shopping cart, and the motors can be activated without actually causing movement. Sometimes the robot must be pushed forward or backward in order to engage or disengage the wheel clutches, because they are like gears and only fit together in some positions. | ||
'''Disengaging the clutches before testing movement software is highly recommended, as you will be able to see the motors trying to run you over without the robot being able to actually do it.''' This is like taking the laser off of Johnny Five before sending him to the lightning-prone recharging booth. | '''Disengaging the clutches before testing movement software is highly recommended, as you will be able to see the motors trying to run you over without the robot being able to actually do it.''' This is like taking the laser off of Johnny Five before sending him to the lightning-prone recharging booth. | ||
=== Autonomous Behaviors === | === Autonomous Behaviors === | ||
==== Face Following ==== | ==== Face Following ==== | ||
# Switch on monitor & | # Switch on monitor & wireless keyboard. | ||
# Switch on wheelchair | # Switch on wheelchair and | ||
# As user mchawking, open a terminal window in home directory. | # As user mchawking, open a terminal window in home directory. | ||
# | # ./botsetup.sh (you may need the password) | ||
# cd | # cd mchawking/scripts/lilia/ | ||
# python noise-bot.py | # python noise-bot.py | ||