第一次实现moveit控制gazebo仿真ur5机械臂

moveit控制gazebo仿真ur5机械臂问题汇总

第一次成功驱动仿真环境机械臂,接下来准备在仿真环境下的机械臂上添加一个末端六维力HEX-H传感器和fg2二指手抓。

文章目录

  • moveit控制gazebo仿真ur5机械臂问题汇总
  • 运行环境
  • 一、在运行gazebo时提示错误
  • 二、moveit控制gazebo实现步骤
    • 1.前言
    • 2.建功能包——robot_description包
    • 配置moveit包
    • 修改moveit包
    • 运行demo_gazebo.launch
  • 总结


运行环境

ubuntu 18.04 + ROS melodic + Rviz + Gazebo + moveit

一、在运行gazebo时提示错误

[Err] [REST.cc:205] Error in REST request
或者[Err] [ClientConfig.cc:270] Parser error [3]

如下:
在这里插入图片描述
编辑文件config.yaml,将url: https://api.ignitionfuel.org改为 url: https://api.ignitionrobotics.org

gedit .ignition/fuel/config.yaml

270错误
在这里插入图片描述
解决方法:
针对270这个错误,将这个文件config.yaml删除就行。

rm .ignition/fuel/config.yaml

参考来源:冰激凌啊很厉害博主!!!对我研究起了很大帮助

二、moveit控制gazebo实现步骤

1.前言

ROS控制机械臂,需要通过配置大量的文件来实现对机械臂的控制仿真,在网上找了很多的教程,写的都不是很详细,大部分都只是阐述原理,比如这个,甚至连完整的可以运行的代码也没有给。找到的所有教程教的方法都需要自己写各种配置文件,简单的机械臂还好,要是碰到复杂的机械臂自己写配置文件根本不现实,容易出错。经过几天的研究,终于看到了一个博主的方法,第一次实现moveit到gazebo的仿真实现。步骤简单,很明确配置哪些文件。不过在实现的过程中,还是遇到了一些弯路,特此记录,以便日后参考。

主要步骤:

1.新建一个robot_description包,用来放机器人模型文件

2 用moveit_setup_assistant图形界面工具配置moveit包

3 修改moveit包

4.运行moveit包里的demo_gazebo.launch,完成!

2.建功能包——robot_description包

1.在工作空间/catkin_ws下,创建robot_descripteion包,后面的urdf是包的依赖。然后编译一下。

cd ~/catkin_ws/src
catkin_create_pkg robot_description urdf 
cd ~/catkin_ws
catkin_make

2.新建urdf文件夹跟meshes文件

cd ~/catkin_ws/src/robot_description
mkdir urdf
mkdir meshes

把自己的机器人模型拷进来,urdf文件放在urdf文件夹,mesh文件放在meshes文件夹。注意在urdf文件里引用所有mesh文件的路径要相应改到新建的meshes文件夹里。例如:我的urdf文件中

      <geometry>
        <mesh filename="package://robot_description/meshes/ur5/visual/base.dae"/>
      </geometry>

第一次实现moveit控制gazebo仿真ur5机械臂_第1张图片

3.添加gazebo tag,不知道gazebo tag的点这。详情见robot_description/urdf/ur5.urdf,这里就简单提一下,下面两类tag是必须的:

#1.transmission tag,每一个主动关节都需要
  <transmission name="shoulder_pan_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="shoulder_pan_joint">
      <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
    </joint>
    <actuator name="shoulder_pan_motor">
      <mechanicalReduction>1</mechanicalReduction>
    </actuator>
  </transmission>
#2.ros_control 插件,一个就够了
  <gazebo>
    <plugin filename="libgazebo_ros_control.so" name="ros_control">
      <!--robotNamespace>/</robotNamespace-->
      <!--robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType-->
    </plugin>
  </gazebo

注意:包建好之后,一定要编译环境,即catkin_make一下。

配置moveit包

1.终端(ctrl + alt + T)里打开moveit_setup_assistant
注意:运行launch文件之前一定要在工作空间下,source环境变量,再roscore
在这里插入图片描述

