Skip to content

机器人基础接口

以下的接口为机器人基础接口,主要为基础的上下电上下使能等操作,不包含危险指令,但是并非所有的机器人厂商都支持完整的操作流程。一般认为的机器人操作流程见下图:

机器人操作流程

  • version

获取驱动版本和机器人版本,一般来说是一样的,但是因厂商而异。如 Franka 存在版本兼容管理, 系统版本、驱动版本、机器人版本应当挂钩,否则会出现指令问题。注意该方法为关联函数(静态方法),不需要实例调用。

pub fn version() -> String
@classmethod
def version(cls) -> str: ...
static std::string version()
  • init

初始化机器人的操作,一般来说初始化完成的工作主要在于驱动和控制柜的初始化,初始化后的机器人一般是去使能的,避免突然启动导致的安全问题。

pub fn init(&mut self) -> RobotResult<()>
def init(self) -> None: ...
void init()
  • shutdown

关闭机器人的操作,一般来说关闭完成的工作主要在于驱动和控制柜的关闭,关闭过程中会自动对机器人去使能,但是为了安全还是建议在关闭前手动去使能。

pub fn shutdown(&mut self) -> RobotResult<()>
def shutdown(self) -> None: ...
void shutdown()
  • enable

使能机器人的操作,使能后的机器人会解开关节锁,此时可能会导致安全问题,使能过程的机器人一般应该保证周围空间环境的安全。使能后机器人可以进行运动操作。

pub fn enable(&mut self) -> RobotResult<()>
def enable(self) -> None: ...
void enable()
  • disable

去使能机器人的操作,去使能后的机器人会上锁关节,此时机器人会停止运动操作。

pub fn disable(&mut self) -> RobotResult<()>
def disable(self) -> None: ...
void disable()
  • reset

重置机器人的操作,重置后的机器人会回到初始状态,恢复初始状态过程中可能会导致运动安全问题,部分运动行为要求在重置后才能执行。

pub fn reset(&mut self) -> RobotResult<()>
def reset(self) -> None: ...
void reset()
  • is_moving

回答机器人是否在运动的问题,大多数机器人不能同时执行多个运动指令和控制指令,此时就需要判断机器人运动状态作为指令执行条件。

pub fn is_moving(&mut self) -> RobotResult<bool>
def is_moving(self) -> bool: ...
bool is_moving()
  • waiting_for_finish

等待机器人运动完成,该方法会阻塞当前线程直到机器人运动结束。适用于需要确保运动完成后再继续执行后续指令的场景。

pub fn waiting_for_finish(&mut self) -> RobotResult<()>
def waiting_for_finish(self) -> None: ...
void waiting_for_finish()
  • stop

停止机器人的运动,停止后的机器人会立即停止运动,该停止不可恢复,本指令并不会自动去使能。

pub fn stop(&mut self) -> RobotResult<()>
def stop(self) -> None: ...
void stop()
  • pause

暂停机器人当前的运动,暂停后的机器人可以通过 resume 恢复运动。与 stop 不同的是,pause 是可恢复的。

pub fn pause(&mut self) -> RobotResult<()>
def pause(self) -> None: ...
void pause()
  • resume

恢复运动状态,由 pause 指令暂停后的机器人可以通过 resume 恢复运动,但是触发 emergency_stop 后的机器人需要先 clear_emergency_stop 才能恢复运动。

pub fn resume(&mut self) -> RobotResult<()>
def resume(self) -> None: ...
void resume()
  • emergency_stop

急停!急停!急停!无论是来源于主动控制还是由于机器人自身的安全保护,这都代表机器人遇见了无法处理的问题,一般来说会对机器人去使能,部分机器人会直接下电。触发急停后的机器人需要先 clear_emergency_stop 才能恢复运动。

pub fn emergency_stop(&mut self) -> RobotResult<()>
def emergency_stop(self) -> None: ...
void emergency_stop()
  • clear_emergency_stop

清除急停状态,清除后机器人可以重新使能并恢复运动。

pub fn clear_emergency_stop(&mut self) -> RobotResult<()>
def clear_emergency_stop(self) -> None: ...
void clear_emergency_stop()
  • read_state

读取由机器人厂商提供的原生状态结构体

pub fn read_state(&mut self) -> RobotResult<Self::State>
def read_state(self) -> RobotState: ...
Self::State read_state()

辅助特征

  • RobotFile

标记特征,声明机器人的 URDF 文件路径,用于仿真和可视化。

pub trait RobotFile {
    const URDF: &'static str;
}
  • Realtime

标记特征,表示该机器人支持实时控制。

pub trait Realtime {}