Automatic Analysis of Industrial Robot Programs Ocaml Users and Developers Meeting 2012

Automatic Analysis of Industrial Robot Programs Ocaml Users and Developers Meeting 2012

Automatic Analysis of Industrial Robot Programs OCaml Users and Developers Meeting 2012 Markus Weißmann, Stefan Bedenk, Florian Pichlmeier, Christian Buckl, Alois Knoll Technische Universit¨atM¨unchen Department of Informatics Robotics and Embedded Systems http://www6.in.tum.de 14.09.2012 Markus Weißmann, TUM 1 / 23 Outline 1 Industrial Robot Systems 2 Formal Verification 3 Results 4 OCaml Code 5 Experiences with OCaml 6 Conclusion Markus Weißmann, TUM 2 / 23 Outline 1 Industrial Robot Systems 2 Formal Verification 3 Results 4 OCaml Code 5 Experiences with OCaml 6 Conclusion Markus Weißmann, TUM 3 / 23 Industrial Robot Systems { Car Body Production Lines Highly automated, complex systems Different car models on same production line Downtime extremely expensive Up to 12 robots working in a cell Markus Weißmann, TUM 4 / 23 Industrial Robot Systems { Topology Distributed System of PLC and Robots Programming Logic Control (PLC) & robots work independently Incorrect handling of shared resources can lead to deadlocks and collisions (race conditions) Markus Weißmann, TUM 5 / 23 Robot Programming Language VKRC Command Semantics variable = expression Assignment of expression to variable GOTO LABEL id = expression Conditional jump to label id LABEL id Target of a jump subroutine = expression Conditional subroutine call REPEAT sub = n STOP = expr Call subroutine n-times WARTE BIS expression Wait until expression is met n PTP Move the robot arm to position n Markus Weißmann, TUM 6 / 23 Outline 1 Industrial Robot Systems 2 Formal Verification 3 Results 4 OCaml Code 5 Experiences with OCaml 6 Conclusion Markus Weißmann, TUM 7 / 23 Properties to verify Termination (deadlocks, ..) Freedom of collisions Robot 2 P1 -> P2 P2 -> P3 P3 -> P4 P1 -> P2 ok P2 -> P3 ok ok Robot 1 P3 -> P4 ok ok ok Claim for all potential collisions in Linear Temporal Logic :((target-positionn = i) ^ (target-positionm = k)) Markus Weißmann, TUM 8 / 23 Model Generation and Extraction RobotRobot RobotRobot Base Interlock Collision KUKA FANUC ControlControl ControlControl Data Matrix Claims ProgramControl ProgramControl ProgramProgram ProgramProgram Main PLC Collision KUKA FANUC Generator Generator Generator Compiler Compiler Collision PROMELA Main PLC RobotRobot RobotRobot Check Robot Robot library Process Process ProcessProcess ProcessProcess Process Process Process Linker Model Markus Weißmann, TUM 9 / 23 Model Verification and Trace System Model Trace RobotRobot I/O Defaults Replay KUKA ControlControl Data Configurator Renderer ProgramControl ProgramProgram Inter- Model' mediate Trace PROMELA Optimizer Spin library Reduced Promela Model Trace Code Promela Spin Generator Text Markus Weißmann, TUM 10 / 23 Replay Renderer Markus Weißmann, TUM 11 / 23 Figure 1: Two robot programs in deadlock Outline 1 Industrial Robot Systems 2 Formal Verification 3 Results 4 OCaml Code 5 Experiences with OCaml 6 Conclusion Markus Weißmann, TUM 12 / 23 Benchmarks #r #proc state size result time #states 4 5 112 bit deadlock 1 sec 6.2 x 106 3 4 152 bit non-termination <1 sec 196 4 5 184 bit ok 2 sec 1.5 x 106 4 5 196 bit ok 6 sec 3,5 x 106 4 5 202 bit ok 50 sec 2.4 x 107 4 5 208 bit deadlock 4 sec 106 9 11 678 bit deadlock <1 sec 5129 9 10 132 bit assertion <1 sec 32 10 11 506 bit out-of-memory ~50 min 109 8-core Intel Xeon E5630 (2.53 GHz) 64 GByte of main memory Markus Weißmann, TUM 13 / 23 Locking Protocol { Normal Operation Robot 2 Robot 1 PLC Request Token Grant Token Lock Area Release Token Unlock Area Figure 2: Robot 1 locks a resource for Robot 2 Markus Weißmann, TUM 14 / 23 Locking Protocol { Potential Deadlock Robot 1 PLC Robot 2 Request Token A Grant Token A Request Token A Request Token B Grant Token B Request Token B Figure 3: Robot can request second token without grant Markus Weißmann, TUM 15 / 23 Outline 1 Industrial Robot Systems 2 Formal Verification 3 Results 4 OCaml Code 5 Experiences with OCaml 6 Conclusion Markus Weißmann, TUM 16 / 23 OCaml Code we use menhir ocamlgraph { control flow graph in compilers, code analysis ocaml-csv { vital to read Microsoft Excel exports bolt extlib qtest (from batteries) { for testing our own code oasis and provide PROMELA library + tools (BSD3, OCamlForge) boolean expression simplifier (BSD3, OCamlForge) ocamlgraph algorithms: Fixpoint, Leaderlist, Contraction Markus Weißmann, TUM 17 / 23 PROMELA library example (∗ Create one dining philosopher process ∗) l e t d p process ~max id i d = l e t module PE = Promela.Expression i n l e t forkl, forkr = id, (id + 1) mod max id i n l e t check x = `Guard (PE.Binop (PE.Eq, (PE.Variable (fork id x)), (PE.ConstInt 0))) i n l e t a s s i g n v x = `Assign (fork id x, None,(PE.ConstInt v)) i n l e t take = assign 1 i n l e t release = assign 0 i n l e t c h e c k a n d t a k e x = `Atomic ((check x)::(take x)::[]) i n Promela.Process.create ~active:true (pid "PHIL%d" id) [ c h e c k a n d take forkl; check a n d t a k e f o r k r ; release forkl; release forkr] Markus Weißmann, TUM 18 / 23 ocamlgraph { fixpoint for data flow analysis (∗ compute reachability on a directed graph ∗) module Reachability = Graph.Fixpoint.Make(G) ( s t r u c t type vertex = G.E.vertex type edge = G . E . t type g = G . t type data = b o o l l e t direction = Graph.Fixpoint.Forward l e t e q u a l = (=) l e t j o i n = ( j j ) l e t a n a l y z e = ( fun x −> x ) end ) .. l e t v e r t e x i s r e a c h a b l e = Reachability.analyze is r o o t vertex graph i n Markus Weißmann, TUM 19 / 23 Outline 1 Industrial Robot Systems 2 Formal Verification 3 Results 4 OCaml Code 5 Experiences with OCaml 6 Conclusion Markus Weißmann, TUM 20 / 23 Experiences with OCaml On the team strong OCaml community at TUM no OO in use try to write pure code refactoring is a breeze finding students for projects is hard and with industrial partner Audi management feels strongly about results People in plant engineering are engineers, not computer scientists It is a research project Markus Weißmann, TUM 21 / 23 Outline 1 Industrial Robot Systems 2 Formal Verification 3 Results 4 OCaml Code 5 Experiences with OCaml 6 Conclusion Markus Weißmann, TUM 22 / 23 Conclusion Found multiple deadlock errors { even in protocol Formal Verification can even be cheaper than testing It is an option for analyzing large industrial robot systems Using OCaml for this project was a very good choice Weißmann et al., Model Checking Industrial Robot Systems, SPIN 2011 Markus Weißmann, TUM 23 / 23.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    23 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us