From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fd6dd,c78177ec2e61f4ac X-Google-Attributes: gidfd6dd,public X-Google-Thread: 103376,c78177ec2e61f4ac X-Google-Attributes: gid103376,public From: mfb@mbunix.mitre.org (Michael F Brenner) Subject: Re: ada and robots Date: 1997/05/29 Message-ID: <5mjqpq$lkp@top.mitre.org>#1/1 X-Deja-AN: 244706109 References: <338CDA96.53EA@halcyon.com> Summary: Ada has the required features for microcontrollers Organization: The MITRE Corporation, Bedford Mass. Newsgroups: comp.robotics.misc,comp.lang.ada Date: 1997-05-29T00:00:00+00:00 List-Id: The Ada language has the required features for programming controllers: low level bit operations, absolute memory addressing, interface to assembler code, interrupt handling, etc. It also has a number of features not required, but helpful for programming controllers: the best bug catching at compile time, some of the best encapsulation, the ability to express many algorithms without bug-prone pointers, good optimization, ability to do tasking, etc. In a toy robot, the controllers do not need much programming, usually an external scheduling computer does the dynamics and kinematics, resulting in a set of curves that the controller follows, programmed in an ASIC or a PROM as numbers with a very tiny program to put those numbers into a memory mapped board register, and the hardware does the rest. In autonomous robots, however, where each tick of the clock requires computation a Kaman array of Kalman filters, adjustment of the boundaries in a Voronoi diagram, and reclustering of the distance and force matrix between obstacles, the controller of a joint looks a lot more like a complex general-purpose computer with specially designed I/O circuits. In the first case, the toy robot, it does not matter which language you use because there are so few actual instructions required, if the whole thing is table-driven, or else the instructions are boiler-plate macros stamped out by some finite state machines, where, again, source language is irrelevant, they are just a bunch of gotos mixed with set-port commands at the machine code level. In the second case, the sophisticated bug control and packaging features of Ada can help develop the code faster than other languages, regardless of whether Ada is the target language; that is, after developing in Ada, if you find that the code is mostly just a bunch of FSAs anyway, you can stamp them out as boiler plate assembler code, using those same FSAs with a different action matrix, and use that assembler code as the target. However, in an autonomous robot, Ada might be the best language for the final target as well.