roslaunch moveit_setup_assistant setup_assistant.launch

2.给robot_description/urdf/ur5.urdf配置moveit包
接下来就是常见的配置moveit文件了,这里就不多说,不会的点这
关键几步:
sefl-collisions不用改参数,直接点generate collision matrix;
virtual joints跳过不需要,因为ur5自带基座固定关节;
robot pose没什么特殊的,平时怎么来就怎么来;
end effectors跳过,
passive joints跳过;
robot control:
这一步很重要,点一下箭头指的按钮就可以。注意到controller的名字是arm_controller,前半部分是刚才你命名的planning group,后半部分是程序自己加的。第一次实现moveit控制gazebo仿真ur5机械臂_第2张图片simulation 3d perception跳过
author information填上自己的信息,
最后在catkin工作目录生成moveit包:(注意保存目录一定要在src文件下,还要新建一个文件名类似于xxx_moveit_config命名,如我的文件名:

/home/yuepeng/catkin_ws/src/ur5robot_moveit_config
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e4ad254195e45d1836b1cc6f36d1570.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbW9uc3Rlcl9ZUA==,size_20,color_FFFFFF,t_70,g_se,x_16)

修改moveit包

1.找到刚才配置的moveit包xxx_moveit_config,放在~/catkin_ws/src/下,打开 ~/catkin_ws/src/ur5robot_moveit_config/config/ros_controllers.yaml,在最末尾添加如下语句:

arm_controller:
  type: position_controllers/JointTrajectoryController
  joints:
     - shoulder_pan_joint
     - shoulder_lift_joint 
     - elbow_joint
     - wrist_1_joint
     - wrist_2_joint
     - wrist_3_joint
  constraints:
      goal_time: 0.6
      stopped_velocity_tolerance: 0.05
      shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}
      shoulder_lift_joint : {trajectory: 0.1, goal: 0.1}
      elbow_joint: {trajectory: 0.1, goal: 0.1}
      wrist_1_joint: {trajectory: 0.1, goal: 0.1}
      wrist_2_joint: {trajectory: 0.1, goal: 0.1}
      wrist_3_joint: {trajectory: 0.1, goal: 0.1}
  stop_trajectory_duration: 0.5
  state_publish_rate:  25
  action_monitor_rate: 1

需要注意的几点
(1)数组名要和刚才命名的planning group对应,比如我的planning group是arm,这里就是arm_controller第一行位置
(2)关节名要与 planning group 里添加的 joints 相对应
(3)格式不能错,该对齐的对齐,该缩进的缩进
2.打开~/catkin_ws/src/ur5robot_moveit_config/launch/ros_controllers.launch,把这一句命令

  <!-- Load the controllers -->
  <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
    output="screen" args=""/>

改成

  <!-- Load the controllers -->
  <node name="controller_spawner" pkg="controller_manager" type="controller_manager" respawn="false"
    output="screen" args="spawn joint_state_controller arm_controller"/>

运行demo_gazebo.launch

到这里就完成了,在terminal里运行一下看看,记得catkin_make source roscores三步。

roslaunch ur5robot_moveit_config demo_gazebo.launch

等Rize与gazebo界面启动之后,在rviz里面点击plan规划,点击execute,gazebo里的机械臂也跟着动了。

总结

控制gazebo仿真环境中的机械臂运动,主要修改moveit配置文件下的,两个地方:
ros_controllers.yamlros_controllers.launch

ros_controllers.yaml文件位于config文件夹下,保证xxx_controller命名与moveit配置时,在planning group这一步命名一致。
ros_controllers.launch文件位于launch文件夹下,主要修改type和arg两个地方。具体原因还不太清楚,大家有了解知道的,真心求解,互相进步 。

最后再次感谢博主的分享,大家有什么别的问题,可以参考https://blog.csdn.net/zqb2291128010/article/details/89647066?spm=1001.2014.3001.5506这个地方。

你可能感兴趣的:(ros,ubuntu)