ROS 相關指令整理與說明
1. ROS 安裝相關指令
完整安裝
bashsudo apt install ros-noetic-desktop-full
安裝包含 rqt、rviz、機器人資料庫、2D/3D 感知模擬。
普通安裝
bashsudo apt install ros-noetic-desktop
安裝 ROS、rqt、rviz,但不包含 2D/3D 感知模擬。
基礎安裝
bashsudo apt install ros-noetic-ros-base
僅安裝 ROS 架構,不含 GUI 工具。
指定安裝特定 ROS 套件
bashsudo apt install ros-noetic-PACKAGE
安裝特定 ROS 套件。
安裝 Gazebo
bashsudo apt install ros-noetic-gazebo-ros
安裝 ROS Noetic & Gazebo 11。
2. 安裝 ROS 控制器
bashsudo apt update sudo apt install ros-noetic-ros-control ros-noetic-ros-controllers
安裝 ROS 控制器管理與控制器模組。
3. 安裝 MoveIt! 套件
bashsudo apt update sudo apt install ros-noetic-moveit sudo apt install ros-noetic-moveit-tutorials sudo apt install ros-noetic-franka-description
安裝 MoveIt! 運動規劃套件。
確認 MoveIt! 安裝成功
bashrospack find moveit_tutorials
應顯示 MoveIt! 相關目錄。
4. ROS 套件檢查
檢查是否已安裝特定 ROS 套件
bashapt list --installed | grep ros-noetic-ros-controllers
檢查控制器類型是否已載入
bashrosservice call /controller_manager/list_controller_types
5. 設定 YAML 參數
打開 joint_trajectory_controller.yaml
bashnano ~/data/robotxtest5_ws/src/robot_arm_urdf/config/joint_trajectory_controller.yaml
手動加載 YAML
bashrosparam load ~/data/robotxtest5_ws/src/robot_arm_urdf/config/joint_trajectory_controller.yaml
確認 YAML 是否加載
bashrosparam list | grep robot_arm_controller
6. 確保 Launch File 載入 YAML
打開 robot_arm_control.launch
bashnano ~/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
bashroslaunch robot_arm_urdf robot_arm_control.launch rosservice call /controller_manager/list_controllers
7. 手動啟動 ROS 控制器
嘗試手動加載 robot_arm_controller
bashrosrun 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
bashroslaunch robot_arm_urdf robot_arm_control.launch
8. 確保 Gazebo 已加載 gazebo_ros_control
檢查 Gazebo 是否載入控制插件
bashrostopic list | grep gazebo
應顯示
bash/gazebo/link_states /gazebo/model_states /gazebo/set_model_configuration /gazebo/set_link_state /gazebo/set_model_state
如果沒有,檢查 URDF 檔案
bashnano ~/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
bashroslaunch robot_arm_urdf robot_arm_control.launch
確認 Gazebo 插件是否載入
bashrosparam list | grep gazebo_ros_control
重新載入 URDF
bashrosparam load ~/data/robotxtest5_ws/src/robot_arm_urdf/urdf/robot_arm_urdf.urdf robot_description
確認 URDF 內 Joint 是否正確
bashrosparam get /robot_description | grep joint
9. 確保控制器 (rosbot_arm_control
) 正確啟動
檢查控制器狀態
bashrosservice call /controller_manager/list_controllers
如果顯示
bashname: "rosbot_arm_control"
state: "running"
代表 控制器已成功啟動。
如果 state: stopped
,請手動啟動
bashrosrun controller_manager spawner rosbot_arm_control
檢查 /rosbot_arm_control/command
是否發送消息
bashrostopic 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 沒有暫停
bashrosservice call /gazebo/unpause_physics
如果關節無法運動,手動設定初始值
bashrosservice 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
發送測試指令
bashrostopic 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 模擬、手動發送測試指令的完整流程。
沒有留言:
張貼留言