ROS下利用 moveit 控制gazebo模型并在rviz中显示的探索总结

本文所讲都是我的个人探索经验,配置Ubuntu14.04,ros indigo,gazebo2.x,安装好rviz,moveit,以及依赖项ros-indigo-gazebo-ros ros-indigo-gazebo-ros-pkgs ros-indigo-gazebo-ros-control ros-indigo-ros-controllers 。基本流程参照ur robot (http://wiki.ros.org/ur_gazebo)以及ros by example volume2(在我的资源有下载)。首先说一下ur的一个实现思路,ur 的启动只有三个launch文件:

ur_gazebo/ur5.launch

ur5_moveit_config/ur5_moveit_planning_execution.launch

ur5_moveit_config / moveit_rviz.launch

ur5.launch 启动了gazebo,以及控制器,moveit_rviz.launch 启动了rviz并加载模型,最后一个启动moveit的控制gui,参考下图:

ROS下利用 moveit 控制gazebo模型并在rviz中显示的探索总结_第1张图片

大概了解到做法之后开始自己的尝试:

第一步建立机器人的描述,首先利用catkin_create_package在catkin工作目录下建立一个名字为robot_description的,在其中建立目录urdf,里面存放机器人的一个描述文件robot.urdf。urdf包含基本的link和joint,注意urdf的link是以tree的形式通过joint组织起来的,关键的地方在于要添加transmission标签和ros-control插件,如下所示:


  transmission_interface/SimpleTransmission
  #改为你自己的名称
    PositionJointInterface
 

 
    50    
 



         

关于urdf的具体细节如transmission是干嘛的,为什么要加gazebo标签可以参考ros和gazebo官方的说明,urdf文件建成后要先用 roslaunch urdf_tutorial display.launch model:=/your directory to urdf/robot.urdf命令启动一个rviz来进行验证。之后在robot_description下建立一个launch目录,并在其中建立文件robot.launch,把模型加载到gazebo进行验证,具体内容如下:

 
   
        
 

   
   
   
  args="-urdf -model robot -param robot_description"/>

都验证成功后第一步就结束了。

第二步配置gazebo的启动配置,建立一个robot_gazebo的包,方法同上,建立目录launch,controller,worlds。

在launch下建立robot_gazerbo.launch将上面的launch文件内容复制进来,并添加如下内容:


 
   
   
 
 
 
 
 
 
   

在controller目录下建立joint_state_controller.yaml 并将

joint_state_controller:

type: joint_state_controller/JointStateController
    publish_rate: 50

添加进去,再建立controller_group_robot.yaml 添加如下内容:

group_controller:
  type: position_controllers/JointTrajectoryController
  joints:#在urdf中创建的joint,改为你自己的名称
     - hip
     - knee
     - foot    
  constraints:
      goal_time: 0.6
      stopped_velocity_tolerance: 0.05
      hip: {trajectory: 0.1, goal: 0.1}
      knee: {trajectory: 0.1, goal: 0.1}
      foot: {trajectory: 0.1, goal: 0.1}     
  stop_trajectory_duration: 0.5
  state_publish_rate:  25
  action_monitor_rate: 10

和之前一样在这里我们启动了gazebo加载了和我们的模型和empty.world (如果要加载自己的可以在worlds下建立.world文件,并修改对应的 ),另启动了Robot state publisher,加载了 joint_state_controller.yaml,启动了controller_manager加载控制器。完成之后启动

roslaunch robot_gazebo robot_gazerbo.launch,启动后利用rostopic list查看会出现如下所示的内容:

/clock
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/joint_states
/group_controller/command
/group_controller/follow_joint_trajectory/cancel
/group_controller/follow_joint_trajectory/feedback
/group_controller/follow_joint_trajectory/goal
/group_controller/follow_joint_trajectory/result
/group_controller/follow_joint_trajectory/status
/group_controller/state
/rosout
/rosout_agg
/tf
/tf_static

这样的话第二步就完成了。

第三步配置moveit,首先利用moveit setup_assistant 生成正确的配置文件,将文件夹命名为robot_moveit_config,也放在catkin的工作目录下,参照moveit官网教程,有些细节需要注意,配置Planning Groups 的时候需要同时配置Joints,Links和Chain,配置End Effectors设置Parent Link为末端的Link,参考下图:

ROS下利用 moveit 控制gazebo模型并在rviz中显示的探索总结_第2张图片ROS下利用 moveit 控制gazebo模型并在rviz中显示的探索总结_第3张图片

完成后launch demo查看配置是否满足要求:launch robot_moveit_config demo.launch

然而仅仅利用setup_assistant 是不够的,我们还需要配置其他文件,进入~/robot_moveit_config/config文件夹下配置controllers.yaml,写入以下内容:

controller_list:
  - name: group_controller   
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    joints:
      - hip
      - knee
      - foot

进入~/robot_moveit_config/launch



 

你可能感兴趣的:(配置)