睿尔曼超轻量仿人机械臂ROS系列-ROS第二篇 使用Moveit控制Gazebo中的机械臂_睿尔曼 ros百度云下载-程序员宅基地

技术标签: 经验分享  机器人  智能硬件  人工智能  睿尔曼超轻仿人机械臂ROS系列内容  

目录

简介

配置说明

6.2 仿真与真实机械臂配置

6.2.1 MoveIt!端的配置

6.2.2机器人端的配置

6.2.3启动文件arm_65_bringup_moveit.launch

6.3运行效果


简介

        MoveIt!与Gazebo的联合仿真,其主要思路为搭建ros_control和MoveIt!的桥梁。先在MoveIt!端配置关节和传感器接口yaml文件,将其加载到rviz端;再在机器人端配置ros_control和接口yaml文件,将机器人加载到Gazebo。最后同时启动加载有ros_control的Gazebo和加载有MoveIt的rviz,达到联合仿真的目的。

配置说明

1. 仿真与真实机械臂配置

1.1 MoveIt!端的配置

① 控制器配置文件controllers_gazebo.yaml controllers_gazebo.yaml在rm_65_moveit_config/config目录下,代码如下:

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

② 修改启动文件rm_65_moveit_controller_manager.launch.xml

        修改rm_65_moveit_config功能包中的rm_65_moveit_controller_manager.launch.xml,配置加载刚才创建的controllers_gazebo.yaml文件到参数服务器,代码如下:

<launch>
<arg name="execution_type" default="FollowJointTrajectory" />

<!-- loads moveit_controller_manager on the parameter server which is taken as argument
if no argument is passed, moveit_simple_controller_manager will be set -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

<!-- load controller_list -->
<arg name="use_controller_manager" default="true" />
<param name="use_controller_manager" value="$(arg use_controller_manager)" />

<!-- loads ros_controllers to the param server -->
<!-- <rosparam file="$(find rm_65_moveit_config)/config/ros_controllers.yaml"/> -->
<!-- <rosparam file="$(find rm_65_moveit_config)/config/controllers.yaml"/> -->
<rosparam file="$(find rm_65_moveit_config)/config/controllers_gazebo.yaml"/>
</launch>

③ 启动文件moveit_planning_execution.launch

                moveit_planning_execution.launch是在rm_65_moveit_config/launch目录下新创建的启动文件,用以加载MoveIt和rviz,最后运行关节状态发布器,用以向Gazebo中发布指令,代码如下:

<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 rm_65_moveit_config)/launch/move_group.launch">
  <arg name="publish_monitored_planning_scene" value="true" />

 </include>
 # The visualization component of MoveIt!
 <include file="$(find rm_65_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>

1.2机器人端的配置

  • 关节轨迹控制器

        MoveIt!完成运动规划后的输出接口是一个命名为“FollowJointTrajectory”的action,其中包含了一系列规划好的路径点轨迹,这些信息可以通过ros_control为我们提供的一个名为“Joint Trajectory Controller”的控制器插件转换成Gazebo中机器人需要的joint位置。

① 配置文件rm_65_trajectory_control.yaml

        “FollowJointTrajectory”控制器的使用首先需要一个配置文件对机械臂六个轴的轨迹控制配置控制参数,即rm_gazebo/config目录下的rm_65_trajectory_control.yaml配置文件,代码如下:

