tag:blogger.com,1999:blog-5557240086320000561.post5430139512630657437..comments2024-01-15T00:07:32.472-08:00Comments on Mars and Me: Spirit Sol 338Scott Maxwellhttp://www.blogger.com/profile/11510688120932625522noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-5557240086320000561.post-89607466984679958422009-12-20T23:49:20.949-08:002009-12-20T23:49:20.949-08:00@Scott thank you for a great response. I'm hop...@Scott thank you for a great response. I'm hoping to read that paper after it has been released, thanks in advance. Have a nice week.Juho Garo Mäkinenhttps://www.blogger.com/profile/06830802900647848381noreply@blogger.comtag:blogger.com,1999:blog-5557240086320000561.post-58573330915020931262009-12-17T19:32:51.319-08:002009-12-17T19:32:51.319-08:00@Garo Glad you're enjoying it!
The way I'...@Garo Glad you're enjoying it!<br /><br />The way I'd describe writing sequences to a fellow programmer is that it's very much like writing code. The rover has a simple command language that feels similar to a dumbed-down Tcl or BASIC.<br /><br />Here's an example that gets the flavor right, although for legal reasons the command names are all made up:<br /><br />DRIVE_FORWARD 1.5m 10deg<br />IF HEADING LESS_THAN 0deg<br /> STOP DRIVING<br />END_IF<br /><br />(Sorry about the formatting; Blogger doesn't allow much.) In my made-up example, the rover would execute an arc that (in a no-slip environment) would move her forward 1.5 meters and change her heading 10 degrees clockwise. If she then found that her heading was west of north (0 is north), she'd stop driving for the day.<br /><br />Commanding the IDD (arm) is similar, though a lot harder to visualize because you're commanding the five joints of a very complex arm. For example, we have a command whose real name is similar to SET_IDD_JOINTS; the arguments to the command are the joint angles you want it to reach, plus some other things. It is very, very hard to do this correctly in your head, especially when you want the tip of the arm to place an instrument within millimeters of a science target.<br /><br />Fortunately, we have RSVP, the software I helped write, which lets us simulate and visualize the results of the commands we're going to send to Spirit and Opportunity. So we can send these commands to the simulator, which interprets them and shows us the results -- including any errors. Much as in a debugger, you can step through one command at a time, or just run the animation and watch what your commands will do. In addition, RSVP helps you build the commands in the first place, so that you don't have to guess at the joint angles; for instance, you can have it snap the arm onto a target, then ask it to generate commands to move the arm there.<br /><br />We'd be sunk without RSVP. Part of the <i>art</i> of the job, however, is doing the things RSVP can't do for you -- modeling slip on a new terrain type, or showing the effect of a low-level command on a flaky piece of hardware, and so on.<br /><br />When we're done, the commands we've written are translated into a more compact binary form, then sent to the rovers in that form; part of the job of the rovers' flight software is to interpret and execute the commands. This is exactly analogous to -- indeed, it <i>is</i> -- a virtual machine executing bytecode.<br /><br />I've written a paper about the rovers' command language and sequence execution environment, covering this stuff in much more detail than I can go into here; that paper has been accepted for IEEE Aerospace 2010 (Big Sky, Montana, USA, March 6-13). Which is one reason I know it's lawful to talk about it here. :-) I'd point you to that paper, which will be published in a few months, for more information.<br /><br />Just so you know what to expect, while that paper does describe our command language and the sequence execution environment at a high level, it focuses on our command language's tradeoffs between simplicity and power and how those tradeoffs have played out in practice.Scott Maxwellhttps://www.blogger.com/profile/11510688120932625522noreply@blogger.comtag:blogger.com,1999:blog-5557240086320000561.post-69761347512898093492009-12-16T02:04:48.826-08:002009-12-16T02:04:48.826-08:00Hello. Thanks for writing this blog, it has been f...Hello. Thanks for writing this blog, it has been fun to read.<br /><br />I'm a programmer and I started to wonder how do you create those IDD sequences? Are they some sort of script which is compiled into some bytecode which is sent to the rovers or something entirely different? Are they something what you can show in this blog to give a feeling what's it all about?<br /><br />Thanks and greetings from sunny but snow full Finland :)Juho Garo Mäkinenhttps://www.blogger.com/profile/06830802900647848381noreply@blogger.com