MBot CLI Tools

Last Updated: Oct 10, 2024

This guide provides an overview of all command line tools in the MBot ecosystem.

Contents

Currently, there are 3 tools available:

  • mbot-lcm-spy: Monitors all LCM traffic on the MBot.
  • mbot-service: Manages and monitors MBot system services.
  • mbot-lcm-msg: Inspects the data structure of MBot LCM messages.

The codebase for these tools is located in mbot_lcm_base/mbot_sys_cli.

Installation

If mbot_lcm_base is installed correctly, all MBot CLI tools are already installed.

To find them:

  • Enter mbot in the terminal and hit “Enter” key. The available tools will be printed out:
      mbot@mbot-pi5base-test1:~ $ mbot
      Usage: mbot {service|lcm-spy|lcm-msg} [args]
    
  • Auto-completion is also available: type mbot (with a space) and hit the “Tab” key to list available tools.
      mbot@mbot-pi5base-test1:~ $ mbot 
      lcm-msg  lcm-spy  service     
    
  • If the above command doesn’t work, close current terminal and open a new one. (Although this shouldn’t be necessary)

Demo:

mbot-lcm-spy

Usage

mbot lcm-spy [-h] [--channels CHANNELS] [--rate RATE] [--module MODULE]

Options

  • -h, --help: Show this help message and exit
  • --channels CHANNELS: Comma-separated list of channel names to print decoded messages
  • --rate RATE: Rate at which data is printed in Hz (default: 1 Hz)
  • --module MODULE: Module to use for decoding messages (default: “mbot_lcm_msgs”)

Press CTRL+C to quit

When to use?

When you are looking for the answers to:

  • Is the MBot velocity message being sent out?
    • mbot lcm-spy
  • Why are the odometry values cutting off?
    • mbot lcm-spy --channels MBOT_ODOMETRY
  • Are both the MBot velocity and odometry being updated?
    • mbot lcm-spy --channels MBOT_ODOMETRY,MBOT_VEL
  • Is the LIDAR lagging? What’s the message frequency?
    • mbot lcm-spy
  • Just set up a new channel, is it working?
    • mbot lcm-spy

Demo

mbot-service

Usage

mbot service {list|status|log|start|stop|restart|enable|disable} [service_name]
Actions:
  list       List all mbot- services
  status     Status of all mbot- services or a specific service
  log        Show log for the service
  start      Start the service
  stop       Stop the service
  restart    Restart the service
  enable     Enable the service (not immediate start)
  disable    Disable the service (not immediate stop)

Examples:
  mbot service list
  mbot service status
  mbot service status mbot-xxx.service
  mbot service log mbot-xxx.service
  mbot service start mbot-xxx.service
  mbot service stop mbot-xxx.service
  mbot service restart mbot-xxx.service
  mbot service enable mbot-xxx.service
  mbot service disable mbot-xxx.service

When to use?

When you are looking for the answers to:

  • What services are installed?
    • mbot service list
  • What was the name of that service… motion controller something?
    • mbot service list
  • Is mbot-motion-controller.service running?
    • mbot service status mbot-motion-controller.service
  • Why did mbot-start-network.service failed?
    • mbot service log mbot-start-network.service
  • I need to stop mbot-motion-controller.service for now
    • mbot service stop mbot-motion-controller.service
  • I’m in development and want to disable mbot-motion-controller.service
    • mbot service disable mbot-motion-controller.service
  • Did I stop mbot-slam.service? Was it still running?
    • mbot service status mbot-slam.service
    • mbot service log mbot-slam.service

Demo

mbot-lcm-msg

Usage

mbot lcm-msg [-h] [--module MODULE] {show,list} ...

positional arguments:
  {show,list}      sub-command help
    show           Output the message definition
    list           List all available LCM messages

options:
  -h, --help       show this help message and exit
  --module MODULE  Module to use for decoding messages

When to use?

When you are looking for the answers to:

  • What LCM message types are available?
    • mbot lcm-msg list
  • What is pose3D_t? How about pose2D_t?
    • mbot lcm-msg show pose3D_t
    • mbot lcm-msg show pose3D_t,pose2D_t (this will print both pose3D_t and pose2D_t data structure)
  • I just added a new message type, is it installed?
    • mbot lcm-msg list

Demo