LCM: Lightweight Communications And Marshalling

2y ago
156 Views
3 Downloads
305.72 KB
6 Pages
Last View : 7d ago
Last Download : 3m ago
Upload by : Aarya Seiber
Transcription

LCM: Lightweight Communications and MarshallingAlbert S. Huang, Edwin Olson, David C. MooreAbstract— We describe the Lightweight Communications andMarshalling (LCM) library for message passing and datamarshalling. The primary goal of LCM is to simplify thedevelopment of low-latency message passing systems, especiallyfor real-time robotics research applications.Messages can be transmitted between different processesusing LCM’s publish/subscribe message-passing system. Aplatform- and language-independent type specification languageseparates message description from implementation. Messagespecifications are automatically compiled into language-specificbindings, eliminating the need for users to implement marshalling code while guaranteeing run-time type safety.LCM is notable in providing a real-time deep traffic inspection tool that can decode and display message trafficwith minimal user effort and no impact on overall systemperformance. This and other features emphasize LCM’s focuson simplifying both the development and debugging of messagepassing systems. In this paper, we explain the design of LCM,evaluate its performance, and describe its application to anumber of autonomous land, underwater, and aerial robots.I. I NTRODUCTIONA fundamental software design principle is that of modularity, which promotes maintainability, code re-use, and faultisolation [1]. A large robotic system, for example, can bedecomposed into specific tasks such as data acquisition, stateestimation, task planning, etc. To accomplish their tasks,modules must exchange information with other modules.With modern operating systems, it is convenient to mapindividual modules onto software processes that can be onthe same or physically separate computational devices. Thisthen transforms the task of information exchange into thewell studied problem of interprocess communication.In this paper, we describe a message passing systemfor interprocess communication that is specifically targetedfor the development of real-time systems. Our approachis motivated by lessons from modern software practices,and places great emphasis on simplicity and usability fromthe perspective of a system designer. We call our systemLightweight Communications and Marshalling (LCM) tosignify its functionality and its simplicity in both usage andimplementation.The single most notable attribute of mapping modulesonto separate processes is that every module receives aseparate memory address space. The introduction of thisbarrier provides a number of benefits; modules can be run onHuang is at the Computer Science and Artificial Intelligence Laboratory at MIT, Cambridge, MA, USA. Olson is in the ComputerScience and Engineering department at the University of Michigan,Ann Arbor, MI, USA. Moore is a software engineer at DreamworksSKG, Inc.the same or different host devices, started and stopped independently, written in different programming languages andfor different operating systems, and catastrophic failure ofone module (e.g. a segmentation fault) does not necessarilyimpact another.With this independence also comes isolation – sharinginformation between modules is no longer a trivial task.Module designers must carefully consider what informationto share across modules, how to marshal (encode) that information into a message, how to communicate a marshalledmessage from one module to another, and how to un-marshal(decode) the message once received.Although a message passing system introduces complexities that must be carefully managed, it also provides opportunities for analysis and introspection that may be invaluableto a developer. In particular, messages may be captured andanalyzed by modules specifically designed to aid systemdevelopment. Such modules might log messages to disk,provide statistics on bandwidth, message rate, etc. If themessages are marshalled according to a formal type system,then a traffic inspection module could automatically decodemessages in much the same way a program debugger canautomatically decode stack variables of a running application.LCM provide tools for marshalling, communication, andanalysis that are both simple to use and highly efficient.Its overarching design philosophy is to make it easy toaccomplish the most common message passing tasks, andpossible to accomplish most others. LCM also detects manyrun-time errors, such as invalidly formatted data and typemismatches.II. R ELATED W ORKInterprocess communication is an extensively studied topicwith broad applicability. We direct our attention specificallytowards its use in developing robotic systems, where theidea of dividing large systems into modules has becomecommonplace [2], [3].There are several recurring themes in existing systems.Publish/subscribe models are the most commonly used [4],[2], [5], with TCP being the most common transport. Mostof these systems employ a centralized hub, whether it isused for message routing or merely for “match making”.Virtually all of these systems provide a reliable and orderedtransport system, though some of the systems provide aUDP transport as a non-standard option. A separate technicalreport describes a number of commonly used systems ingreater detail [6].

