Ros学习笔记-gazebo机械臂仿真环境学习

在gazebo中构建空的世界,将机械臂的URDF文件传入参数服务器中去,并生成机械臂的模型:

<launch>

  <!-- these are the arguments you can pass this launch file, for example paused:=true -->
  <arg name="paused" default="false"/>
  <arg name="use_sim_time" default="true"/>
  <arg name="gui" default="true"/>
  <arg name="headless" default="false"/>
  <arg name="debug" default="false"/>

  <!-- We resume the logic in empty_world.launch -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="debug" value="$(arg debug)" />
    <arg name="gui" value="$(arg gui)" />
    <arg name="paused" value="$(arg paused)"/>
    <arg name="use_sim_time" value="$(arg use_sim_time)"/>
    <arg name="headless" value="$(arg headless)"/>
  </include>

  <!-- Load the URDF into the ROS Parameter Server -->
  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find probot_description)/urdf/probot_anno.xacro'" /> 
<!-- param参数用于指定一个参数,该参数将在仿真环境启动时使用。
        在本例中,该参数是使用xacro工具来解析probot_anno.xacro文件,并生成一个URDF文件。 -->
  
  
  <!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
  <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
	args="-urdf -model probot_anno -param robot_description"/> 
</launch>

运行结果如下:
在这里插入图片描述启动关节状态管理器并在tf中广播不同关节之间的坐标变化:

<launch>
    <!-- 将关节控制器的配置参数加载到参数服务器中 -->
    <rosparam file="$(find probot_gazebo)/config/probot_anno_gazebo_joint_states.yaml" command="load"/>
     <!-- 将yaml文件中的参数发送至参数服务器
            其中控制器为在URDF文件中设置的gazebo的控制器-->

    <node name="joint_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
          output="screen" ns="/probot_anno" args="joint_state_controller" />
          <!-- 根据yaml文件中的控制器生成控制器节点,并发布jointstatepublisher话题,
                  该话题会发布每个关节在当前状态下的角度-->


    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"
        respawn="false" output="screen">
        <remap from="/joint_states" to="/probot_anno/joint_states" />
     <!--remap参数用于重映射一个主题。在本例中,我们将/joint_states主题重映射为/probot_anno/joint_states主题。
            当节点订阅/joint_states主题时,实际上会订阅/probot_anno/joint_states主题。
            该节点的发布的tf信息如下:

                Type: tf2_msgs/TFMessage

                Publishers: 
                * /robot_state_publisher (http://zdh-Mi-Gaming-Laptop-15-6:40093/)

                Subscribers: None
            -->
    </node>

</launch>

joint_state_publisher话题输出如下:
在这里插入图片描述输出为每个关节的角度。
TF的广播内容如下:
在这里插入图片描述继续编写轨迹控制器节点:

<launch>

    <rosparam file="$(find probot_gazebo)/config/probot_anno_trajectory_control.yaml" command="load"/>

    <node name="arm_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
          output="screen" ns="/probot_anno" args="arm_joint_controller"/>
<!-- 生成机械臂的轨迹控制节点,控制器为gazebo,构建的为gazebo到未知节点的,后续为move_group接入该节点 -->
</launch>

结果如下:
在这里插入图片描述该节点通过构建名为follow_joint_trajectory的action来连接前端的算法和gazebo的虚拟后端。最后加上moveit构成完整的仿真环境:

<launch>
    <!-- Launch Gazebo  -->
    <include file="$(find probot_gazebo)/launch/probot_anno/probot_anno_gazebo_world.launch" />
    <!-- ros_control arm launch file -->
    <include file="$(find probot_gazebo)/launch/probot_anno/probot_anno_gazebo_states.launch" />   
    <!-- ros_control trajectory control dof arm launch file -->
    <include file="$(find probot_gazebo)/launch/probot_anno/probot_anno_trajectory_controller.launch" />
    <!-- moveit launch file -->
    <include file="$(find probot_anno_moveit_config)/launch/moveit_planning_execution.launch" />
</launch>

启动的节点如下所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mezdh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值