克隆后还缺仿真安装树和两边的编译目录。把 build、build_sim、install_sim 一并放进仓库;仿真入口不再写死本机 conda,build 里指向源码的链接改成相对路径。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:msg/ArmStatus.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:msg/JointCommand.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:msg/GripperCommand.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:msg/GripperStatus.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:msg/HoleDetection.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:msg/HoleDetections.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:msg/TactileStatus.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:srv/SetNamedPose.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:srv/GetArmState.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:srv/GripperExecute.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:srv/SwitchTool.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:action/MoveToPose.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:action/FollowJointTrajectory.idl
|
||||
/home/cc/ros2/build/arm_msgs/rosidl_adapter/arm_msgs:action/CompliantDescent.idl
|
||||
@@ -0,0 +1,116 @@
|
||||
// generated from rosidl_adapter/resource/action.idl.em
|
||||
// with input from arm_msgs/action/CompliantDescent.action
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "geometry_msgs/msg/PoseStamped.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module action {
|
||||
@verbatim (language="comment", text=
|
||||
"柔顺下臂:从当前悬停位姿沿工具系 −Z 缓慢下压,直到触觉检测到接触。" "\n"
|
||||
"" "\n"
|
||||
"通止规装配 S07(下臂接触)专用原语。" "\n"
|
||||
"" "\n"
|
||||
"为什么不用 RDK 的柔顺模式:非夕 RDK 的 compliant motion 会接管整臂阻抗," "\n"
|
||||
"而装配的其它阶段(跟踪 / 对准 / 拧入)都走 JTC 位置控制;在两种控制权之间" "\n"
|
||||
"来回切换代价高、掉电风险大。这里用「小幅步进 + 力反馈」在应用层做等效:" "\n"
|
||||
"每步 0.2~1.0 mm,步间等稳定,一旦切向力相对基线跳变立即停住。" "\n"
|
||||
"对通止规这种「碰到就必须停」的场景足够,而且任何一步都可以安全中断。" "\n"
|
||||
"" "\n"
|
||||
"力阈值全部是「相对静止基线的增量」:Orisys 读数是形变任意单位且基线会漂移," "\n"
|
||||
"绝对值没有意义。基线由传感器节点的 measure_baseline 服务在启动时测定。")
|
||||
struct CompliantDescent_Goal {
|
||||
@verbatim (language="comment", text=
|
||||
"--- 目标与判据 ---" "\n"
|
||||
"目标法兰 X(基座系,m)。NaN = 保持当前 XY 不动")
|
||||
double target_x_m;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"目标法兰 Y(基座系,m)。NaN = 保持当前 XY 不动")
|
||||
double target_y_m;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"监测哪条切向通道:0 = 第一路切向,1 = 第二路切向")
|
||||
double contact_axis;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"接触判据:|切向力| 相对静止基线的增量(传感器原生单位)")
|
||||
double contact_delta;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"法向力安全上限(相对基线增量)。<=0 = 不检查")
|
||||
double max_normal_delta;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"用哪只手指的触觉:left | right(装配时是持规那只)")
|
||||
string side;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"--- 运动参数 ---" "\n"
|
||||
"每步下压量(m),建议 0.0002 ~ 0.0010")
|
||||
double descent_step_m;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"名义下压速度(m/s)。步进间隔 = step / speed")
|
||||
double descent_speed_mps;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"最多下压距离(m)。安全上限,到了判失败并停住")
|
||||
double max_descent_m;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"每步后等待稳定(s)。0 = 不等,靠触觉话题新鲜度")
|
||||
double settle_sec;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"总超时(s)。0 = 由 max_descent_m / descent_speed_mps 推算")
|
||||
double timeout_sec;
|
||||
};
|
||||
struct CompliantDescent_Result {
|
||||
@verbatim (language="comment", text=
|
||||
"true = 检测到接触且已停住")
|
||||
boolean success;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"失败原因:超时 / 触觉断流 / 达到行程上限 / 法向力超限")
|
||||
string message;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"接触瞬间的法兰位姿(基座系)")
|
||||
geometry_msgs::msg::PoseStamped contact_pose;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"实际下压距离(m)")
|
||||
double descended_m;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"触发瞬间的切向增量")
|
||||
double contact_delta_observed;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"触发瞬间的法向增量")
|
||||
double normal_delta_observed;
|
||||
};
|
||||
struct CompliantDescent_Feedback {
|
||||
@verbatim (language="comment", text=
|
||||
"0.0 ~ 1.0(descended_m / max_descent_m)")
|
||||
double progress;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"当前已下压距离(m)")
|
||||
double descended_m;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"当前切向增量(相对基线)")
|
||||
double tangential_delta;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"当前法向增量(相对基线)")
|
||||
double normal_delta;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"approaching | contacting | retracting | done | error")
|
||||
string status;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,42 @@
|
||||
// generated from rosidl_adapter/resource/action.idl.em
|
||||
// with input from arm_msgs/action/FollowJointTrajectory.action
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
|
||||
module arm_msgs {
|
||||
module action {
|
||||
@verbatim (language="comment", text=
|
||||
"Simplified joint-space trajectory used by mock / named-pose stack." "\n"
|
||||
"MoveIt / ros2_control use control_msgs/FollowJointTrajectory; a bridge" "\n"
|
||||
"converts when backend:=moveit or backend:=real.")
|
||||
struct FollowJointTrajectory_Goal {
|
||||
sequence<string> joint_names;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"flattened: num_points * num_joints")
|
||||
sequence<double> positions;
|
||||
|
||||
uint32 num_points;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"length = num_points, seconds")
|
||||
sequence<double> time_from_start;
|
||||
|
||||
double velocity_scale;
|
||||
};
|
||||
struct FollowJointTrajectory_Result {
|
||||
boolean success;
|
||||
|
||||
string message;
|
||||
|
||||
sequence<double> final_positions;
|
||||
};
|
||||
struct FollowJointTrajectory_Feedback {
|
||||
uint32 current_point;
|
||||
|
||||
double progress;
|
||||
|
||||
string status;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,35 @@
|
||||
// generated from rosidl_adapter/resource/action.idl.em
|
||||
// with input from arm_msgs/action/MoveToPose.action
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "geometry_msgs/msg/PoseStamped.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module action {
|
||||
@verbatim (language="comment", text=
|
||||
"Cartesian goal for tcp / tool0 (implemented by MoveIt backend)")
|
||||
struct MoveToPose_Goal {
|
||||
geometry_msgs::msg::PoseStamped target_pose;
|
||||
|
||||
double velocity_scale;
|
||||
|
||||
double acceleration_scale;
|
||||
|
||||
boolean avoid_collisions;
|
||||
};
|
||||
struct MoveToPose_Result {
|
||||
boolean success;
|
||||
|
||||
string message;
|
||||
|
||||
sequence<double> final_joint_positions;
|
||||
};
|
||||
struct MoveToPose_Feedback {
|
||||
geometry_msgs::msg::PoseStamped current_pose;
|
||||
|
||||
double progress;
|
||||
|
||||
string status;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,36 @@
|
||||
// generated from rosidl_adapter/resource/msg.idl.em
|
||||
// with input from arm_msgs/msg/ArmStatus.msg
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "geometry_msgs/msg/PoseStamped.idl"
|
||||
#include "std_msgs/msg/Header.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module msg {
|
||||
@verbatim (language="comment", text=
|
||||
"High-level arm status for monitoring / HMI")
|
||||
struct ArmStatus {
|
||||
std_msgs::msg::Header header;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"idle | moving | error | estop")
|
||||
string mode;
|
||||
|
||||
boolean is_moving;
|
||||
|
||||
boolean is_homed;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"rad")
|
||||
sequence<double> joint_positions;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"rad/s")
|
||||
sequence<double> joint_velocities;
|
||||
|
||||
geometry_msgs::msg::PoseStamped ee_pose;
|
||||
|
||||
string error_message;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,33 @@
|
||||
// generated from rosidl_adapter/resource/msg.idl.em
|
||||
// with input from arm_msgs/msg/GripperCommand.msg
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "std_msgs/msg/Header.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module msg {
|
||||
struct GripperCommand {
|
||||
std_msgs::msg::Header header;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"init|init_full|connect|open|close|stop|move|rotate|rotate_to|rotate_by|rotate_revolutions|home_rotation|set_force|set_speed|set_finger_force|set_finger_speed")
|
||||
string command;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"command=move: 平行夹爪行程 mm;command=rotate/rotate_by: 角度 deg;command=rotate_revolutions: 圈数")
|
||||
double position;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"速度百分比(1~100)")
|
||||
double speed;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"力/力矩百分比(DH 一般 20~100)")
|
||||
double force;
|
||||
|
||||
boolean wait_complete;
|
||||
|
||||
double timeout;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,60 @@
|
||||
// generated from rosidl_adapter/resource/msg.idl.em
|
||||
// with input from arm_msgs/msg/GripperStatus.msg
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "std_msgs/msg/Header.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module msg {
|
||||
struct GripperStatus {
|
||||
std_msgs::msg::Header header;
|
||||
|
||||
string name;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"parallel|rotary")
|
||||
string gripper_type;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"IDLE|MOVING|GRIPPING|RELEASING|ERROR")
|
||||
string state;
|
||||
|
||||
boolean connected;
|
||||
|
||||
boolean initialized;
|
||||
|
||||
boolean is_moving;
|
||||
|
||||
boolean is_gripped;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"平行夹爪:当前行程 mm;旋转夹爪:当前旋转角度 deg")
|
||||
double position;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"RGI 旋转夹爪额外反馈;平行夹爪为 0")
|
||||
double finger_position_per_mille;
|
||||
|
||||
double rotation_deg;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"DH 原始状态字;未读到为 -1" "\n"
|
||||
"0 moving, 1 reached, 2 object caught, 3 object dropped")
|
||||
int32 gripper_state;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"RGI: 0 moving, 1 reached, 2 blocking, 3 had been blocked")
|
||||
int32 rotation_state;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"最近一次命令速度 %")
|
||||
double velocity;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"最近一次命令力/力矩 %")
|
||||
double force;
|
||||
|
||||
string error_msg;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
// generated from rosidl_adapter/resource/msg.idl.em
|
||||
// with input from arm_msgs/msg/HoleDetection.msg
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
|
||||
module arm_msgs {
|
||||
module msg {
|
||||
struct HoleDetection {
|
||||
float u;
|
||||
|
||||
float v;
|
||||
|
||||
float radius_px;
|
||||
|
||||
float confidence;
|
||||
|
||||
string label;
|
||||
|
||||
sequence<int32> bbox;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
// generated from rosidl_adapter/resource/msg.idl.em
|
||||
// with input from arm_msgs/msg/HoleDetections.msg
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "arm_msgs/msg/HoleDetection.idl"
|
||||
#include "std_msgs/msg/Header.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module msg {
|
||||
struct HoleDetections {
|
||||
std_msgs::msg::Header header;
|
||||
|
||||
boolean ok;
|
||||
|
||||
string message;
|
||||
|
||||
sequence<arm_msgs::msg::HoleDetection> holes;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
// generated from rosidl_adapter/resource/msg.idl.em
|
||||
// with input from arm_msgs/msg/JointCommand.msg
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "std_msgs/msg/Header.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module msg {
|
||||
@verbatim (language="comment", text=
|
||||
"Single-shot joint command (position or velocity)")
|
||||
struct JointCommand {
|
||||
std_msgs::msg::Header header;
|
||||
|
||||
sequence<string> joint_names;
|
||||
|
||||
sequence<double> positions;
|
||||
|
||||
sequence<double> velocities;
|
||||
|
||||
sequence<double> accelerations;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"seconds")
|
||||
double time_from_start;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,33 @@
|
||||
// generated from rosidl_adapter/resource/msg.idl.em
|
||||
// with input from arm_msgs/msg/TactileStatus.msg
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "std_msgs/msg/Header.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module msg {
|
||||
struct TactileStatus {
|
||||
std_msgs::msg::Header header;
|
||||
|
||||
string side;
|
||||
|
||||
boolean connected;
|
||||
|
||||
boolean contact;
|
||||
|
||||
float fnormal;
|
||||
|
||||
float fshearx;
|
||||
|
||||
float fsheary;
|
||||
|
||||
float fps;
|
||||
|
||||
float centroid_u;
|
||||
|
||||
float centroid_v;
|
||||
|
||||
string error_msg;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,24 @@
|
||||
// generated from rosidl_adapter/resource/srv.idl.em
|
||||
// with input from arm_msgs/srv/GetArmState.srv
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "geometry_msgs/msg/PoseStamped.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module srv {
|
||||
struct GetArmState_Request {
|
||||
uint8 structure_needs_at_least_one_member;
|
||||
};
|
||||
struct GetArmState_Response {
|
||||
boolean success;
|
||||
|
||||
string mode;
|
||||
|
||||
sequence<double> joint_positions;
|
||||
|
||||
geometry_msgs::msg::PoseStamped ee_pose;
|
||||
|
||||
string message;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
// generated from rosidl_adapter/resource/srv.idl.em
|
||||
// with input from arm_msgs/srv/GripperExecute.srv
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
#include "arm_msgs/msg/GripperCommand.idl"
|
||||
#include "arm_msgs/msg/GripperStatus.idl"
|
||||
|
||||
module arm_msgs {
|
||||
module srv {
|
||||
struct GripperExecute_Request {
|
||||
arm_msgs::msg::GripperCommand command;
|
||||
};
|
||||
struct GripperExecute_Response {
|
||||
boolean success;
|
||||
|
||||
string message;
|
||||
|
||||
arm_msgs::msg::GripperStatus status;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,25 @@
|
||||
// generated from rosidl_adapter/resource/srv.idl.em
|
||||
// with input from arm_msgs/srv/SetNamedPose.srv
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
|
||||
module arm_msgs {
|
||||
module srv {
|
||||
@verbatim (language="comment", text=
|
||||
"Move to a named pose defined in config (home, ready, inspect, pos_left, ...)")
|
||||
struct SetNamedPose_Request {
|
||||
string pose_name;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"(0, 1], 1 = full speed")
|
||||
double velocity_scale;
|
||||
|
||||
double acceleration_scale;
|
||||
};
|
||||
struct SetNamedPose_Response {
|
||||
boolean success;
|
||||
|
||||
string message;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,49 @@
|
||||
// generated from rosidl_adapter/resource/srv.idl.em
|
||||
// with input from arm_msgs/srv/SwitchTool.srv
|
||||
// generated code does not contain a copyright notice
|
||||
|
||||
|
||||
module arm_msgs {
|
||||
module srv {
|
||||
@verbatim (language="comment", text=
|
||||
"切换到已保存的工具坐标系(如 tool1)。" "\n"
|
||||
"" "\n"
|
||||
"背景:非夕的工具坐标系(TCP + 质量 + 质心)在 Studio 里预先配好并命名," "\n"
|
||||
"RDK 只提供「按名字切换」一个操作。通止规装配要求工具系全程垂直向下锁定," "\n"
|
||||
"所以在流程开始前必须确认已切到正确的工具。" "\n"
|
||||
"" "\n"
|
||||
"实现:arm_driver_flexiv 调用 scripts/rdk_switch_tool.py(子进程,rdk_py310)。" "\n"
|
||||
"注意 RDK 是独占访问,切换时臂必须处于 IDLE 且没有其它进程连着 RDK。")
|
||||
struct SwitchTool_Request {
|
||||
@verbatim (language="comment", text=
|
||||
"Studio 里已保存的工具名。空字符串 = 只查询当前状态,不切换")
|
||||
string tool_name;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"目标臂 SN(如 Rizon4-063989)。空 = 用 site.yaml 的 robot.sn")
|
||||
string sn;
|
||||
};
|
||||
typedef double double__3[3];
|
||||
struct SwitchTool_Response {
|
||||
@verbatim (language="comment", text=
|
||||
"是否已达到目标状态(已在该工具上也算成功)")
|
||||
boolean success;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"失败原因;成功时为当前工具名说明")
|
||||
string message;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"操作后的当前工具名")
|
||||
string current_tool;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"该工具的质量(kg);查询不到为 0")
|
||||
double tool_mass_kg;
|
||||
|
||||
@verbatim (language="comment", text=
|
||||
"该工具的质心(法兰系,m);查询不到为全 0")
|
||||
double__3 tool_com_m;
|
||||
};
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user