本文所讲都是我的个人探索经验,配置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,参考下图:
大概了解到做法之后开始自己的尝试:
第一步建立机器人的描述,首先利用catkin_create_package在catkin工作目录下建立一个名字为robot_description的包,在其中建立目录urdf,里面存放机器人的一个描述文件robot.urdf。urdf包含基本的link和joint,注意urdf的link是以tree的形式通过joint组织起来的,关键的地方在于要添加transmission标签和ros-control插件,如下所示:
关于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进行验证,具体内容如下:
都验证成功后第一步就结束了。
第二步配置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文件,并修改对应的
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,参考下图:
完成后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