Skip to content

Robot software

Benedek Horvath edited this page Oct 3, 2017 · 6 revisions

Robot Control Software

Disclaimer: Information that is presented here, might be deprecated.

Component owner: Anna, Marci
Date of assessment: 2016-05-10

Current status

  • A state machine determines the control logic of the robot

    • Written in Yakindu

    • Main capabilities of the state machine

      • An automated, pre-defined control sequence can be initiated in a dedicated state. This complex sequence is decomposed of multiple states

      • When manual control is active, states express the action to be taken in a "do" statement. Events generated by the motors and the sensors fire the transition back to the "IDLE" state

    • The state machine contains some safety considerations

      • If the grabber crane is lifted, it cannot be opened

      • If the grabber crane is lowered, the arm cannot rotate around the basis

      • There are transitions for emergency events that drive the state machine to a "STOP" state, which is basically a deadlock

    • Sends high level commands

  • Glue code consists of two main parts:

    • Glue code for MQTT

      • Publishes the messages to a designated MQTT topic

      • Subscribes to a given channel

    • Glue code for event and action translation

      • Converts messages to and from the protocol used by other components

      • Runs the code generated from the state machine

Issues and TODOs

  • Due to the unreliable signals of the end-state sensors (touch sensors), occasionally the end states are not detected correctly. For this reason the initialization of the robot is a bit hacky (we can select if we want to skip the initialization step of the robot and set some values manually)

  • Error handling is missing from the glue code

  • Javadoc

  • Basic documentation for the state machine

  • Tests

  • Use the MQTT broker of the table

    • Use QoS

    • Use retained messages in event driven devices to store latest state for devices subsribing later

  • Logging and monitoring

Development directions:

  • Decouple the glue code and the state machine code as much as possible

  • Use hierarchical state machines

    • Also try to extract the glue code to state machines as much as possible

  • Monitoring using the GUI of the state machine

  • Anna: 1-2 month of work in the summer, potentially TDK

  • Marci: 1-2 month of work in the summer, potentially TDK

Clone this wiki locally