2025年3月10日 星期一

ROS 套件安裝及指令範例

ROS 相關指令整理與說明


1. ROS 安裝相關指令

完整安裝

bash
sudo apt install ros-noetic-desktop-full

安裝包含 rqt、rviz、機器人資料庫、2D/3D 感知模擬

普通安裝

bash
sudo apt install ros-noetic-desktop

安裝 ROS、rqt、rviz,但不包含 2D/3D 感知模擬。

基礎安裝

bash
sudo apt install ros-noetic-ros-base

僅安裝 ROS 架構,不含 GUI 工具。

指定安裝特定 ROS 套件

bash
sudo apt install ros-noetic-PACKAGE

安裝特定 ROS 套件

安裝 Gazebo

bash
sudo apt install ros-noetic-gazebo-ros

安裝 ROS Noetic & Gazebo 11


2. 安裝 ROS 控制器

bash
sudo apt update sudo apt install ros-noetic-ros-control ros-noetic-ros-controllers

安裝 ROS 控制器管理與控制器模組


3. 安裝 MoveIt! 套件

bash
sudo apt update sudo apt install ros-noetic-moveit sudo apt install ros-noetic-moveit-tutorials sudo apt install ros-noetic-franka-description

安裝 MoveIt! 運動規劃套件

確認 MoveIt! 安裝成功

bash
rospack find moveit_tutorials

應顯示 MoveIt! 相關目錄


4. ROS 套件檢查

檢查是否已安裝特定 ROS 套件

bash
apt list --installed | grep ros-noetic-ros-controllers

檢查控制器類型是否已載入

bash
rosservice call /controller_manager/list_controller_types

5. 設定 YAML 參數

打開 joint_trajectory_controller.yaml

bash
nano ~/data/robotxtest5_ws/src/robot_arm_urdf/config/joint_trajectory_controller.yaml

手動加載 YAML

bash
rosparam load ~/data/robotxtest5_ws/src/robot_arm_urdf/config/joint_trajectory_controller.yaml

確認 YAML 是否加載

bash
rosparam list | grep robot_arm_controller

6. 確保 Launch File 載入 YAML

打開 robot_arm_control.launch

bash
nano ~/data/robotxtest5_ws/src/robot_arm_urdf/launch/robot_arm_control.launch

確保以下行存在

xml
<rosparam file="$(find robot_arm_urdf)/config/joint_trajectory_controller.yaml" command="load"/>

重新啟動 Launch

bash
roslaunch robot_arm_urdf robot_arm_control.launch rosservice call /controller_manager/list_controllers

7. 手動啟動 ROS 控制器

嘗試手動加載 robot_arm_controller

bash
rosrun controller_manager spawner robot_arm_controller

檢查 Launch 檔案是否正確設定

xml
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="joint_state_controller robot_arm_controller hand_ee_controller"/>

重新啟動 Launch

bash
roslaunch robot_arm_urdf robot_arm_control.launch

8. 確保 Gazebo 已加載 gazebo_ros_control

檢查 Gazebo 是否載入控制插件

bash
rostopic list | grep gazebo

應顯示

bash
/gazebo/link_states /gazebo/model_states /gazebo/set_model_configuration /gazebo/set_link_state /gazebo/set_model_state

如果沒有,檢查 URDF 檔案

bash
nano ~/data/robotxtest5_ws/src/robot_arm_urdf/urdf/robot_arm_urdf.urdf

確保 URDF 內有 gazebo_ros_control

xml
<gazebo> <plugin name="control" filename="libgazebo_ros_control.so"> <robotNamespace>/</robotNamespace> </plugin> </gazebo>

重新啟動 Gazebo

bash
roslaunch robot_arm_urdf robot_arm_control.launch

確認 Gazebo 插件是否載入

bash
rosparam list | grep gazebo_ros_control

重新載入 URDF

bash
rosparam load ~/data/robotxtest5_ws/src/robot_arm_urdf/urdf/robot_arm_urdf.urdf robot_description

確認 URDF 內 Joint 是否正確

bash
rosparam get /robot_description | grep joint

9. 確保控制器 (rosbot_arm_control) 正確啟動

檢查控制器狀態

bash
rosservice call /controller_manager/list_controllers

如果顯示

bash
name: "rosbot_arm_control" state: "running"

代表 控制器已成功啟動

如果 state: stopped,請手動啟動

bash
rosrun controller_manager spawner rosbot_arm_control

檢查 /rosbot_arm_control/command 是否發送消息

bash
rostopic echo /rosbot_arm_control/command

10. 調整 Gazebo 物理引擎

修改 Gazebo 物理引擎設定

xml
<world name="default"> <physics type="ode"> <real_time_update_rate>1000</real_time_update_rate> <max_step_size>0.001</max_step_size> <ode> <solver> <type>quick</type> <iters>50</iters> </solver> </ode> </physics> </world>

確保 Gazebo 沒有暫停

bash
rosservice call /gazebo/unpause_physics

如果關節無法運動,手動設定初始值

bash
rosservice call /gazebo/set_model_configuration '{model_name: robot_arm, urdf_param_name: robot_description, joint_names: ["joint_1", "joint_2", "joint_3"], joint_positions: [0.1, -0.2, 0.3]}'

確認 Gazebo 是否正確接收關節運動指令


11. 測試手動發送 Joint Trajectory

發送測試指令

bash
rostopic pub -1 /rosbot_arm_control/command trajectory_msgs/JointTrajectory ' joint_names: ["joint_1", "joint_2", "joint_3", "joint_4", "joint_5", "joint_6"] points: - positions: [0.2, -0.5, 0.8, -1.2, 0.3, 0.1] time_from_start: {secs: 5, nsecs: 0}'

確認機械手臂是否能正確執行運動軌跡

#這份整理提供了一系列 ROS Noetic 安裝、檢查、設定、啟動控制器、Gazebo 模擬、手動發送測試指令的完整流程。

沒有留言:

張貼留言