fig1 shows the general hardware scheme , employing a single mobile robot and two exemplary external sbdrl devices . a mobile robot ( 1 ), equipped with its own onboard camera ( 2 ), sends html files using the http protocol on telecommunications link ( 3 ) to a web browser running on remote internet site ( 4 ). in response to cgi data sent back from the user on web browser ( 4 ) to the cgi interface of the robot &# 39 ; s onboard web server , as well as the robot &# 39 ; s own onboard commands , the mobile robot ( 1 ) moves into close proximity with sbdrl enabled external devices , such as a external robotic arm ( 5 ) and a external camera ( 6 ). the mobile robot ( 1 ) uses sbdrl radio signals ( 7 ), ( 8 ) to discover the presence and functionality of the robotic arm ( 5 ) and camera ( 6 ). the robot relays information from its own onboard camera ( 2 ) and the external camera ( 6 ) to remote internet browser ( 4 ). the remote user may then direct the robot to send sbdrl signals to control the movement of external robotic arm ( 5 ). in one application , the external robotic arm might load objects onto the robot for subsequent transport elsewhere . fig2 shows the general structure of the software ( 1 ) onboard the robot . the robot &# 39 ; s computer processor is typically controlled by a multitasking operating system ( 2 ) ( usually a real - time operating system , or a variant of a general purpose operating system such as linux ), which either runs a separate web server software process ( 3 ), or else intrinsically has web server functionality as part of the operating system ( 3 ). the web server ( 3 ) is able to read html files ( 4 ) stored in the robot &# 39 ; s onboard memory , and transmit them via long - distance telecommunications link ( 5 ) and http protocol to remote web browser ( 6 ). web server ( 3 ) also has cgi interfaces ( 7 ). these cgi interfaces are capable of sending and receiving data from most or all of the other software processes running onboard the robot . also running on the robot &# 39 ; s operating system ( 2 ) are sbdrl interface software ( 8 ) to handle input / output ( 9 ) from the robot &# 39 ; s onboard sbdrl transceiver ( 10 ). this transceiver ( 10 ) is capable of establishing sbdrl radio links ( 11 ), ( 12 ) with external sbdrl devices ( 13 ), ( 14 ). additionally running on the robot &# 39 ; s operating system ( 2 ) are robotics control software ( rcs ) ( 15 ) which controls various robotics hardware such as motion control motors , onboard sensors , onboard mechanical manipulators , power management , and the like . also running ( 16 ) are additional java , perl , python , c , etc ., interpreters and compilers as needed to run various control instructions . in use , the robot &# 39 ; s web server ( 3 ) establishes contact over communications link ( 5 ) with remote internet browser ( 6 ). the robot &# 39 ; s web server ( 3 ) transmits html file ( 4 ) to remote browser ( 6 ), and receives back requests for additional web pages and cgi commands ( using either the get or post method ) from remote browser ( 6 ). the robot &# 39 ; s web server ( 3 ) directs the cgi commands through cgi interface ( 7 ) to various robotic programs or files , depending upon the robot &# 39 ; s state and the nature of the commands sent from the remote browser . remote browser commands that are essentially requests for additional web pages ( for example , a command to access a particular robotic function that has an interface on a different web page ) are handled directly by the robot &# 39 ; s onboard web server ( 3 ), which sends additional web pages from html file ( 4 ) back to remote browser ( 6 ). remote browser cgi commands for general robotics intelligence or additional web page functionality ( for example , to read from or update a robotic database ) are passed through cgi interface ( 7 ) to other programs ( e . g . database systems , such as sql servers , and the like ) ( 17 ) in the robot &# 39 ; s onboard memory , also running under operating system ( 2 ). other interpreters ( java , perl , etc ) may optionally run these other programs ( 17 ). ( 16 ) as needed . the robot &# 39 ; s interface with its local environment ( e . g . robotic movement , sensors , actuators , power , etc .) is primarily handled by rcs software ( 15 ). the robotic sbdrl ( input / output ) links are handled by the short - range digital radio interface software ( 8 ). these programs ( 15 ), ( 8 ) can either run directly from operating system ( 2 ), or through interpreter programs ( 16 ). the rcs software ( 15 ) in turn can look for supplemental instructions , scripts , algorithms , and the like , in robotic control files ( 18 ) in the robot &# 39 ; s onboard memory . the robotic sbdrl interface software can also look for supplemental instructions , scripts , algorithms and the like in sbdrl control files ( 19 ) in the robot &# 39 ; s onboard memory . in use , a remote browser command for robotic movement might initially result in server ( 3 ) sending a robotic movement interface web page ( 4 ) to remote internet browser ( 6 ). the remote internet user might then send back cgi commands requesting robotic movement back to server ( 3 ), which is passed through cgi interface ( 7 ) to rcs software ( 15 ). rcs software ( 15 ) then executes the command to alter the location of robot ( 20 ). the rcs software is optionally able to draw upon supplemental information stored in onboard robotic control file ( 18 ) to assist in the process . the rcs software ( 15 ) also passes information as to the results of the movement command back through cgi interface ( 7 ) to server ( 3 ), which updates web page ( 4 ) on remote browser ( 6 ) to give the user feedback on the success of the movement request . optionally , data from camera ( 21 ) ( or other sensors ) mounted onboard the robot are also sent back through rcs software ( 15 ), cgi interface ( 7 ), web server ( 3 ) to browser ( 6 ) to give the user an updated image of the robot &# 39 ; s view . a remote browser command to assess or modify the state of sbdrl devices local to the robot would be handled by one or more of the following . in one option , when robot ( 20 ) travels into range of the sbdrl devices ( 13 ), ( 14 ), the robot &# 39 ; s onboard digital radio transceiver ( 10 ) detects devices ( 13 ) and ( 14 ), and relays the information back through the sbdrl interface software ( 8 ). depending upon previously assigned instructions in sbdrl control file ( 19 ), the sbdrl interface software may be assigned to automatically query the registries of sbdrl devices ( 13 ) and / or ( 14 ) to determine their capabilities , and which of their functions are available for sbdrl controlled robotic use . sbdrl interface software ( 8 ) sends information as to the status of the sbdrl devices back through cgi interface ( 7 ) to web server ( 3 ), which , depending upon the status of html files ( 4 ) may update the remote browser ( 6 ) with information that the robot is within range of the local radio devices , and optionally give the local device status information . the remote internet user can then directly control the robot or the sbdrl devices as appropriate . alternatively , the sbdrl control instructions ( 19 ) may direct the sbdrl interface software ( 8 ) to process the sbdrl information in several alternative ways . if the standing orders in sbdrl control file ( 19 ) are to modify the state of sbdrl devices ( 13 ), ( 14 ) without requesting further input from remote internet site ( 6 ), then the processed output from ( 19 ) may be fed back to via the sbdrl interface software ( 8 ) to transceiver ( 10 ) to modify the state of sbdrl devices ( 13 ), ( 14 ). if the standing orders in ( 19 ) are to modify the state of the robot ( e . g . move in a different path , change the state of a robotic sensor , or activate an actuator ), without requesting further input from remote internet site ( 6 ), then the processed instructions from ( 19 ) may be fed back to the rcs software ( 15 ) to modify the state of robot ( 20 ). for example , there could be a standing order in ( 19 ) that if the robot receives a message from a local sbdrl equipped fire alarm that the environment was too hot , the robot could activate a previously assigned set of commands to move out of the area . if the standing orders in ( 19 ) are to automatically update an internal database ( 17 ) without requesting further internet controller input , then the processed output from sbdrl interface software ( 8 ) may be fed back to database software ( 17 ). for example , there could be a standing order in ( 19 ) that a robot patrol an area , and automatically save data from local external sbdrl equipped sensors into a log for later analysis . the standing orders stored in supplemental rcs control file ( 18 ) may be also be used in a manner similar to just described for sbdrl control file ( 19 ). fig3 shows a diagram of a mobile robot ( 1 ) that may be constructed based upon a battery powered chassis with motorized wheels ( 2 ), controlled by an axis etrax 100 developer board ( 3 ) ( axis communication ab , lund , sweden ). this developer board , which may be used as the main robotic control unit , contains an etrax 100 32 bit central processor unit , 2 megabytes flash memory , and 8 megabytes ram . the software on this board runs using an embedded linux operating system ( uclinux based on 2 . 0 . 38 linux ). the developer board is connected to an ericcson bluetooth module ( 4 ) by a rs232 serial port , driven by axis bluetooth driver software . the developer board is additionally connected to a wireless internet connection ( 5 ) ( using a sprint pcs cell phone ( 6 )) by a second rs232 serial port , driven by the onboard axis “ boa ” web server software . the robot &# 39 ; s motorized wheels ( 2 ) are controlled through an interface to the axis developer board &# 39 ; s parallel port ( 3 ). the robot additionally has an onboard internet capable digital camera ( axis 2100 network camera ( 7 )) that can take video pictures of the robots surroundings , compress them , and process the results into an html based web page via the camera &# 39 ; s own separate onboard computer processor . the axis 2100 network camera ( 7 ) is interfaced to the axis developer board ( main robotic cpu ) board ( 3 ) via an ethernet connection ( 8 ). the web server onboard the axis developer board , which has the main robotic cpu , is given overall control of the system . it is pre - programmed with html code ( analogous to software file ( 4 ) from fig . ( 2 )) that initially responds to remote internet web browser web - page requests by sending a general “ index . html ” file that gives the robot &# 39 ; s name , and status ( power levels , bluetooth devices in - range , etc . as updated by cgi data ), and a menu of possible user actions . in this design demonstration , commands from the remote internet web browser ( 8 ) to control sbdrl ( bluetooth ) devices are passed through the robot &# 39 ; s web server cgi interface to a bluetooth input / output module , built into the axis development board . this bluetooth command is interpreted by the input / output module , and in - turn is directed to a bluetooth transceiver ( 4 ) mounted on the robot . in this simple design example , the bluetooth transceiver onboard the robot and the bluetooth transceiver ( 10 ) onboard the external sbdrl device ( 11 ) may be commanded to go into a bluetooth transmission state ( 9 ) that simulates a direct rs232 connection . this makes the two devices act as if they were directly connected by standard rs232 cable . with this scheme , an external bluetooth device ( 11 ) can be commanded to beep by simply sending a standard ascii “ bell ” character . user requests for robotic movement are initiated by remote browser ( 8 ) sending a url request for a robotic movement web page . this causes the server ( 3 ) to send a new web page to the user &# 39 ; s browser ( 8 ). this page is divided into frames , one frame containing the robot movement control forms and bluetooth device interface forms , and a second frame containing a url link to the axis 2100 network camera , which sends picture data independently . the robotic movement web page contains html forms to allow direct user control over the robot &# 39 ; s motion , and additional html forms to allow the user to upload optional , prewritten , scripts to control the robot automatically for short periods of time . normally , user requests for immediate and direct control are sent back to the robot &# 39 ; s onboard web server ( 3 ), where they are passed though the server &# 39 ; s cgi interface to a simple robotic control software ( rcs ) program . the rcs program is written as a cgi compliant “ c ” program executing in the / cgi - bin directory of the robot &# 39 ; s main server . this program translates motion requests ( forwards , backward , left turn and right turn ) into commands that are sent out through the axis board &# 39 ; s parallel port ( 3 ) to the robot &# 39 ; s motion control system ( 2 ). the remote user also has the option of uploading one or more script files , analogous to files ( 18 ) and ( 19 ) from fig2 that contain information ( scripts ) needed to run the rcs program and bluetooth interface program automatically . these script files may contain instructions to automatically query sbdrl devices as to their status , and automatically to upload commands to specific sbdrl devices . the script files may also contain instructions to control robotic movement in response to data downloaded from sbdrl devices , from data obtained directly from the robotic sensors , or both . these scripts may be anything from simple text files to complex programs . an example of a simple robotic and sbdrl automatic control script file , written in xml format , is shown below : when the remote user uploads this file , and commands that it be executed , the robot will automatically move forward 10 spaces , turn right 90 degrees , move an additional five spaces , and wait 10 seconds . it will then attempt to make contact with a bluetooth device . if it discovers a bluetooth compliant device & lt ; yesbluetooth & gt ;, it will send it a “ beep ” command for two seconds , and then turn off the remote device &# 39 ; s beep . if it does not discover such a device & lt ; nobluetooth & gt ;, it will spin in a circle . when either action is complete , the robot will then return to its original location . as previously mentioned , in this design example , remote internet users also can see what the robot is doing . to allow the remote user to see what the robot sees , the html form served by the robot &# 39 ; s onboard web server directs the remote user &# 39 ; s browser to divide the browser screen into frames , and for the video frame , get video data from a different url controlled by second web server embedded in the axis 2100 network camera itself . the video computer onboard the axis 2100 camera handles user video requests , captures the video , and compresses it for internet transmission itself , without requiring additional processing from the main robotic computer onboard the axis developer board that controls both the robot &# 39 ; s web server and the other robotic control functions . this serves to illustrate that the robotic system taught here need not contain only one computer . rather , the computer powering the robot &# 39 ; s web server , which is used as the primary input - output control means of the robot , can off - load computationally intensive processing tasks to secondary computer processors onboard the robot , as necessary .