赞
踩
如果是第一次使用Moveit!,建议先按照 Moveit与rviz官方教程 做一次,主要熟悉Moveit!能干什么。
上一篇文章说明了Moveit的配置方法。实际上,网上关于Moveit!的配置与使用有着大把的教程。然而,它们大都是基于官方说明文档的思路,即在Moveit!中进行配置,编写控制算法后在rviz中进行可视化,很少有探讨如何在Gazebo中进行仿真的。
Gazebo是一款与ROS深度融合的仿真器,相比于rviz,其对环境的模拟更加真实。因此,我在网络上搜集大量资料,并结合自己的实验后,验证了一种Moveit!与Gazebo结合的联合仿真方法,在此总结。
Moveit!与Gazebo的联合仿真,其主要思路为搭建ros_control和Moveit!的桥梁。先在Moveit!端配置关节和传感器接口yaml文件,将其加载到rviz端;再在机器人端配置ros_control和接口yaml文件,将机器人加载到Gazebo。最后同时启动加载有ros_control的Gazebo和加载有Moveit的rviz,达到联合仿真的目的。
在进行Moveit!端的配置之前,首先要保证你已经用配置助手成功生成了Moveit!配置功能包。
例如你的Moveit!配置功能包名为ROBOT_moveit_config,可以在终端中运行如下命令:
roslaunch ROBOT_moveit_config demo.launch
如果成功启动了rviz,界面中包含有你的机器人模型以及rviz控制界面,则说明满足要求。
首先,在 ROBOT_moveit_config/config/ 目录下创建名为 controllers.yaml 的配置文件:
- controller_manager_ns: ''
- controller_list:
- - name: ROBOT/group1_controller
- action_ns: follow_joint_trajectory
- type: FollowJointTrajectory
- default: true
- joints:
- - joint_1
- - joint_2
- - joint_3
- - joint_4
- - joint_5
- ...
- - name: ROBOT/group2_controller
- action_ns: follow_joint_trajectory
- type: FollowJointTrajectory
- default: true
- joints:
- - joint_6
- - joint_7
- - joint_8
- ...
其中,“name”的内容为机器人的规划组,前面要加入命名空间;“joints”的内容为关节名称。其余内容不变。
只要是正常生成的配置功能包,其 launch 文件夹中就已经含有ROBOT_moveit_controller_manager.launch.xml 文件了,在此我们只需要将其内容修改如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。