AMBF 之 surgical robotics challenge

surgical robotics challenge 是用于模拟机器人缝合的交互式仿真平台。它通过 AMBF 实现机器人的底层物理仿真,并通过 ROS 与 AMBF实现通信。

在 surgical robotics challenge 中,提供了机器人仿真相关的资产 assets,具体包括场景中机器人模型文件、各类物体的模型文件等,并设计了多个仿真场景(提供了配置文件 *.yaml)。在 Scripts/ 文件夹中,提供了控制机器人实现某项操作任务的控制代码。其本质仍是通过 ros_client/ros_server 与物理引擎中的对象(如连杆等)通信,将多个对象打包成机械臂,并配合 FK/IK 等算法,提供机械臂的控制接口函数(如设定末端位置)等,从而实现对机械臂/机器人的控制功能。


1. Using the scripts with CRTK Method API

surgical_robotics_challenge 提供了两种控制机械臂的方式,其中之一便是 Using the scripts with CRTK Method API。即,通过建立 SimulationManager 作为 Client 来实现与机械臂的通信/传输控制指令;通过建立 ECM 类和 PSM 类,将机械臂打包,提供相应的控制接口函数。

1.1 机械臂运动学计算

相关代码在 scripts/surgical_robotics_challenge/kinematics/ 文件夹中。

首先,在 DH.py 文件中定义了 DH 类,即给定 DH 参数后,得到其次变换矩阵。其次,在 ecmFK.py 文件中,包含了 ECM (Endoscope Camera Manipulator) 运动学正解的功能,即 computeFK(...) ,给定关节位置后,即可计算得到末端的位置。最后,在 psmKinematics.py 文件中,包含了 PSM (Patient Side Manipulator) 的运动学正解和逆解的计算类 PSMKinematicSolver,即 PSMKinematicSolver.compute_FK(..)PSMKinematicSolver.compute_IK(..) 。此外,PSMKinematicSolver 还可以通过配置文件载入机械臂各个关节的 DH 参数,从而计算相应的齐次变换矩阵。

1.2 SimulationManager

SimulationManager 其实就是一个 Client (参见AMBF ROS通信模块 / ambf_ros_modules 中的 2.3),其能够通过 ros_server 发送的信息判断出场景中所有的物体对象 object,通过该 SimulationManager 便可读取/设置不同物体对象的位置信息。

1.3 Camera / ECM

在 camera.py 文件中,定义了 Camera 类,用于读取相机位置、设定相机视角等相关操作。

在 ecm_arm.py 文件中,定义了 ECM (Endoscope Camera Manipulator) 类,其能够读取相机的位姿矩阵、位置信息等,并通过伺服的方式控制相机运动到给定位置。例如 servo_cv(..),即设定相机的笛卡尔坐标;servo_jp(..) 即通过设定 ECM 的关节角度来控制相机位置。(注:其实作者貌似在这里做了简化,即直接控制 camera 的位置,没有真实的机械臂仿真。)

1.4 PSM

在 psm_arm.py 文件中,定义了 PSM 类,用于控制机械臂 PSM 的运动、读取关节/末端的位置等,并提供了诸如 run_grasp_logic(..) 等功能。其实我们可以理解这就是一个打包好的机械臂对象。

2. Using the CRTK-ROS interface

posted @ 2024-08-13 11:46  wghou09  阅读(26)  评论(0编辑  收藏  举报