Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

Automation, Robotics?

 [1/16] from: sharriff:aina:med-iq at: 7-Mar-2001 11:04


Hi guys! Anyone with experience in robotics or microcontrollers in REBOL? Best regards Sharriff Aina

 [2/16] from: robbo1mark::aol::com at: 7-Mar-2001 7:12


Sharriff, Although I've no direct experience in this field, microcontrollers & robotic devices generally require manipulating bit values or placing bit values in specific addresses or ports, something that I'm not sure REBOL is designed with in mind, Forth language might be more appropriate in this instance, as it is smaller & closer to the metal. Mark Dickson In a message dated Wed, 7 Mar 2001 6:17:15 AM Eastern Standard Time, [Sharriff--Aina--med-iq--de] writes: << Hi guys! Anyone with experience in robotics or microcontrollers in REBOL? Best regards Sharriff Aina

 [3/16] from: fsievert:uos at: 7-Mar-2001 13:27


Hi! Yes, I've written a Rebol-Protocoll and Dialect to control and program the LEGO Cybemaster Roboter. --> http://proton.cl-ki.uni-osnabrueck.de/REBOL/lego.r For more information/documentation -> mail CU, Frank On Wed, 7 Mar 2001 [Sharriff--Aina--med-iq--de] wrote:

 [4/16] from: sharriff:aina:med-iq at: 7-Mar-2001 12:58


Hi Mark! Thanks for the reply, actually I donīt want to program anything low-level. There are several controllers that can be programmed in BASIC dialects, dialecting these dialects in REBOL could be an advantage. Another aspect is using a Mini-Pc board (386or 486 INTEL) and REBOL on a FLASH disk-->Embedded REBOL!. Then Iīll use Rebol to control the the SERIAL/PARALLEL Ports. Regards Sharriff Aina [Robbo1Mark--ao] l.com An: <[rebol-list--rebol--com]> Gesendet von: Kopie: rebol-bounce@ Thema: [REBOL] Re: Automation, Robotics? rebol.com 07.03.01 12:12 Bitte antworten an rebol-list Sharriff, Although I've no direct experience in this field, microcontrollers & robotic devices generally require manipulating bit values or placing bit values in specific addresses or ports, something that I'm not sure REBOL is designed with in mind, Forth language might be more appropriate in this instance, as it is smaller & closer to the metal. Mark Dickson In a message dated Wed, 7 Mar 2001 6:17:15 AM Eastern Standard Time, [Sharriff--Aina--med-iq--de] writes: << Hi guys! Anyone with experience in robotics or microcontrollers in REBOL? Best regards Sharriff Aina

 [5/16] from: sharriff:aina:med-iq at: 7-Mar-2001 13:13


Thanks Frank! Itīll take me ages to understand your script, but itīs a good starting point for me. Sharriff Aina Frank Sievertsen An: <[rebol-list--rebol--com]> <[fsievert--uos] Kopie: .de> Thema: [REBOL] Re: Automation, Robotics? Gesendet von: rebol-bounce@ rebol.com 07.03.01 12:27 Bitte antworten an rebol-list Hi! Yes, I've written a Rebol-Protocoll and Dialect to control and program the LEGO Cybemaster Roboter. --> http://proton.cl-ki.uni-osnabrueck.de/REBOL/lego.r For more information/documentation -> mail CU, Frank On Wed, 7 Mar 2001 [Sharriff--Aina--med-iq--de] wrote:

 [6/16] from: dvydra2:yah:oo at: 7-Mar-2001 8:09


REBOL does use more memory than other solutions, but memory is getting quite cheap, so I think there is a great future in this market. Regards, David --- [Sharriff--Aina--med-iq--de] wrote:
> Hi Mark! > Thanks for the reply, actually I donīt want to
<<quoted lines omitted: 58>>
> [rebol-request--rebol--com] with "unsubscribe" in the > subject, without the quotes.
===== please reply to: [david--vydra--net]

 [7/16] from: bo:rebol at: 7-Mar-2001 11:42