Existing systems are widely varied in terms of providedsupport for data marshalling. Some systems do not provide automatic marshalling tools, instead allowing free-formhuman-readable messages [4], or specifying a set of standardized messages and binary formats [7]. Several systemsuse an XDR-based marshalling system [8], [9], [2], thoughsome implementations provide only partially automatic codegeneration. Language and platform support is typically limited, and with some systems [2], the users must manuallykeep a formatting string in sync with the message layout.Our system, Lightweight Communications and Marshalling (LCM), provides a “push”-based publish/subscribemodel. It uses UDP multicast as a low-latency but unreliabletransport, thus avoiding the need for a centralized hub. LCMprovides tools for generating marshalling code based on aformal type declaration language; this code can be generatedfor a large number of platforms and operating systems andprovides run-time type safety.Several of the other systems provide an operating “environment”, consisting of pre-defined data types, ready-touse modules, event loops, message-passing systems, visualization and simulation tools, package management, andmore [2], [3], [4]. LCM is different in that it is intendedto be an “a la carte” message passing system, capable ofbeing integrated into a wide variety of systems.Finally, the way in which LCM is perhaps most distinctive from other systems is in its emphasis on debuggingand analysis. For example, while all systems provide somemechanism for delivering a message from one module toanother, few provide a way to easily debug and inspect theactual messages transmitted. Those that do typically do soat the expense of efficiency and performance. LCM providesa tool for deep inspection of all messages passed on thenetwork, requiring minimal developer effort and incurring noperformance penalty. This is made possible by design, andallows a system developer to quickly and efficiently identifymany bugs and potential sources of failure that are otherwisedifficult to detect.III. A PPROACHWe divide our description of LCM into several sections:type specification, marshalling, communications, and tools.Type specification refers to the method and syntax for defining compound data types, the sole means of data interchangebetween processes using LCM. Marshalling is the process ofencoding and decoding such a message into binary data forthe communications system which is responsible for actuallytransmitting it.A. Type SpecificationProcesses communicating with LCM agree in advanceon the compound data types used to represent information.LCM does not support defining Remote Procedure Calls(RPC), and instead requires applications to communicate byexchanging individual messages. This restriction makes theLCM messaging protocol stateless, simplifying other aspectsof the system (particularly logging and playback). To aid thisprocess, LCM defines a formal type specification languagefor describing messages.The binary representation of a message is implicitly defined by its type definition. These definitions are independentof platform and programming language, and a code generation tool is used to automatically generate language-specificbindings that provide representations of the message in aform native to the programming language. Fig. 1 shows anexample of two LCM message type definitions, and Fig. 2demonstrates use of the C language bindings.struct waypoint t {string id ;float position [ 2 ] ;}struct path t {int64 t timestamp ;int32 t num waypoints ;waypoint t waypoints [ num waypoints ] ;}Fig. 1. Two example LCM types. The first contains two fields, one ofwhich is a fixed-length array. The second is a compound type, and containsa variable length array in addition to two primitive data types.#include lcm / lcm . h #include "waypoint t.h"#include "path t.h"int main ( int argc , charwaypoint t wp [ 2 ] ;wp [ 0 ] . id wp [ 0 ] . position [ 0 ] wp [ 0 ] . position [ 1 ] wp [ 1 ] . id wp [ 1 ] . position [ 0 ] wp [ 1 ] . position [ 1 ] argv ) {"waypoint 0" ;0.0;0.0;"waypoint 1" ;100;100;path t path ;path . timestamp 0 ;path . num waypoints 2 ;path . waypoints wp ;lcm t lcm lcm create ( NULL ) ;path t publish ( lcm , "PATH CHANNEL" , &path ) ;}Fig. 2. A complete C program showing how to declare and transmita message using the automatically generated C-language bindings for thetypes defined in Fig. 1. LCM also supports message type bindings forPython, Java, and MATLAB.The types in Fig. 1 show the basic structure of LCM types.The LCM documentation and a separate technical report [6]contain a comprehensive description of the type specificationlanguage and additional features such as namespaces andconstants.The LCM type specification was strongly influenced bythe External Data Representation (XDR) [8], which is usedby Sun Remote Procedure Calls (Sun/RPC) and the NetworkFile System (NFS) [10]. Some XDR features, such as pointerchasing and unions, are not supported by LCM due to thefact that they are rarely used, have portability issues, or inviteuser error.LCM also provides features and other usability improvements over XDR. For example, LCM provides a simplemethod for declaring the length of a variable-length array;in contrast, the XDR specification does not specify how the

