6R機械臂運動規劃及模擬

2023-05-14 18:02:40

部落格地址:https://www.cnblogs.com/zylyehuo/

參考連結

Moveit!機械臂控制

檔案下載-古月ROS教學視訊配套資料

解決Could not find a package configuration file provided by 「manipulation_msgs「

moveIt之Unable to identify any set of controllers that can actuate the specified joints問題解決

Unable to identify any set of controllers that can actuate the specified joints: joint1 joint2 ...出錯

環境設定

Ubuntu 18.04 melodic

成果圖

Part 1: Rviz 機械臂模擬

step1: 下載機械臂模型

下載地址

檔案下載-古月ROS教學視訊配套資料

step2: 建立工作空間

mkdir -p 6R_mechanical_arm/src
cd 6R_mechanical_arm
catkin_make

step3: src資料夾

將之前下載的機械臂模型中 description、gazebo、planning資料夾複製到 src資料夾下

step4: 在 rviz 中顯示機械臂模型

在終端中執行 roscore
在工作空間 6R_mechanical_arm 中開啟終端

roslaunch marm_description view_arm.launch

step5: 安裝 MoveIt

在終端執行以下命令
sudo apt-get install ros-melodic-moveit

step6: 啟動 MoveIt

在終端執行以下命令
rosrun moveit_setup_assistant moveit_setup_assistant

step7: 設定 MoveIt

(1)Start

(2)Self-Collisions

(3)Planning Groups(核心)

檢查是否與下圖一致

(4)Robot Poses

(5)End Effectors

(6)Author Information

(7)Configuration Files

step8: 重新編譯工作空間

step9: 啟動demo檔案,測試 rviz 模擬環境

拖動規劃

直接滑鼠拖動機械臂末端執行器

點選 plan ,進行路徑規劃

點選 excute ,機械臂運動

設定動畫是否迴圈播放

隨機目標點規劃

設定初始位姿

新增場景物體

可通過拖動箭頭變換位置

Part 2: MoveIt 基礎程式設計

以下程式碼執行都是在 rviz 開啟的前提下執行

關節空間規劃

在工作空間中開啟終端

source ./devel/setup.bash

rosrun marm_planning moveit_fk_demo.py

工作空間規劃

在工作空間中開啟終端

source ./devel/setup.bash

rosrun marm_planning moveit_ik_demo.py

笛卡爾路徑規劃

顯示路徑

走直線

在工作空間中開啟終端

source ./devel/setup.bash

rosrun marm_planning moveit_cartesian_demo.py _cartesian:=True   (走直線)

走曲線

在工作空間中開啟終端

source ./devel/setup.bash

rosrun marm_planning moveit_cartesian_demo.py _cartesian:=False  (走曲線)

*

避障規劃

在工作空間中開啟終端

source ./devel/setup.bash

rosrun marm_planning moveit_obstacles_demo.py

Part 3: Gazebo 機械臂模擬

step1: 依賴檔案設定

(1)關節軌跡控制器

trajectory_control.yaml

arm_trajectory_controller.launch

(2)MoveIt 控制器

在 6R_mechanical_arm/src/marm_moveit_config/config 路徑下新建 controllers.yaml 檔案

6R_mechanical_arm/src/marm_moveit_config/config/controllers.yaml

controller_manager_ns: controller_manager
controller_list:
  - name: arm/arm_joint_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: true
    joints:
      - joint1
      - joint2
      - joint3
      - joint4
      - joint5
      - joint6

  - name: arm/gripper_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: true
    joints:
      - finger_joint1
      - finger_joint2

6R_mechanical_arm/src/marm_moveit_config/launch/arm_moveit_controller_manager.launch.xml

<launch>
  <!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
  <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
  <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

  <!-- load controller_list -->
  <!-- Gazebo -->
  <rosparam file="$(find marm_moveit_config)/config/controllers.yaml"/>
</launch>

6R_mechanical_arm/src/marm_moveit_config/launch/moveit_planning_execution.launch

<launch>
 # The planning and execution components of MoveIt! configured to 
 # publish the current configuration of the robot (simulated or real)
 # and the current state of the world as seen by the planner
 <include file="$(find marm_moveit_config)/launch/move_group.launch">
  <arg name="publish_monitored_planning_scene" value="true" />
 </include>
 # The visualization component of MoveIt!
 <include file="$(find marm_moveit_config)/launch/moveit_rviz.launch"/>

  <!-- We do not have a robot connected, so publish fake joint states -->
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
    <param name="/use_gui" value="false"/> 
    <rosparam param="/source_list">[/arm/joint_states]</rosparam>
  </node>

</launch>

(3)啟動環境

arm_world.launch

(4)聯結所有 launch 檔案

arm_bringup_moveit.launch

step2: 啟動 gazebo 和 rviz 模擬環境

在工作空間路徑下開啟終端,輸入以下命令

source ./devel/setup.bash

roslaunch marm_gazebo arm_bringup_moveit.launch

調整 rviz 設定

調整 gazebo 設定

存在模型抖動現象,暫時不調整

step3: 使用 MoveIt

調整機器人目標位置

點選 Plan & Execute

問題彙總

1、Could not find a package configuration file provided by 「manipulation_msgs「

解決方法

參考地址:解決Could not find a package configuration file provided by 「manipulation_msgs「

下載地址:

GitHub - ros-interactive-manipulation/manipulation_msgs: The package in this repo is DEPRECATED (see https://github.com/ros-interactive-manipulation/manipulation_msgs/issues/9)

GitHub - ros-interactive-manipulation/household_objects_database_msgs: Messages for the household_objects_database. The package in this repo is DEPRECATED and you're advised to see moveit_msgs instead (see also https://github.com/ros-interactive-manipulation/household_objects_database_msgs/issues/5)

2、點選 plan&execute 後,rviz有變化,gazebo無變化

解決方案一:
在終端執行以下程式碼

sudo apt install ros-melodic-ros-controllers
解決方案二:
修改檔案:
工作空間/src/marm_moveit_config/launch/trajectory_execution.launch.xml

將引數 pass_all_args="true" 刪掉即可