克隆后还缺仿真安装树和两边的编译目录。把 build、build_sim、install_sim 一并放进仓库;仿真入口不再写死本机 conda,build 里指向源码的链接改成相对路径。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
arm_dev
2026-10-15 11:07:04 +08:00
parent 926a7f9796
commit 80983954a4
5804 changed files with 2640781 additions and 3 deletions
@@ -0,0 +1,14 @@
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:msg/ArmStatus.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:msg/JointCommand.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:msg/GripperCommand.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:msg/GripperStatus.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:msg/HoleDetection.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:msg/HoleDetections.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:msg/TactileStatus.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:srv/SetNamedPose.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:srv/GetArmState.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:srv/GripperExecute.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:srv/SwitchTool.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:action/MoveToPose.idl
/home/cc/ros2/build_sim/arm_msgs/rosidl_adapter/arm_msgs:action/FollowJointTrajectory.idl
/home/cc/ros2/build_sim/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;
};
};
};