http://gazebosim.org/tutorials/?tut=ros_control
1.向URDF添加插件
对于gazebo_ros_control插件来说,transmission中重要的信息tag如下:
2.gazebo_ros_control plugin
除了传输标记之外,还需要在URDF中添加Gazebo插件,该插件实际解析传输标记并加载适当的硬件接口和控制器管理器。默认情况下,gazebo_ros_control插件非常简单,不过它也可以通过一个额外的插件体系结构进行扩展,允许高级用户在ros_control和Gazebo之间创建自己的自定义机器人硬件接口。
默认的插件XML应该添加到您的URDF:
/MYROBOT
1)gazebo_ros_control
2)缺省的gazebo_ros_control的行为:
在缺省情况下,没有
在缺省情况下,它的行为提供如下ros_control接口:
hardware_interface::JointStateInterface
hardware_interface::EffortJointInterface
hardware_interface::VelocityJointInterface - not fully implemented
3)高级gazebo_ros_control的行为(自定义gazebo_ros_control插件):
gazebo_ros_control插件也提供了基于pluginlib的接口,这样方便Gazebo和ros_control之间的自定义硬件接口,以仿真更加复杂的机构(如非线性弹簧,连杆等等)。
自定义的新插件必须继承gazebo_ros_control::RobotHWSim, 它是仿真的hardware_interface::RobotHW。 RobotHWSim提供的API可以实现对Gazebo模拟器中joint的读和写。
各个RobotHWSim子类在URDF模型中指定,并在加载机器人模型时加载。例如,下面的XML将加载默认插件(与不使用标记
/MYROBOT
gazebo_ros_control/DefaultRobotHWSim
uarm_gazebo_control.launch
第一行“rosparam”通过加载YAML配置文件(在下一节中讨论)将控制器设置加载到参数服务器
该脚本对ros_control控制器管理器进行服务调用。服务调用告诉控制器管理器您想要哪个控制器。它还加载第三个控制器,该控制器使用hardware_interface发布所有关节的关节状态,并在/joint_states上发布主题,
最后一行启动robot_state_publisher节点,该节点只侦听来自join_state_controller的/joint_states消息,然后将转换发布到/tf。这允许您在Rviz中查看模拟机器人,并执行其他任务。