# fairino_project **Repository Path**: wind_stl/fairino_project ## Basic Information - **Project Name**: fairino_project - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-01 - **Last Updated**: 2026-07-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Fairino 机器人开发平台 ## 项目结构 ``` fairino_project/ ├── README.md ← 本文档 ├── setup.sh ← 环境初始化(先 source 这个) ├── fairino-python-sdk-master/ ← Python SDK(独立于 ROS2,不需要 ROS 环境) │ ├── linux/ ← Linux 版:Robot.py SDK + 示例 │ │ ├── fairino/ ← Python 封装(Cython 编译的 .so) │ │ ├── libfairino/ ← 底层 C 通信库 │ │ └── example/ ← 示例脚本(TPD、运动、IO 等) │ └── windows/ ← Windows 版(结构同上) │ ├── ros2_control_ws/ ← ROS2 控制框架工作空间(全部源码编译,不依赖 apt) │ └── src/ros-controls/ │ ├── ros2_control/ ← 【核心】ros2_control 框架 │ │ ├── controller_interface/ ← 控制器接口定义 │ │ ├── controller_manager/ ← 控制器管理器(加载/切换/运行) │ │ ├── hardware_interface/ ← 硬件抽象层(read/write/activate) │ │ ├── joint_limits_interface/ ← 关节限位接口 │ │ ├── transmission_interface/ ← 传动接口(减速比等) │ │ └── ros2controlcli/ ← 命令行工具 │ ├── ros2_controllers/ ← 【核心】标准控制器(轨迹/状态/力矩等) │ │ ├── joint_trajectory_controller/ ← MoveIt2 依赖的轨迹控制器 │ │ ├── joint_state_broadcaster/ ← 关节状态发布器 │ │ └── ... ← 其他 20+ 控制器 │ ├── ros2_control_demos/ ← 官方示例(各种场景 demo) │ ├── control_msgs/ ← 控制相关 ROS2 消息定义 │ ├── control_toolbox/ ← 控制算法工具箱(PID 等) │ ├── realtime_tools/ ← 实时线程工具 │ ├── kinematics_interface/ ← 运动学接口 │ ├── gz_ros2_control/ ← Gazebo 仿真桥接 │ │ ├── gz_ros2_control/ ← Gazebo 版插件 │ │ ├── gz_ros2_control_demos/ ← Gazebo 仿真示例 │ │ └── ign_ros2_control/ ← Ignition(旧版)插件 │ └── mujoco_ros2_control/ ← MuJoCo 仿真桥接 │ ├── mujoco_vendor/ ← MuJoCo 物理引擎(已打包,自包含) │ └── lodepng/ ← PNG 编码库(本地备份) │ └── ros2_ws/ ← Fairino 机器人工作空间 └── src/fairino_robot/ ├── fairino_description/ ← 机器人 URDF 模型 + STL 网格文件 ├── fairino_msgs/ ← 自定义 ROS2 消息/服务 ├── fairino_hardware_master/← 【核心】硬件接口 + 命令服务器(主线) │ ├── libfairino/ ← C++ SDK(FRRobot 类) │ └── src/ │ ├── fairino_hardware_interface.cpp ← ros2_control 插件 │ ├── command_server.cpp ← ROS2 Service(200+ API) │ └── CNDE_thread.cpp ← CNDE 实时状态采集 ├── fairino_hardware_v3_9_7/ ← 硬件接口版本(适配控制器 v3.9.7) ├── ..._v3_9_6/ .../ ← 其他固件版本(v3.8 ~ v3.9.7) ├── fairino*_v6_moveit2_config/ ← 各机型 MoveIt2 配置(共 7 个) │ └── config/ │ ├── *.urdf.xacro ← 机器人模型总成 │ └── *.ros2_control.xacro ← 仿真/真实硬件插件切换(第 9 行) └── fairino_mtc_demo/ ← MoveIt Task Constructor 演示 ``` ## 系统前提 目标机器只需安装以下 3 个包: ```bash sudo apt install -y ros-humble-ros-base ros-humble-moveit libglfw3-dev ``` > 所有其他依赖(ros2_control、ros2_controllers、MuJoCo 等)均在工作空间内源码编译,无需额外 apt 安装。 ## 包的加载来源 `setup.sh` 按顺序 source,后 source 的覆盖先 source 的: ``` /opt/ros/humble ← 底层(仅提供 ROS2 核心 + MoveIt2) ↓ 被覆盖 ros2_control_ws/install ← 中层(ros2_control 框架 + 控制器 + MuJoCo/Gazebo) ↓ 被覆盖 ros2_ws/install ← 最上层(fairino_hardware + MoveIt2 配置) ``` 所有控制和仿真相关的包均从本地工作空间加载,不依赖 apt。 ## 构建 ### 1. 加载环境 ```bash cd fairino_project source setup.sh ``` ### 2. 编译 ```bash # 先编译 ros2_control 框架及所有控制器(ros2_ws 依赖它) cd ros2_control_ws && colcon build # 再编译 Fairino 机器人相关包 cd ../ros2_ws && colcon build ``` > 首次编译 ros2_control_ws 约需 10-15 分钟(含 60+ 个包),后续增量编译秒级完成。 --- ## 启动方式 ### 场景一:MoveIt2 仿真(mock,无物理引擎,推荐入门) 使用 mock 硬件组件,在 RViz 中验证运动规划,无需连接机器人。 ```bash source setup.sh ros2 launch fairino10_v6_moveit2_config demo.launch.py ``` 其他机型替换 `fairino10_v6` 为:`fairino3_v6`、`fairino5_v6`、`fairino16_v6`、`fairino20_v6`、`fairino30_v6`、`fairino3mt_v6`。 **效果**:RViz 打开,显示机械臂 3D 模型,可拖拽末端规划运动轨迹。 --- ### 场景二:Gazebo 物理仿真(待配置) 支持碰撞、重力、传感器等物理交互。 前置步骤(尚未完成): 1. 将对应机型的 `ros2_control.xacro` 第 9 行改为 `gz_ros2_control/GazeboSystem` 2. 添加 Gazebo world 启动文件 --- ### 场景三:MuJoCo 物理仿真(待配置) 支持高精度动力学仿真,适合强化学习。 前置步骤(尚未完成): 1. 将对应机型的 `ros2_control.xacro` 第 9 行改为 `mujoco_ros2_simulation/MujocoSystemInterface` 2. 创建 MJCF 模型文件并编写 launch --- ### 场景四:连接真实机器人 1. 将对应机型 `ros2_control.xacro` 第 9 行改为 `fairino_hardware/FairinoHardwareInterface` 2. 确保 PC 与机器人控制器(默认 IP `192.168.58.2`)网络互通 3. 编译并启动: ```bash source setup.sh cd ros2_ws && colcon build ros2 launch fairino10_v6_moveit2_config demo.launch.py ``` --- ### 场景五:ROS2 Service 指令控制 适合集成到上层应用,通过 ROS2 Service 发送字符串指令: ```bash # 终端 1:启动命令服务器 ros2 run fairino_hardware_master ros2_cmd_server # 终端 2:发送指令 ros2 service call /fairino_remote_command_service \ fairino_msgs/srv/RemoteCmdInterface "{command: 'MoveJ(0,0,0,0,0,0)'}" ``` --- ### 场景六:Python SDK 直控(非 ROS2) 不依赖 ROS2,直接 Python 脚本控制机器人: ```bash cd fairino-python-sdk-master/linux python3 example/TestTPDCommand.py ``` 参考:https://fair-documentation.readthedocs.io/zh_CN/latest/SDKManual/python_intro.html --- ## 各组件关系 | | Python SDK | ROS2 (fairino_hardware) | 仿真 (mock/Gazebo/MuJoCo) | |---|---|---|---| | **语言** | Python (Cython) | C++ | C++ | | **通信协议** | CNDE + XML-RPC | CNDE + XML-RPC | 模拟(无物理 / 物理引擎) | | **依赖** | 无(独立运行) | ros2_control + MoveIt2 | ros2_control + 仿真引擎 | | **场景** | 脚本调试、简单任务 | 复杂集成、运动规划 | 离线开发、算法验证 | 三者**共享**同一套底层 `libfairino` 通信库,可根据需求选其一或组合使用。