人形机器人 (二)--------moveit和gazebo互联

来源:互联网 发布:广州恒大淘宝最新消息 编辑:程序博客网 时间:2024/05/06 12:18
首先需要安装ros_control 

sudo apt-get install ros-indigo(or hydro)-ros-control ros-indigo(or hydro)-ros-controllers

gazebo_ros_pkgs

sudo apt-get install ros-hydro-gazebo-ros-pkgs ros-hydro-gazebo-ros-control

p.s 如果安装了gazebo官网上的DRCsim的话最好先dpkg掉再重新装上面2个。

然后是一般步骤

(1)下载或者自己写一个urdf描述文件,然后用setup_assistant创建move group的包(如果只是普通机械臂的话virtual joint可以不需要设置)

roslaunch moveit_setup_assistant setup_assistant.launch

(2)launch demo.launch看看能不能正常执行move plan

(3)参照gazebo中ros control教程,写world.launch和control.launch,还有一个control.yaml文件(写完后直接用rostopic pub命令测试有没有写正确)

(4)在moveit的包里面写一个controler.yaml(跟gazebo的control.yaml不一样)

形式类似于

controller_list:
  - name: arm_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: true
    joints: 
      - lwr_arm_0_joint
      - lwr_arm_1_joint
      - lwr_arm_2_joint
      - lwr_arm_3_joint
      - lwr_arm_4_joint
      - lwr_arm_5_joint
      - lwr_arm_6_joint

(5)在生成的moveit包中找到xxx_controler_manager.launch.xml加入类似(下面是例子)

<launch>
<!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager"/>
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>
<!-- load controller_list -->
<rosparam file="$(find kuka_moveit)/config/controllers.yaml"/>
</launch>

(6)执行gazebo的world.launch(把control.launch也要包含在里面)和生成moveit包中的moveit_planning_execution.launch

不出意外应该就可以执行moveit和gazebo的互联。

需要注意的地方:

(1)命名空间。不同的命名空间可能会导致gazebo无法收到控制信息(比如说moveit的control文件和gazebo的control文件顶端如果有命名xxx:的话(上例中没有),2个名字最好相同,免得麻烦)

(2)当然除了ros_control以外也可以用别的control package来实现对gazebo的控制。


0 0
原创粉丝点击