基于ROS的smartcar仿真

准备工作: 创建工作空间,在src下创建smartcar功能包(见相关ROS基础入门)
1.创建ros package命名为smartcar

catkin_create_pkg smartcar std_msgs rospy roscpp urdf 

2.建立文件夹launch和urdf分别用来存放.launch文件和.urdf文件
3 在smartcar文件夹下建立urdf文件夹,创建智能车的描述文件smartcar.urdf,描述代码如下:

    <?xml version="1.0"?>  
    <robot name="smartcar">  
      <link name="base_link">  
        <visual>  
          <geometry>  
            <box size="0.25 .16 .05"/>  
        </geometry>  
        <origin rpy="0 0 1.57075" xyz="0 0 0"/>  
        <material name="blue">  
            <color rgba="0 0 .8 1"/>  
        </material>  
        </visual>  
     </link>  

     <link name="right_front_wheel">  
        <visual>  
          <geometry>  
            <cylinder length=".02" radius="0.025"/>  
          </geometry>  
          <material name="black">  
            <color rgba="0 0 0 1"/>  
          </material>  
        </visual>  
      </link>  

      <joint name="right_front_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="right_front_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
      </joint>  

      <link name="right_back_wheel">  
        <visual>  
          <geometry>  
            <cylinder length=".02" radius="0.025"/>  
          </geometry>  
          <material name="black">  
            <color rgba="0 0 0 1"/>  
          </material>  
        </visual>  
      </link>  

      <joint name="right_back_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="right_back_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
     </joint>  

     <link name="left_front_wheel">  
        <visual>  
          <geometry>  
            <cylinder length=".02" radius="0.025"/>  
          </geometry>  
          <material name="black">  
            <color rgba="0 0 0 1"/>  
          </material>  
        </visual>  
      </link>  

      <joint name="left_front_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="left_front_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
      </joint>  

      <link name="left_back_wheel">  
        <visual>  
          <geometry>  
            <cylinder length=".02" radius="0.025"/>  
          </geometry>  
          <material name="black">  
            <color rgba="0 0 0 1"/>  
          </material>  
        </visual>  
      </link>  

      <joint name="left_back_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="left_back_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
      </joint>  

      <link name="head">  
        <visual>  
          <geometry>  
            <box size=".02 .03 .03"/>  
          </geometry>  
          <material name="white">  
              <color rgba="1 1 1 1"/>  
          </material>  
        </visual>  
      </link>  

      <joint name="tobox" type="fixed">  
        <parent link="base_link"/>  
        <child link="head"/>  
        <origin xyz="0 0.08 0.025"/>  
      </joint>  
    </robot>  

4.图形化显示URDF模型

我们现在已经完成了一个简单的URDF模型创建,ROS提供了相应的工具可以让URDF图像化显示出来。

urdf_to_graphiz  /home/daniel/catkin_ws/src/smartcar/urdf/smartcar.urdf
  1. 创建display.launch文件

该文件可以帮助启动RViz来观察机器人。其中有三个node,一个是rviz,另外两个joint_state_publisher robot_state_publisher是必须的node。

第一个输入参数 model 就是要启动的urdf文件路径。
第二个输入参数 gui 指定是否启用关节转动控制面板窗口。

<launch>  
    <arg name="model" />  
    <arg name="gui" default="False" />  
    <param name="robot_description" textfile="($find urdf_tutorial)/home/daniel/catkin_ws/src/smartcar/urdf/smartcar.urdf)" />  
    <param name="use_gui" value="$(arg gui)"/>  
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />  
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />  
        <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" required="true" />  
</launch>  

7.切换到launch文件夹下,使用下面命令启动rviz来查看我们刚刚完成的机器人模型:

roslaunch urdf_tutorial display.launch model:=urdf/smartcar.urdf

这里完成了三件事情:
 加载特定的模型到参数服务器
 运行节点来发布关节状态和转换
 运行rviz及其配置文件
这个launch文件假设smartcar.urdf在你所运行命令的文件夹的urdf子文件夹中(所以切记这里的roslaunch语句应该在smartcar文件夹下运行,不然会出现错误:No such file or directory: u'urdf/smartcar.urdf'),否则,你可以用:model:=’$(find pkg-name)/urdf/smartcar.urdf’。这里pkg-name是这个文件所在包的名称。这里所有的例程都在urdf_tutorial包中。
我们可以看到下面的画面:
这里写图片描述
如果运行:

 roslaunch urdf_tutorial display.launch model:=urdf/smartcar.urdf gui:=true

你会顺便看到弹出一个控制面板…
这里写图片描述
出现错误:
1)

 No transform from [tyer_back_left] to [base_link]

解决:这是urdf 文件的格式问题……
2)

No tf data.  Actual error: Fixed Frame [base_link] does not exist

解决:因为我是前一天已经做好了的,第二天一直报这个错误,原来是因为我没有在同一个终端窗口下完成这些步骤…也是醉了

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

穿着帆布鞋也能走猫步

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

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

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

打赏作者

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

抵扣说明:

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

余额充值