length of arrays should be specified, which has led to avariety of incompatible approaches. A second example isLCM’s support for namespaces, which make it easier to avoidnaming conflicts when sharing code with others.B. MarshallingIn order for two modules to successfully communicate,they must agree exactly on how to interpret the binarycontents of a message. If the interpretations are different,the resulting system behavior is typically undefined, andusually unwanted. In some cases, these problems can beobvious and catastrophic: a disagreement in the signedness ofa motor control message, for example, could cause the robotto suddenly jump to maximum reverse power when the valuetransitions from 0x7f to 0x80. In other cases, problems canbe more subtle and difficult to diagnose.Additionally, as a system evolves, the messages maychange as new information is required and obsolete information is removed. Thus, message interpretation must besynchronized across modules as messages are updated.Fingerprint: Type checking in LCM is accomplished byprepending each LCM message with a 64-bit fingerprintderived from the type definition. The fingerprint is a hashof the member variable names and types. If the LCM typecontains member variables that are themselves LCM types,the hash recursively considers those member variables. Thedetails of computing a hash function are straight-forwardand thoroughly documented within the LCM source codedistribution, so we omit a detailed description here.In the common case, an LCM client knows what typeof message is expected on a particular messaging channel.When a message is received by an LCM client, it first readsthe fingerprint of the message. If the fingerprint does notmatch the LCM client’s expected fingerprint, a type error isreported.LCM clients can also build a fingerprint database, allowingthem to identify the type of message when it is received. Thisis the technique used by our tool lcm-spy, which allows realtime deep inspection of LCM traffic.C. CommunicationsThe communications aspect of LCM can be summarizedas a publish-subscribe messaging system that uses UDPmulticast as its underlying transport layer. Under the publishsubscribe model, each message is transmitted on a namedchannel, and modules subscribe to the channels requiredto complete their designated tasks. It is typically the case(though not enforced by LCM) that all the messages on aparticular channel are of a single pre-specified type.1) UDP Multicast: In typical publish-subscribe systems,a mediator process is used to maintain a central registry ofall publishers, channels, and subscribers. Messages are theneither routed through the mediator directly, or the mediatoris used to broker point-to-point connections between a publisher and each of its subscribers. In both cases, the numberof times a message is actually transmitted scales linearly withFig. 3. LCM-spy screenshot. lcm-spy is a traffic inspection tool that isable to automatically decode and display LCM messages in real-time. Itrequires only that the automatically generated Java code for the LCM typesbe accessible in the class path; no additional developer effort is required.the number of subscribers. When a message has multiplesubscribers, this overhead can become substantial.The approach taken by LCM, in contrast, is simply tobroadcast all messages to all clients. A client discards thosemessages to which it is not subscribed. Communicationnetworks such as Ethernet and the 802.11 wireless standardsmake this an efficient operation, where transmitted packetsare received by all devices regardless of destination.LCM bases its communications directly on UDP multicast,which provides a standardized way to leverage this feature.Consequently, it does not require a centralized hub for eitherrelaying messages or for “match making”. A maximum LCMmessage size of 4 GB is achieved via a simple fragmentationand reassembly protocol. The multicast time-to-live parameter is used to control the scope of a network, and is mostcommonly set to 0 (all software modules hosted on the samecomputational device) or 1 (modules spread across deviceson the same physical network).2) Delivery Semantics: LCM provides a best-effort packetdelivery mechanism and gives strong preference to the expedient delivery of recent messages, with the notion that the additional latency and complexity introduced by retransmissionof lost packets does not justify delaying newly transmittedmessages.In general, a system that has significant real-time constraints, such as a robot, may often prefer that a lost packet(e.g., a wheel encoder reading) simply be dropped rather thandelay future messages. LCM reflects this in its default modeof operation; higher level semantics may still be implementedon top of the LCM message passing service.D. ToolsLCM provides several tools useful for logging, replaying,and inspecting traffic (Fig. 3). Together, they allow a developer to rapidly and efficiently analyze the behavior andperformance of an LCM system.The logging tools are similar to those found in manymessaging systems, and allow LCM traffic to be recorded to afile for future playback or analysis. We note that the loggingand playback programs are not attributed special status in

