DOC PREVIEW
Columbia COMS W4115 - iDrive Programming Language

This preview shows page 1-2 out of 5 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

iDrive Programming LanguageCOMS W4115 Project ProposalParag [email protected] IntroductionCars equipped with a system that is capable of driving from one point to another withoutinput from a human operator have got significant attention from academic, commercial, de-fense, and government sectors over the past few decades. Early prototypes date as far backas late 1970s, however important progress only came to be seen in the late 2000s through pro-grams like DARPA Grand Challenge competitions and Google Driverless Car project. Someproposed systems depend on infrastructure-based guidance systems; while more advancedsystems propose to simulate human perception and decision-making during steering of a carvia advanced computer software linked to a range of sensors such as cameras, radar, andGPS. Some of the advantages of “Driverless Cars” include managing traffic flow to increaseroad capacity, avoid accidents by eliminating driver error, relieving vehicle occupants fromdriving and navigating chores, transporting loads in dangerous zones such as battlefields,and reducing costs of employing drivers.2 iDrive Programming LanguageiDrive is a high level programming language that provides basic constructs to develop algo-rithms for cars to drive without a need for human intervention. Currently, no such languageexists and given the complexity of the paradigm, iDrive is extremely useful since it is spe-cialized to accomplish this challenging task. The primary focus of iDrive is the abstractionand reduction of non-essential or monotonous tasks so that the researchers no longer needto spend time specifying the characteristics of driving and just need to focus on creatingintelligent algorithms for developing fully autonomous cars. iDrive provides the researcherwith a rich set of tools that may be used intuitively to implement algorithms for drivingcars. Every effort has been made to ensure that the language is intuitive and easy to readand understand.13 Language OutlineiDrive uses syntax based on that of C and Java because the idea is to create a developmentenvironment that is relatively familiar to those who already know C and Java, hence reducingthe learning curve for transitioning to iDrive.3.1 Simple Typesint : Used to hold integer datadecimal : Used to hold decimal datastring : Used to hold string databoolean : Used to hold true/false data3.2 Complex TypesSegment : Represents a segment out of the driving directionsHeading : An attribute of a Segment that determines usually direction altering action thatthe car must perform at the start of a Segment. E.g. TurnRight, TurnLeft, Proceed,BearRight, BearLeft, SwitchToRightLane, SwitchToLeftLane.Distance : An attribute of a Segment that determines how far the car must drive beforereaching the next SegmentTargetSpeed : An attribute of a Segment that determines how fast the car may drive alongthe SegmentDirections : An array of segments, which form the driving directions from source positionto destination position (in the initial implementation data for this variable is read from atab delimited text file)Position : Repesents position in terms of geographic latitude and longitude3.3 Control StatementsTo control a program’s flow the following control statements are supported much like in Cand Java:while loop: To repeatedly execute a block of code until a certain condition is metfor loop: To repeatedly execute a block of code until a certain condition is metif / else condition: To conditionally execute a block of code23.4 Built-in FunctionsHere are the initially proposed keywords and frequently used built-in functions:function : To create user-defined functionsTurnRight : To turn the car rightTurnLeft : To turn the car leftProceed : To make the car proceed forward or to move the car as per the HeadingReverse : To reverse the carStop : To stop the car as soon as possibleSlowDown : To slow down the carAccelerate : To accelerate the carBearRight : To make the car bear rightBearLeft : To make the car bear leftSwitchToRightLane : To make the car switch to the adjacent right laneSwitchToLeftLane : To make the car switch to the adjacent left laneIsClearToGo : To check if the car is clear to proceed (interrogates sensors attached to thecar)Park : To make the car parkReadDirections : To read directions from a tab delimited text file3.5 Other Features{ } To enclose a group of statements in a procedure or function( ) To enclose a group of arguments for a function; To separate a statement from another, To separate arguments within a function/* */ All characters between /* and */ are treated as comments// To include inline comments+ - * / Mathematical operators< <= > >= == != Relational operators! && || Logical operators4 Representative ProgramHere is a representative program that demonstrates a simple implementation of Drive algo-rtihm, which reads the driving directions passed to it by the navigation system (in the initialimplementation driving directions are read from a tab delimited text file) and transports thecar from source position to destination position:3/* The init() function must always be present.It is the entry point for a iDrive program much like main() in C and Java.*/function init() {string directionsFile = ‘‘directions.txt’’;Directions d;Position srcPosition;Position destPosition;[d, srcPosition, destPosition] = ReadDirections(directionsFile);Drive(srcPosition, destPosition, Directions);}/* This is a user defined function that transports the car fromsource position to destination position given the driving directions.*/function Drive(srcPosition, destPosition, Directions) {/* Current position of the car */Position CurrentPosition = srcPosition;/* Current speed of the car */decimal CurrentSpeed = 0.0;i = 0;while (i < Directions.length) {/* Current Segment to execute */Segment CurrentSegment = Directions[i];/* Distance covered along current Segment */decimal DistanceCovered = 0.0;while (CurrentSegment.Distance > DistanceCovered) {/* IsClearToGo will take into account pedestrians,traffic signals, and other traffic on the roadway byinterrogating sensors attached to the car */if (IsClearToGo) {/* Accelerate will increase the car speed ifCurrentSpeed < CurrentSegment.TargetSpeedIt will also update the CurrentSpeed. */4Accelerate;/* Proceed will move the car forward or as perCurrentSegment.Heading if this event hasn’t already takenplace. It will also update the CurrentPosition andDistanceCovered accoring to CurrentSpeed.


View Full Document

Columbia COMS W4115 - iDrive Programming Language

Documents in this Course
YOLT

YOLT

13 pages

Lattakia

Lattakia

15 pages

EasyQL

EasyQL

14 pages

Photogram

Photogram

163 pages

Espresso

Espresso

27 pages

NumLang

NumLang

6 pages

EMPATH

EMPATH

14 pages

La Mesa

La Mesa

9 pages

JTemplate

JTemplate

238 pages

MATVEC

MATVEC

4 pages

TONEDEF

TONEDEF

14 pages

SASSi

SASSi

16 pages

JTemplate

JTemplate

39 pages

BATS

BATS

10 pages

Synapse

Synapse

11 pages

c.def

c.def

116 pages

TweaXML

TweaXML

108 pages

Load more
Download iDrive Programming Language
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view iDrive Programming Language and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view iDrive Programming Language 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?