ROS学习笔记(1):moveit规划轨迹控制机器人在gazebo中的仿真
环境:VMware Workstation Pro15
Ununtu18.04
ROS Melodic
自从看了古月居有关moveit和rviz的基本使用技巧之后,开始研究如何利用moveit来控制机器人在gazebo中仿真。起初也是照猫画虎的按照古月居的教程走,但是发现他的教程实在是太早了,并且我查阅了大量其他教程,发现关于ROS的教程十有八九都是基于Kinetic的,对于新手来说学习实在是有些困难。
经过两个周的折腾。总结出如何在gazebo中仿真的配置步骤。
(1)moveit配置
新手请注意:1. 启动moveit!Setup Assisstant前先启动roscore。否则会报错。
2. virtual joints一栏可以不用配置
3. ROS Control是为了gazebo仿真用的,可以直接点击Auto Add FollowJointTrajectory Controllers for each planning group
4.Simulation是可以直接生成在gazebo中直接运行的URDF文件。这样就省了好多从SolidWorks中生成的URDF文件转化为XACRO文件的繁琐过程。
(2)Gazebo仿真文件配置
1.配置xxx_moveit_config/config/ros_controller.yaml文件。
直接在文件末尾加入如下代码。
arm_controller:
type: position_controllers/JointTrajectoryController
joints:
- XJ
- YJ
- ZJ
- RJ1
- RJ2
# constraints:
# goal_time: 0.6
# stopped_velocity_tolerance: 0.05
# XJ: {trajectory: 0.1, goal: 0.1}
# YJ: {trajectory: 0.1, goal: 0.1}
# ZJ: {trajectory: 0.1, goal: 0.1}
# RJ1: {trajectory: 0.1, goal: 0.1}
# RJ2: {trajectory: 0.1, goal: 0.1}
# stop_trajectory_duration: 0.5
# state_publish_rate: 25
# action_monitor_rate: 1
gains:
XJ: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
YJ: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
ZJ: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
RJ1: {p: 50.0, d: 1.0, i: 0.01, i_clamp: 1.0}
RJ2: {p: 50.0, d: 1.0, i: 0.01, i_clamp: 1.0}
注:在moveit中配置动作组的名称一定要与controller名称相对应。比如我之前动作组的名称为arm.那么这里的就是arm_controller。
2.配置xxx_moveit_config/launch/ros_controller.launch文件
文件中原始代码为:
<node name="contro