Echo Test Achieved Bandwidth, 1 clientEcho Test Achieved Bandwidth, 2 clients3560LCM CLCM JavaIPC (central c)IPCROS (TCP, q 100)ROS (TCP, q )0.6%( )10.2%( )3.7%( )200.3%( )150.3%( )106.9%(*)5032.1%(*)27.8%(*)65.7%(*)708.0%( )73.8%(*)400.7%( )3019.8%( )46.5%( )1.0%( )0.3%( )0.2%( )2023.1%(*) 42.2%(*)4.1%(*)1061.4%(*)73.2%(*)Receive Rate (MB/s)258050Receive Rate (MB/s)Receive Rate (MB/s)30Echo Test Achieved Bandwidth, 4 clients908.0%( )2.0%( )10.8%( )60505.0%( )4020.7%( )10.2%( )43.2%( )45.6%( )0.6%( 152025Attempted Transmit Rate (MB/s)0300510152025Attempted Transmit Rate (MB/s)03005101520Attempted Transmit Rate (MB/s)25Fig. 4. Bandwidth results from an echo test with 1, 2, and 4 clients, where each client echoes messages transmitted by a single sender. The bandwidthof successful echoes as detected by the original sender are shown. Message loss rates (messages with no received echo) are shown in parentheses whennonzero.Packet Round Trip Time, 1 client610Packet Round Trip Time, 2 clients6Packet Round Trip Time, 4 clients610LCM C10IPC (central c)IPCROS (TCP, q 100)ROS (TCP, q )210010 210Average round trip time (ms)Average round trip time (ms)Average round trip time (ms)LCM Java410410210010 20510152025Attempted transmit bandwidth (MB/s)3010410210010 20510152025Attempted transmit bandwidth (MB/s)301005101520Attempted transmit bandwidth (MB/s)25Fig. 5. Mean message round-trip times for the echo test in Fig. 4 with 1, 2, and 4 clients. Average round-trip times are shown on a log scale; these timesdo not reflect lost packets (which essentially have an infinite round-trip time). Both LCM implementations offer low latency. While IPC (using central -c)also appears to provide low latency, it is critical to notice that IPC’s achieved bandwidth fell short of the target bandwidth (see Fig. 4).LCM; the logger simply subscribes to all channels, and thereplay tool publishes messages from a data file.Spy: If a database of every LCM type used on a systemis assembled, then an arbitrary fingerprint serves as a typeidentifier with very high probability.1 The lcm-spy tool isdesigned to leverage this attribute, and is able to analyze,decode, and display live traffic automatically with virtuallyno programmer effort. Fig. 3 shows a screenshot of lcm-spyinspecting traffic.lcm-spy is implemented in Java, and requires only that theclasspath contain the automatically generated Java versionsof each type. Using the reflection features of Java, it searchesthe classpath for classes representing LCM types, buildinga mapping of fingerprints to LCM types. Because each fieldof an LCM message is strongly typed, lcm-spy is able toautomatically determine a suitable way to decode and displayeach field of a message as it is received.lcm-spy also provides summary statistics for messagechannels such as message rate, number of messages counted,and bandwidth utilized. Together, these features provide ahighly useful view of an LCM network.When used in practice, lcm-spy allows developers to1 The fingerprints of each LCM type are represented as 64 bit integers,providing theoretical collision resistance for 232 different types. WhileLCM’s non-cryptographic hash function degrades this figure, the probabilityof collisions is vanishingly small for the few hundred message types that alarge system might employ.quickly identify many of the most common failures. Duringmodule development, it can help verify that a module isproducing messages on the correct channels at the expectedrate and bandwidth. It can also be used to inspect arbitrarymessages to check the values of any field – useful fortracking down bugs and verifying module operation.In our experience, lcm-spy is a critically important tool,on par with program debuggers and profilers. Whereas adebugger is useful for inspecting the internal state of amodule, lcm-spy has become invaluable for inspecting messages passed between modules. Because it passively observesand analyzes traffic, lcm-spy can provide this insight withabsolutely no impact on the system performance.IV. P ERFORMANCEOne way to measure the interprocess communication performance of LCM is by examining its bandwidth, latency,and message loss under various conditions. Figs. 4 and 5show a comparison of the C and Java implementations ofLCM with IPC and the ROS TCP transport.In this test, a source node transmits fixed-size messagesat various rates. One, two, or four client nodes subscribe tothese messages and immediately retransmit (echo) them oncereceived. The source node measures how many messagesare successfully echoed, the round-trip time for each echoedmessage, and the bandwidth consumed by the original transmission and the echoes. For this test, IPC was run in two

modes, one in which the central dispatching server relaysall data (the IPC default), and another in which the centralserver acts merely as a “match maker” facilitating peer-topeer connections (central -c). To improve performance,operating system send and receive buffers were increased to2MB. The ROS test was implemented using ROS Box Turtle,with TCP NODELAY set and two different maximum queuelengths to trade off message loss and latency.To collect each data point, the sender transmits 100MB ofdata split into 800 byte messages at a fixed rate determinedby a target transmission bandwidth. Figs. 4 and 5 showthe results for tests conducted on an eight-core workstationrunning Ubuntu 9.04. Hosting each process on separateidentical workstations connected via 1000Base-T Ethernetyielded similar results. In some cases, the actual messagetransmission rate does not match the target transmission ratedue to transport and software limitations.From these figures, we can see that LCM scales with boththe amount of traffic to be sent and the number of subscribers. As network capacities are reached, LCM minimizeslatency and maintains high bandwidth by dropping messages.The LCM Java implementation performs comparably to theC implementation, and responds to computational limits ofthe virtual machine by dropping more messages.IPC performs well with one subscriber, but does not scaleas well to multiple subscribers as a result of transmittingmultiple copies of each message.2 Using the match-makingservice of IPC (central -c) improves bandwidth andreduces latency, but ultimately has the same difficulties.We note that although IPC with peer-to-peer connectionsmaintains low latency as the attempted transmission rate isincreased, the actual bandwidth achieved does not increasedue to link saturation from duplicated messages. For example, with four clients echoing messages, IPC is unable totransmit faster than 11 MB/s, as the bandwidth consumedby the quadruplicate transmission and the echoes saturatesthe link capacity.The ROS TCP transport achieves high throughput whenthe maximum queue length (q) is set to infinity, but at theexpense of message latency. Various settings of q providean adjustable tradeoff between throughput and latency. Withq 100, message latency is on par with LCM at higher datarates, but message loss is more frequent due to filled buffers.A. Marshalling PerformanceIn addition to performance of the communications system,we are also interested in the computational efficiency ofthe LCM marshalling and unmarshalling implementations.Performance of a marshalling system is a function of thecomplexity and nature of the message, and the presence ofarrays, nested types, strings, and other fields are all factors.We compared the performance of LCM, IPC, and ROS on2 Ourinitial experiments with IPC, using Carmen 0.7.4-beta, producedmuch worse results due to coarse-grained timing functions in IPC thatdegrade performance when packet rates exceed 1 kHz. We improved thisperformance by exporting higher-resolution versions of those functions; thisimproved data is used in this paper.Fig. 6. Marshalling performance for four different marshalling implementations on three different types. Smaller numbers are better.three common message types – a 640x480 grayscale cameraimage, a single scan of a planar laser range scanner with 180range measurements, and a list of 50 waypoints. The LCMtypes in Fig. 1 are used for the waypoint list; the LCM typesfor the image and laser scan messages are:struct image t {int64 t utime ;int32 t width ;int32 t height ;int32 t pixelformat ;int32 t size ;byte data [ size ] ;}struct laser t {int64 t utime ;int32 t nranges ;floatranges [ nranges ] ;floatrad0 ;floatradstep ;}Similar message types were defined for IPC and ROS. Inthis test, we estimate the amount of time each implementation spends encoding and decoding a single message byaveraging over the time taken to encode and decode 106messages. Estimates were taken 10 times and then averaged.Timings are shown in Fig. 6.The LCM C implementation was the fastest on the path tand image t messages, and the ROS C implementationwas the fastest on the laser t message. The little-endianassumption made by ROS yields faster performance whenhandling messages with many multi-byte primitive types onlittle-endian computers. The pure Java LCM implementationis generally competitive but slower handling endianness(laser t) and large memory allocations (image t). Carmen,despite being written in C, is fairly slow due to not usingfaster block copy operations when possible.Finally, it should be noted that the communication andmarshalling comparisons given here consider only a fewcommon scenarios. Performance may vary with packet size,transmit rate, message structure, etc. Each messaging implementation can often be adjusted to various degrees, basedon the messaging and system requirements. However, thesecomparisons do serve to provide some insight into the overallperformance of each system.V. C ASE S TUDIESSince its development, LCM has been used as the primarycommunications system for a number of robotics researchplatforms operating in real environments. Here, we describesome examples of how LCM was used to assist the development of a robotics research system.

A. Urban ChallengeThe 2007 DARPA Urban Challenge was an autonomousvehicle race designed to stimulate research and public interest in autonomous land vehicle technology. Vehicles wererequired to safely navigate a 90 km race course through asuburban environment in the presence of both robotic- andhuman-driven vehicles. LCM served as the communicationsbackbone for the Ford/IVS and MIT teams [11]. On theMIT vehicle, 70 separate modules were simultaneously active, spread across 10 networked workstations. The averagebandwidth used by the entire LCM network was 16.6 MB/s,with an average transmission rate of 6,775 messages/s.Messages ranged from very small updates to cameraimages and obstacle maps up to several megabytes in size.Some, such as the pose estimates, were subscribed to byvirtually every module on the network, while others had onlyone or two subscribers.Throughout the development process, almost 100 differentmessage types were used, many of which changed frequentlyas the capabilities and requirements of each module evolved.Software development was distributed across many peopleworking from different locations, and the LCM type definitions became a convenient place for developers to agree onhow modules would interface.Because language-specific bindings could be generated automatically from LCM type definitions, modifying messagesand the modules that used them to add or remove fields couldoften be accomplished in the span of minutes. Additionally,the runtime type checking of LCM fingerprints provided afast and reliable way to detect modules that had not beenrecompiled to use the newly modified form of a message.B. Land, Underwater, and Aerial RobotsSince the Urban Challenge, LCM has been applied toa number of other robot research platforms such as smallindoor wheeled robots, arm manipulators, quadrotor helicopters [12], and an autonomous forklift [13]. In many cases,modules used in one system were easily transitioned to othersby ensuring that the LCM messages they needed for correctoperation were present on the target robot.In one underwater multi-vehicle research project [14],each vehicle contains on-board sensors, thrusters, and acomputer for data processing and vehicle control. Despitea significantly different application domain from the UrbanChallenge, the software engineering principles remain identical, and LCM has proved just as useful. New messagetypes are easily defined as needed, and software modulesare adapted to operate in different domains.VI. C ONCLUSIONWe have presented LCM and its design principles. LCMis driven by an emphasis on simplicity and a focus on theentire development process of a robotic software system. Inaddition to achieving high performance, LCM also providestools for traffic inspection and analysis that give a developerpowerful and convenient insight into the state of the roboticsystem.The LCM type specification language is designed to allowflexible and intuitive descriptions of a wide class of datastructures. Type fingerprints allow for runtime type checking and identification, and automatically generated languagebindings result in a simple and consistent API for manipulating messages and the data they represent. Native supportfor multiple platforms and languages allows developers tochoose the environment most suitable for the task at hand.LCM has been used as the core communications infrastructure on a number of demanding robotic systems on land,water, and air. In each of these cases, the simplicity and versatility of LCM allowed for rapid development of complexsoftware systems. The modular nature of these systems hasallowed for significant code re-usability and application ofmodules developed from one system to another.LCM is distributed at http://lcm.googlecode.com. It is supported on Microsoft Windows XP/Vista/7 andall POSIX.1-2001 compliant platforms (GNU/Linux, OS/X,FreeBSD, etc.)R EFERENCES[1] D. L. Parnas, “On the criteria to be used in decomposing systems intomodules,” Commun. ACM, vol. 15, no. 12, pp. 1053–1058, 1972.[2] M. Montemerlo, N. Roy, and S. Thrun, “Perspectives on standardization in mobile robo

Fig. 2. A complete C program showing how to declare and transmit a message using the automatically generated C-language bindings for the types defined in Fig. 1. LCM also supports message type bindings for Python, Java, and MATLAB. The types in Fig. 1 show the basic structure of LCM types. The LCM

Related Documents:

Definition: lcm(a, b None) Docstring: The least common multiple of a and b, or if a is a list and b is omitted the least common multiple of all elements of a. Note that LCM is an alias for lcm. INPUT: * a,b - two elements of a ring with lcm or * a - a list or tuple of elements of a ring with lcm

content sr.no. description page no. 1. introduction 01 2. why monitor the resistive leakage current of lightning arresters.02 3. constructional details of zinc oxide (zno) la 04 4. condition monitoring of la by lcm iii 05 5. principle of lcm-iii 06 6. accessories of lcm-iii 07 7. how to use lcm iii 10 8. measured parameters 12

Potential noise impact from the proposed Cape Lambert rail marshalling yard will be generated rail movements, and by various activities associated activities in the marshalling yard such as horn blasts, pressure releases, shunting, etc. The applicable noise criteria are contained in State Planning Policy 5.4: Road and Rail Transport

(b) Akbar and Anthony will meet for the first time after 35 steps. (b) Amar and Anthony will meet for the first time after 21 steps. (d) Amar and Akbar will meet for the first time after 21 steps. Ans : Since LCM(3, 5) 15 ; LCM(5, 7) 35 ; LCM(3, 7) 21. Since, 15 is the smallest so Amar and Ak

(b) Index notation HCF Consider the smaller power for each of the base LCM Consider the bigger power for each of the base Example: Find the HCF and LCM for 24 x 75 x 114 and 28 x 33 x ?9. Express your answer in index notation. Solution: HCF LCM 8 Square and square root 2 Definition: Since 42 1

Least Common Multiple (Leap Count Man) . Let’s circle the multiples that 6 and 2 have in common The smallest multiple 6 and 2 have in common is 6 so, 6 is the LCM . The Cake Method An easy way to find the GCF AND LCM of two numbers is to think of the layers in a

The following are the steps involved in finding the LCM of 72 and 48 by prime factorization method. Arrange them in sequential order from first to last. (a) 72 23 32 and 48 24 31 (b) LCM 16 9 (c) All the distinct factors with highest exponents are 16 and 9 (A) abc (B) acb (C) cab (D) bca 45. The LCM of the polynomials 18 x x x 4 3 2

Academic writing is cautious, because many things are uncertain. When we put forward an argument, point of view or claim, we know that it can probably be contested and that not everybody would necessarily agree with it. We use words and phrases that express lack of certainty, such as: Appears to Tends to Seems to May indicate Might In some .