Not yet! My son and I have a robot partially built and we are planning on controlling it with an Amiga 500 using the serial port and REBOL. We only work on it 60 minutes/week, so it may be a while before we get to that point. -Bo On 7-Mar-2001/11:04:25, [Sharriff--Aina--med-iq--de] wrote:
>Hi guys! >Anyone with experience in robotics or microcontrollers in REBOL?
<<quoted lines omitted: 4>>
>[rebol-request--rebol--com] with "unsubscribe" in the >subject, without the quotes.
-- Bohdan "Bo" Lechnowsky REBOL Adventure Guide REBOL Technologies 707-467-8000 (http://www.rebol.com) The Official Source for REBOL Books (http://www.REBOLpress.com)

 [8/16] from: ryanc:iesco-dms at: 7-Mar-2001 14:43


I have been working on an addressable serial controlled stepper motor controller during the last few weeks. It uses the pic12c508. It will control 1 stepper motor and provide two I/O lines. You will be able to run multiple controllers off a single rs-232 line. Maybe some a/d capability, if I have room--only 512 bytes of rom. Also if there is room, optional encoded positioning. Of course I will be making some control routines for rebol. Being a multiprocessed system, it should excel in situations where you need to control several motors simultaniously and where specific stepping speeds are required. I designed it so I can build an inexpensive CNC style mill. I have been working on it only a few hours a week, at least another month or so before I am done. I possibly might build other devices based on this archetecture. --Ryan [Sharriff--Aina--med-iq--de] wrote:
> Hi guys! > Anyone with experience in robotics or microcontrollers in REBOL?
<<quoted lines omitted: 4>>
> [rebol-request--rebol--com] with "unsubscribe" in the > subject, without the quotes.
-- Ryan Cole Programmer Analyst www.iesco-dms.com 707-468-5400 I am enough of an artist to draw freely upon my imagination. Imagination is more important than knowledge. Knowledge is limited. Imagination encircles the world. -Einstein

 [9/16] from: sharriff:aina:med-iq at: 8-Mar-2001 7:11


Sounds great Ryan! is it very complicated? Best regards Sharriff Aina Ryan Cole <[ryanc--iesco-] An: [rebol-list--rebol--com] dms.com> Kopie: Gesendet von: Thema: [REBOL] Re: Automation, Robotics? rebol-bounce@ rebol.com 07.03.01 22:43 Bitte antworten an rebol-list I have been working on an addressable serial controlled stepper motor controller during the last few weeks. It uses the pic12c508. It will control 1 stepper motor and provide two I/O lines. You will be able to run multiple controllers off a single rs-232 line. Maybe some a/d capability, if I have room--only 512 bytes of rom. Also if there is room, optional encoded positioning. Of course I will be making some control routines for rebol. Being a multiprocessed system, it should excel in situations where you need to control several motors simultaniously and where specific stepping speeds are required. I designed it so I can build an inexpensive CNC style mill. I have been working on it only a few hours a week, at least another month or so before I am done. I possibly might build other devices based on this archetecture. --Ryan [Sharriff--Aina--med-iq--de] wrote:
> Hi guys! > Anyone with experience in robotics or microcontrollers in REBOL?
<<quoted lines omitted: 4>>
> [rebol-request--rebol--com] with "unsubscribe" in the > subject, without the quotes.
-- Ryan Cole Programmer Analyst www.iesco-dms.com 707-468-5400 I am enough of an artist to draw freely upon my imagination. Imagination is more important than knowledge. Knowledge is limited. Imagination encircles the world. -Einstein

 [10/16] from: sharriff:aina:med-iq at: 8-Mar-2001 7:25


Cool! are you using self tailored or standard off the shelf components? Best regards Sharriff Aina [bo--rebol--com] Gesendet von: An: [rebol-list--rebol--com] rebol-bounce@ Kopie: rebol.com Thema: [REBOL] Re: Automation, Robotics? 07.03.01 18:42 Bitte antworten an rebol-list Not yet! My son and I have a robot partially built and we are planning on controlling it with an Amiga 500 using the serial port and REBOL. We only work on it 60 minutes/week, so it may be a while before we get to that point. -Bo On 7-Mar-2001/11:04:25, [Sharriff--Aina--med-iq--de] wrote:
>Hi guys! >Anyone with experience in robotics or microcontrollers in REBOL?
<<quoted lines omitted: 4>>
>[rebol-request--rebol--com] with "unsubscribe" in the >subject, without the quotes.
-- Bohdan "Bo" Lechnowsky REBOL Adventure Guide REBOL Technologies 707-467-8000 (http://www.rebol.com) The Official Source for REBOL Books (http://www.REBOLpress.com)

 [11/16] from: dlhawley:home at: 8-Mar-2001 11:11


I'm working on a prototype home data acquisition/control device. It currently runs on a 486 class SBC onder QNX but only because I don't have a lower power board lying around. It drives a serial LCD and serial i/o pretty easily. The REBOL e-mail stuff is pretty handy as is the serial port (exp) control. The biggest problem I've had developing is is the silly license expiration gaps on the experimental releases. Dave Previously, you ([Sharriff--Aina--med-iq--de]) wrote:
> Hi guys! > > Anyone with experience in robotics or microcontrollers in REBOL? >
-- David L. Hawley D.L. Hawley and Associates 1.503.274.2242 Software Engineer [David--L--Hawley--computer--org]

 [12/16] from: nhytro:compuserve at: 9-Mar-2001 1:11


Sounds like the direction that Iīm trying to get into, I would appreciate it , naturally if youīve got the time, if you could explain the basic steps I would need to take in controlling devices over the serial port on a 80x86 processor( hardware and software) Best regards Sharriff Message text written by INTERNET:[rebol-list--rebol--com]
>'m working on a prototype home data acquisition/control device. It
currently runs on a 486 class SBC onder QNX but only because I don't have a lower power board lying around. It drives a serial LCD and serial i/o pretty easily. The REBOL e-mail stuff is pretty handy as is the serial port (exp) control. The biggest problem I've had developing is is the silly license expiration gaps on the experimental releases. Dave Previously, you ([Sharriff--Aina--med-iq--de]) wrote:
> Hi guys! > > Anyone with experience in robotics or microcontrollers in REBOL? >
-- David L. Hawley D.L. Hawley and Associates 1.503.274.2242 Software Engineer [David--L--Hawley--computer--org] -- To unsubscribe from this list, please send an email to [rebol-request--rebol--com] with "unsubscribe" in the subject, without the quotes.<

 [13/16] from: dlhawley:home at: 15-Mar-2001 21:38


Previously, you (Holger Kruse) wrote:
>> Although striping the /dev prefix is somewhat handy it at first
seemed limiting in QNX where a serial port on another node has a node number or name in front of /dev. ie: //4/dev/ser5 refers to serial port 5 on node 4 and can be opened accross the net just like /dev/ser1 on whatever the local node is. Fortunately, QNX allow one to symbolic link (prefix) a remote node into the local namespace. One could thus prefix //4/dev/ser5 -> /dev/ser4.5 and open ser4.5 using REBOL - so REBOL does not to be QNX net aware to benefit.
> At the moment REBOL does not directly support any QNX-specific > features. It accesses QNX through standard Posix functions, which is > why any QNX-specific extensions to the serial mechanism (or other > features) probably won't work.
You miss my point here I think. What I mean is that since QNX allows building symbolic links accross network nodes, REBOL does not need to know about the QNX network features - it just works.
> This is also why some users have problems setting the baud rate from > REBOL in QNX. Apparently some versions of QNX have some bugs in their > Posix emulation code. This is not a bug in REBOL. The same code works > fine for "regular" Unix flavors.
I hope that you'vde reported this to QSSL. I do find it hard to believe though. The GNU stuff I've played with tends to handle the serial ports correctly if it compiles. The QNX 4 posix functions seem to work well in code I've written with the exception that flow control has a funny "lock" bit which is not obvious.
>> The crazy thing that REBOL does is make you open the port with a path name serial://port[N] where N is the index? of the port name in system/ports/serial. Thus in serial-path-to above, I find the index? or append the passed name and use the length? to get port[N]. Of course, REBOL then has to change this back into an open( "/dev/serX", ..) so to me it would make sense to use the port name instead of index. > One of the main goals of /Core is interoperability across platforms. > Introducing a standardized naming scheme for serial ports means that > scripts do not have to be changed when moving them across platforms. > With the current scheme the only part of a script that has to change > is the port number, as opposed to changing full port specs.
How is changing a port number any easier that changing a name? Don't you still need to either edit hard coded port numbers of build some cover function which creates a port spec given a number parameter?
>> and REBOL would figure out that you want 2400 baud, 7 data bits, even parity and 2 stop bits. I don't think that REBOL provides a mechanisim to change the option after an open. > It does. Just change the parameters in the port structure and call > 'update on the port.
Great I had assumed that there must be a method, just hadn't a clue on where to find it. This is probably my biggest gripe re REBOL - it does a lot of cool things, but figuring out how is a mystery. Yes, I've read the official guide, but port coverage is pretty skimpy. Of course serial ports are new so I know that I'm out on a limb there. Dave -- David L. Hawley D.L. Hawley and Associates 1.503.274.2242 Software Engineer [David--L--Hawley--computer--org]

 [14/16] from: dlhawley:home at: 13-Mar-2001 22:52


Previously, you (Sharriff Aina) wrote:
> Sounds like the direction that Iīm trying to get into, I would > appreciate it , naturally if youīve got the time, if you could > explain the basic steps I would need to take in controlling > devices over the serial port on a 80x86 processor( hardware and > software)
REBOL makes serial port control pretty easy. You open a serial port and get a port which you can read, write and wait on. There are some funny design decisions, but I think that they make sense. Here's some code snippits: path: serial-path-to/options lcd 19200 path == serial://port2/19200/none/8/1 fp: open/mode path [ direct write read binary no-wait ] serial-path-to is: serial-path-to: func [ 'name ; port name ser1, com1, ... /options opts ; baud setting options in REBOL open fmt /loc number ] [ either number: find system/ports/serial name [ number: index? number ][ append system/ports/serial name number: length? system/ports/serial ] ; Append opts or default (redundant) either options [opts: join "/" opts] [ opts: "/9600/none/8/1" ] ; this was the hard statement for me to figure out join serial://port rejoin [ number opts ] ] REBOL (still exp versions) puts the port names in: system/ports/serial The defaults are [ ser0 ser1 ] which will be useless in most cases. In QNX, ports are in /dev and are typically names ser1, ser2 ... In the MS world they are com1 and so on. So the first thing that one needs to do is replace system/ports/serial with valid OS names without the /dev prefix. In my box, I make symbolic links to ser1 and ser2 to lcd and cbr - hence the lcd in the first code line above. Although striping the /dev prefix is somewhat handy it at first seemed limiting in QNX where a serial port on another node has a node number or name in front of /dev. ie: //4/dev/ser5 refers to serial port 5 on node 4 and can be opened accross the net just like /dev/ser1 on whatever the local node is. Fortunately, QNX allow one to symbolic link (prefix) a remote node into the local namespace. One could thus prefix //4/dev/ser5 -> /dev/ser4.5 and open ser4.5 using REBOL - so REBOL does not to be QNX net aware to benefit. The crazy thing that REBOL does is make you open the port with a path name serial://port[N] where N is the index? of the port name in system/ports/serial. Thus in serial-path-to above, I find the index? or append the passed name and use the length? to get port[N]. Of course, REBOL then has to change this back into an open( "/dev/serX", ..) so to me it would make sense to use the port name instead of index. To set baud, parity, stop bits one just appends resonable values to the port path so an open could look like: fp: serial://port3/2400/odd/7/2 and REBOL would figure out that you want 2400 baud, 7 data bits, even parity and 2 stop bits. I don't think that REBOL provides a mechanisim to change the option after an open. This does bring up a buglett in QNX4 and QNX RTP - the open parameters are not correctly set. To solve this, I call the stty command after the open so that the baud and so on are correct. At least the port has internal attributes of speed, parity, data-bits and stop-bits which make the stty command trivial to build. I currently execute stty in core by writing the command "stty baud=xxx ..." to a fifo (named pipe) which has a shell script on the other end. This scriptsimply executes whatever command is fed to it. OK, you have a port, now what? Well it behaves pretty much like a socket so you can read, write and wait on it. I have an event loop that looks like this: loop: func [ /loc ok pd ] [ ok: 1 while [ ok ][ pd: eval-rules ; do something on every pass wait [ pd lcd/fp ] ; wait for a timeout or lcd key press ok: not-equal? 'A pick lcd/fp 1 ; get pressed key. ] ] OK, I don't have the keypad doing anything cool yet. If your device returns lines of data, then you'd probably open the port with something like: cbr/fp: open/mode/with serial://port4/9600/none [ direct write read no-wait lines ] "^M" The cbr port device returns strings of data terminated with ^M in response to a command. I have a function which sends a command, waits for a response and returns whatever the device sent back minus some prefix. The read removes the ^M. It's all pretty slick and with any luck would work on a MS OS if I used com[N} type names. read-check: func [ cmd prefix /loc data] [ insert fp cmd ; write command to the serial port wait timeout ; wait for a response data: first fp ; get line of data return find/match data prefix ; return stuff after prefix ]
> >I'm working on a prototype home data acquisition/control device. It > currently runs on a 486 class SBC onder QNX but only because I don't
<<quoted lines omitted: 15>>
> [rebol-request--rebol--com] with "unsubscribe" in the > subject, without the quotes.
-- David L. Hawley D.L. Hawley and Associates 1.503.274.2242 Software Engineer [David--L--Hawley--computer--org]

 [15/16] from: holger:rebol at: 14-Mar-2001 11:04


On Tue, Mar 13, 2001 at 10:52:37PM -0800, David Hawley wrote:
> The defaults are [ ser0 ser1 ] which will be useless in most cases.
The defaults depend on the operating systems, and are usually useful. For operating systems which provide an API to query which serial ports exist, that API is used to set the defaults. Otherwise a reasonable OS-specific default is used. Depending on the particular OS version and build (and for Linux, the package) the ports still may not match your setup though.
> Although striping the /dev prefix is somewhat handy it at first seemed limiting in QNX where a serial port on another node has a node number or name in front of /dev. ie: //4/dev/ser5 refers to serial port 5 on node 4 and can be opened accross the net just like /dev/ser1 on whatever the local node is. Fortunately, QNX allow one to symbolic link (prefix) a remote node into the local namespace. One could thus prefix //4/dev/ser5 -> /dev/ser4.5 and open ser4.5 using REBOL - so REBOL does not to be QNX net aware to benefit.
At the moment REBOL does not directly support any QNX-specific features. It accesses QNX through standard Posix functions, which is why any QNX-specific extensions to the serial mechanism (or other features) probably won't work. This is also why some users have problems setting the baud rate from REBOL in QNX. Apparently some versions of QNX have some bugs in their Posix emulation code. This is not a bug in REBOL. The same code works fine for "regular" Unix flavors.
> The crazy thing that REBOL does is make you open the port with a path name serial://port[N] where N is the index? of the port name in system/ports/serial. Thus in serial-path-to above, I find the index? or append the passed name and use the length? to get port[N]. Of course, REBOL then has to change this back into an open( "/dev/serX", ..) so to me it would make sense to use the port name instead of index.
One of the main goals of /Core is interoperability across platforms. Introducing a standardized naming scheme for serial ports means that scripts do not have to be changed when moving them across platforms. With the current scheme the only part of a script that has to change is the port number, as opposed to changing full port specs.
> and REBOL would figure out that you want 2400 baud, 7 data bits, even parity and 2 stop bits. I don't think that REBOL provides a mechanisim to change the option after an open.
It does. Just change the parameters in the port structure and call 'update on the port. -- Holger Kruse [holger--rebol--com]

 [16/16] from: ryanc:iesco-dms at: 12-Mar-2001 17:54


It is actually much simpler than one may think. The hardest part is debugging the communication. The program is hard to debug before the communication is working. Once your talking, you can transmit the contents of memory locations in order debug parts of your program. --Ryan [Sharriff--Aina--med-iq--de] wrote:

Notes
  • Quoted lines have been omitted from some messages.
    View the message alone to see the lines that have been omitted