arm:
  arm_joint_controller:
    type: "position_controllers/JointTrajectoryController"
    joints:
      - joint1
      - joint2
      - joint3
      - joint4
      - joint5
      - joint6

    gains:
      joint1:   {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
      joint2:   {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
      joint3:   {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
      joint4:   {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
      joint5:   {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
      joint6:   {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}

② 控制器启动文件 

        通过一个launch文件加载Joint Trajectory Controller,即rm_gazebo/launch目录下的arm_65_trajectory_controller.launch文件,代码如下:

<launch>
    <rosparam file="$(find rm_gazebo)/config/rm_65_trajectory_control.yaml" command="load"/>
    <node name="arm_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
          output="screen" ns="/arm" args="arm_joint_controller"/>
</launch>
  • 关节状态控制器

        关节状态控制器是一个可选插件,主要作用是发布机器人的关节状态和TF变换,否则在rviz的Fixed Frame设置中看不到下拉列表中的坐标系选项,只能手动输入,但是依然可以正常使用。

① 关节状态控制器配置文件arm_gazebo_joint_states.yaml

arm_gazebo_joint_states.yaml配置文件在rm_gazebo/config目录下,代码如下:

arm:
  # Publish all joint states -----------------------------------
  joint_state_controller:
    type: joint_state_controller/JointStateController
    publish_rate: 50  

② 启动文件arm_gazebo_states.launch加载参数

arm_gazebo_states.launch文件在rm_gazebo/launch目录下,代码如下:

<launch>
    <!-- 将关节控制器的配置参数加载到参数服务器中 -->
    <rosparam file="$(find rm_gazebo)/config/arm_gazebo_joint_states.yaml" command="load"/>

    <node name="joint_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
          output="screen" ns="/arm" args="joint_state_controller" />

    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"
        respawn="false" output="screen">
        <remap from="/joint_states" to="/arm/joint_states" />
    </node>
</launch>

1.3启动文件arm_65_bringup_moveit.launch

        顶层启动文件arm_65_bringup_moveit.launch在rm_gazebo/launch目录下,用以启动Gazebo,并且加载所有的控制器,最后启动MoveIt!,代码如下:

<launch>
    <!-- Launch Gazebo  -->
    <include file="$(find rm_gazebo)/launch/arm_world.launch" />

    <!-- ros_control arm launch file -->
    <include file="$(find rm_gazebo)/launch/arm_gazebo_states.launch" />   

    <!-- ros_control trajectory control dof arm launch file -->
    <include file="$(find rm_gazebo)/launch/arm_65_trajectory_controller.launch" />
    <!-- moveit launch file -->
    <include file="$(find rm_65_moveit_config)/launch/moveit_planning_execution.launch" />
</launch>

2. 运行效果

启动节点前,需要确保rm_65_moveit_config/launch/rm_65_moveit_controller_manager.launch.xml文件中配置加载到参数服务器的是controllers_gazebo.yaml文件,见图6-1:

图1-1 rm_65_moveit_controller_manager.launch.xml加载controllers_gazebo.yaml

执行以下命令运行MoveIt!和Gazebo: 

cd ~/ws_rmrobot
source devel/setup.bash
roslaunch rm_gazebo arm_65_bringup_moveit.launch

图1-2 RM65-B机器人在Gazebo中显示效果

启动后打开的rviz如图6-3所示:

图1-3 rviz启动界面

        在打开的rviz中,暂时还看不到任何机器人模型,甚至还会提示一些错误,接下来进行简单配置解决这些问题。

        首先将“Fixed Frame”修改成“base_link”;然后点击左侧插件列表栏中的“Add”按钮,将MotionPlanning加入控制窗口。此时应该可以看到机器人出现在右侧主界面中,Gazebo中机器人的姿态应该和rvize中的显示一致。操作如图6-4~6-6所示:

 图1-4 在rviz中将“Fixed Frame”修改成“base_link”

图1-5 rviz中将MotionPlanning加入控制窗口

图1-6 rviz中显示RM65-B机器人 

        接下来使用MoveIt!规划运动的几种方式就可以控制Gazebo中的机器人了,例如图6-7拖动机器人末端到一个位置,然后点击“Plan & Execute”按钮,可以看到rviz中机器人开始规划执行并且可以看到Gazebo中的机器人开始运动且与rviz中的机器人模型保持一致,如图6-8所示。        

图1-7 使用MoveIt!拖动规划执行 

 图1-8 Gazebo中机器人按rviz规划同步执行效果


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/realman_Rop/article/details/131595473

智能推荐

leetcode 172. 阶乘后的零-程序员宅基地

文章浏览阅读63次。题目给定一个整数 n,返回 n! 结果尾数中零的数量。解题思路每个0都是由2 * 5得来的,相当于要求n!分解成质因子后2 * 5的数目,由于n中2的数目肯定是要大于5的数目,所以我们只需要求出n!中5的数目。C++代码class Solution {public: int trailingZeroes(int n) { ...

Day15-【Java SE进阶】IO流(一):File、IO流概述、File文件对象的创建、字节输入输出流FileInputStream FileoutputStream、释放资源。_outputstream释放-程序员宅基地

文章浏览阅读992次,点赞27次,收藏15次。UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。文件字节输入流:每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1。注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。UTF-8字符集:汉字占3个字节,英文、数字占1个字节。GBK字符集:汉字占2个字节,英文、数字占1个字节。GBK规定:汉字的第一个字节的第一位必须是1。_outputstream释放

jeecgboot重新登录_jeecg 登录自动退出-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏3次。解决jeecgboot每次登录进去都会弹出请重新登录问题,在utils文件下找到request.js文件注释这段代码即可_jeecg 登录自动退出

数据中心供配电系统负荷计算实例分析-程序员宅基地

文章浏览阅读3.4k次。我国目前普遍采用需要系数法和二项式系数法确定用电设备的负荷,其中需要系数法是国际上普遍采用的确定计算负荷的方法,最为简便;而二项式系数法在确定设备台数较少且各台设备容量差..._数据中心用电负荷统计变压器

HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板_网页设计成品百度网盘-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏46次。HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业_网页设计成品百度网盘

【Jailhouse 文章】Look Mum, no VM Exits_jailhouse sr-iov-程序员宅基地

文章浏览阅读392次。jailhouse 文章翻译,Look Mum, no VM Exits!_jailhouse sr-iov

随便推点

chatgpt赋能python:Python怎么删除文件中的某一行_python 删除文件特定几行-程序员宅基地

文章浏览阅读751次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python 删除文件特定几行

Java过滤特殊字符的正则表达式_java正则表达式过滤特殊字符-程序员宅基地

文章浏览阅读2.1k次。【代码】Java过滤特殊字符的正则表达式。_java正则表达式过滤特殊字符

CSS中设置背景的7个属性及简写background注意点_background设置背景图片-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏17次。css中背景的设置至关重要,也是一个难点,因为属性众多,对应的属性值也比较多,这里详细的列举了背景相关的7个属性及对应的属性值,并附上演示代码,后期要用的话,可以随时查看,那我们坐稳开车了······1: background-color 设置背景颜色2:background-image来设置背景图片- 语法:background-image:url(相对路径);-可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色,一般情况下设置背景..._background设置背景图片

Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏8次。Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程

PyCharm2021安装教程-程序员宅基地

文章浏览阅读10w+次,点赞653次,收藏3k次。Windows安装pycharm教程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入下载安装PyCharm1、进入官网PyCharm的下载地址:http://www.jetbrains.com/pycharm/downl_pycharm2021

《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.1 初识速卖通的搜索引擎...-程序员宅基地

文章浏览阅读835次。本节书摘来自异步社区出版社《跨境电商——速卖通搜索排名规则解析与SEO技术》一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.1 初识速卖通的搜索引擎1.1.1 初识速卖通搜索作为速卖通卖家都应该知道,速卖通经常被视为“国际版的淘宝”。那么请想一下,普通消费者在淘宝网上购买商品的时候,他的行为应该..._跨境电商 速卖通搜索排名规则解析与seo技术 pdf

推荐文章

热门文章

相关标签