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 25: Line 25:
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.  These instructions are found below.


* 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.
* 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.
Line 37: Line 37:
* 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 ==
Line 59: Line 59:
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.  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.
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 OR at /dev/ttyUSB0'''
'''The arduino's FTDI chip is a USB serial port, accessed at /dev/arduino1'''
This was set in some udev config file, and it corresponds to this arduino's FTDI chip serial number.
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.
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]
[http://spaz.org/~jake/robot-emc/robotpower6.pde | Arduino program as of May 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 96: Line 94:


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 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 125:
== 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.
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)