BB.Error.Invalid.Feetech.DuplicateServoId exception (bb_servo_feetech v0.7.0)

Copy Markdown View Source

Two actuators on one controller claim the same servo ID.

Raised when the second of them registers. A servo ID addresses one servo on one bus, and the controller keys its shared table on it, so a second claim would take over the first actuator's row: only the later joint would receive position feedback, and the two would overwrite each other's pending commands every tick.

This is a configuration mistake rather than a wiring one. Two servos sharing an ID is a different problem, and one the bus reports for itself — they both answer the same read and the frames collide. Use mix feetech.scan to see what is actually out there.

Summary

Types

t()

@type t() :: %BB.Error.Invalid.Feetech.DuplicateServoId{
  __exception__: term(),
  actuator_path: [atom()],
  bread_crumbs: term(),
  class: term(),
  path: term(),
  registered_path: [atom()],
  servo_id: non_neg_integer(),
  splode: term(),
  stacktrace: term(),
  vars: term()
}

Functions

exception(args)

@spec exception(opts :: Keyword.t()) :: %BB.Error.Invalid.Feetech.DuplicateServoId{
  __exception__: term(),
  actuator_path: term(),
  bread_crumbs: term(),
  class: term(),
  path: term(),
  registered_path: term(),
  servo_id: term(),
  splode: term(),
  stacktrace: term(),
  vars: term()
}

Create an Elixir.BB.Error.Invalid.Feetech.DuplicateServoId without raising it.

Keys

  • :servo_id
  • :actuator_path
  • :registered_path