產學合作 · 騰安科技Industry · Teng-An
ROS 機械手臂控制(Franka Panda)ROS Arm Control (Franka Panda)
於 Ubuntu 獨立建置 ROS Noetic,整合 Franka Emika Panda 驅動,實現即時運動控制與模擬同步。Built ROS Noetic on Ubuntu and integrated the Franka Emika Panda driver for real-time motion control and simulation sync.

概述Overview
大學二年級時,我參與了與「騰安科技」的產學合作案,負責研究 Franka Emika Panda 七軸協作型機械手臂的控制架構。任務目標是從一台乾淨的 Ubuntu 主機開始,獨立建立一套可重現的開發環境,讓手臂能同時被「實機」與「模擬」驅動,作為後續力控與應用開發的基礎。這個專案是我第一次完整接觸工業等級的機器人軟體堆疊,也大幅提升了我把研究成果落地的能力。In my sophomore year I joined an industry-collaboration project with Teng-An Technology, studying the control stack of the Franka Emika Panda 7-axis collaborative arm. The goal was to start from a clean Ubuntu host and independently build a reproducible environment in which the arm could be driven by both the physical hardware and simulation — a foundation for later force-control and application work. It was my first full exposure to an industrial-grade robotics software stack and greatly improved my ability to turn research into a working system.
建置流程Setup Pipeline
- 即時環境:Franka 的 FCI(Franka Control Interface)要求 1 kHz 的即時控制迴路,因此需編譯並掛載 PREEMPT_RT 即時核心,調校網路與排程延遲。Real-time host: Franka's FCI (Franka Control Interface) demands a 1 kHz control loop, so a PREEMPT_RT real-time kernel was built and installed, with network and scheduling latency tuned.
- 驅動整合:從原始碼建置
libfranka與franka_ros,串接 ROS Noetic 的控制器與硬體介面(hardware_interface)。Driver integration: builtlibfrankaandfranka_rosfrom source and wired them into ROS Noetic controllers and the hardware interface. - 運動規劃:以 MoveIt 進行關節/笛卡爾空間軌跡規劃與碰撞檢查,再下發至實機執行。Motion planning: used MoveIt for joint/Cartesian trajectory planning and collision checking before dispatching to the real arm.
- 模擬同步:以 RViz/Gazebo 重現手臂狀態,先在模擬中驗證軌跡,再與實機同步動作,降低撞機風險。Sim sync: mirrored arm state in RViz/Gazebo to validate trajectories in simulation first, then synchronized motion with the physical arm to reduce crash risk.
挑戰與收穫Challenges & Takeaways
最大的挑戰在於即時性——任何超過 1 ms 的迴路抖動都會觸發 Franka 的安全鎖死。我透過即時核心調校、降低非必要背景服務與網路設定,讓控制迴路穩定運行。整個過程讓我熟悉了 ROS 的節點/話題架構、即時 Linux 與真實硬體的安全邊界。The hardest part was real-time determinism — any loop jitter over 1 ms trips Franka's safety lockout. By tuning the real-time kernel, trimming background services, and adjusting the network, I kept the control loop stable. The work made me fluent in ROS's node/topic architecture, real-time Linux, and the safety envelope of real hardware.