Editing Noise-Bot

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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:
:''Not to be confused with [[Noisebot]].''
Hereby known as "MC Hawking - The Wheelchair Robot"  
Hereby known as "MC Hawking - The Wheelchair Robot"  


UPDATE: MC Hawking has moved to [http://www.sudoroom.org sudoroom]!
Here's the beast: (old picture) http://spaz.org/~jake/robot-emc/DSCN9886.JPG
 
[[User:Azureviolin|Hao]] is working on an opensource robot project [http://www.dorabot.com DORA Project], and have already mount a robotic arm on Noise-Bot/McHawking, and he refers to it as "DoraBot".
 
== Photos ==
 
 
[[File:DoraBot_2012_08_25.jpg|thumb|center|550px|DoraBot on Aug.25,2012, [http://www.dorabot.com DORA Project]]]
[[File:Noise-bot-sideview-2011.jpg|thumb|center|350px|McHawking in 2011]]
[[File:20_Noisebot.jpg|thumb|center|550px|Old Picture]]


== Videos ==
Videos:
[http://www.youtube.com/watch?v=kJKXFENEDdE  rachel driving rachel]   
[http://www.youtube.com/watch?v=kJKXFENEDdE  rachel driving rachel]   


Line 25: Line 14:
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 <S>switch</S> is incase it goes crazy.  These instructions are found below.
* RTFI! Know how to engage / disengage wheel clutches, and where the power switch is incase it goes crazy.
 
* DO NOT UNPLUG THE ARDUINO IF THE WHEELCHAIR CONTROLS HAVE POWER AND THE CLUTCHES ARE ENGAGED.  THE ROBOT WILL MOVE AT THE HIGHEST SPEED IN A RANDOM DIRECTION.


* 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 37: Line 24:
* 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.  


* <S>'''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 </S>disengage the wheel clutches and push it home manually. [there is no longer a manual power switch for the drive.  jake is looking for a STOP button]
* '''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 <S>so you can get at the power switch.</S> DO NOT try to use your body to stop it, it's heavier and stronger than you are and it doesn't feel pain.
* 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.


== People who have worked on it ==
== People who have worked on it ==


* [[User:Jake|Jake]]
Jake
* Lilia
 
* [[User:Dr jesus|Dr. Jesus]]
Paul
* Evan
 
* [[User:Azureviolin|Hao]]
Lilia
* [[User:Flipzagging|Neil]]


== Hardware ==
== Hardware ==
Line 58: Line 44:
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'''


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.  All this is moot if you have not sent a "Pz" lately, which is the command to activate the wheelchair-power-enable relay.  It must be a capital-P followed by a lowercase z.  This command expires after 2000 milliseconds, so your software has to send it over and over or the power relay will click off and you won't go anywhere.  Read the latest version of robotpower?.pde.
[http://spaz.org/~jake/robot-emc/robotpower6.pde | Arduino program as of May 2011]
 
'''The arduino's FTDI chip is a USB serial port, accessed at /dev/arduino1 OR at /dev/ttyUSB0'''
This was set in some udev config file, and it corresponds to this arduino's FTDI chip serial number.
 
You can hopefully find the latest version of the robotpower arduino program in the home directory of mchawking.  This program is where things like low battery shutoff voltage, and the timeout period for motion commands, are set.
[http://spaz.org/~jake/robot-emc/robotpower8.pde | Arduino program as of September 2011]
 
Note that the Arduino program can't see the arduino's serial port (/dev/ttyUSB0) unless it is run by root.


[http://spaz.org/~jake/robot-emc/IMG_0602.JPG | Robot Arduino without DB25 yet]
[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.
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]
Line 83: Line 63:
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.''' The monitor is an [[Inexio]] touchscreen but we have not implemented the touchscreen function yet.
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 95: Line 75:
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.
 
As of September 2011 the latest motor-control firmware for the Arduino is here:
 
http://spaz.org/~jake/robot-emc/robotpower8.pde
 
'''As always, the latest software is actually on the robot, in ~mchawking/ or ~mchawking/trunk/ or ~mchawking/trunk/scripts/ etc..'''


=== Login ===
=== Login ===
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.
Line 143: Line 117:
The robot has been successfully field tested at a local convention.  The procedure to convert the robot for operation outside Noisebridge is:
The robot has been successfully field tested at a local convention.  The procedure to convert the robot for operation outside Noisebridge is:


* Connect to the Cisco Aironet 1220B wireless device behind the monitor with an RS232 to RJ45 cable, wired to the Cisco pinout, and set your computer's terminal to the appropriate baud rate and settings.  The following instructions assume familiarity with the programming of Cisco wireless devices through a serial connection.
* Log into wbr2 and say "copy nvram:outside-config nvram:startup-config", then "reload".
* Log into wbr2 and say "enable".  Enter the password.
* Say "copy nvram:outside-config nvram:startup-config", then "reload".
* Once wbr2 has restarted, there will be an 802.11a wireless network named "robots" you can associate to.
* Once wbr2 has restarted, there will be an 802.11a wireless network named "robots" you can associate to.
* Secure any loose items on the robot.  Put a garbage bag or something over the rest to protect connectors from splashes.
* Secure any loose items on the robot.  Put a garbage bag or something over the rest to protect connectors from splashes.
Line 151: Line 123:
* Charge the robot's batteries fully, just in case.
* Charge the robot's batteries fully, just in case.
* Power down the robot and move it to wherever it needs to go.  Follow the instructions under "local control" if you'll be driving.
* Power down the robot and move it to wherever it needs to go.  Follow the instructions under "local control" if you'll be driving.
* Once at the destination, if your computer has 802.11a (5.8GHz) wifi (many Macbook Pros have this), you can log into 172.30.0.50 over the "robots" wireless network to do whatever you need to do.
* Once at the destination, you can log into 172.30.0.50 over the "robots" wireless network to do whatever you need to do.


When ready to return:
When ready to return:
Line 160: Line 132:
* Power down the robot and move it back to 2169.  Do not do this in a hurry.  Take note of public transit instructions for wheelchair users BEFORE arriving at the station or stop.
* Power down the robot and move it back to 2169.  Do not do this in a hurry.  Take note of public transit instructions for wheelchair users BEFORE arriving at the station or stop.
* Once back at 2169, clean the robot.
* Once back at 2169, clean the robot.
* Log into wbr2 and say "enable".  Enter the password.
* Log into wbr2 and say "copy nvram:noisebridge-config nvram:startup-config", then "reload".
* Say "copy nvram:noisebridge-config nvram:startup-config", then "reload".




Line 172: Line 143:
# cd trunk/scripts/lilia/
# cd trunk/scripts/lilia/
# python noise-bot.py
# python noise-bot.py
[[Category:Pages with a Noisebridge Tiny URL]]
Please note that all contributions to Noisebridge are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see Noisebridge:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)