Gazebo中通过键盘控制小车的移动

在小乌龟的例子中,通过 turtlesim 功能包下的 turtle_teleop_key 节点可以实现键盘控制小乌龟运动,那么在 Gazebo 仿真中也可以通过键盘控制 Gazebo 中的机器人进行运动,但默认情况下缺少相应的功能包,因此需要执行如代码7.32所示指令进行功能包的安装。
Code 7.32: Gazebo 键盘控制程序的安装

sudo apt-get install ros-melodic-teleop-twist-keyboard

在键盘控制功能包中有一个功能节点 teleop_twist_keyboard,该节点会监听键盘的按键事件,然后发布 cmd_vel 话题,该话题被 Gazebo 的两轮差速插件所订阅,然后转化为 Gazebo 中能够识别的
速度数据。因此只要运行该节点就可以通过键盘来控制机器人,修改 Launch 文件7.20中的代码,添加 teleop_twist_keyboard 节点,如代码7.33所示。执行 Launch 文件就可以看到如代码7.34所示的结果,
然后在终端中按照 teleop_twist_keyboard 节点的提示信息来控制智能机器人,从而得到如图7-38所示
的效果。
7.20

<launch >
 <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"/>
 <!-- 指 定 模 型 的URDF文 件 地 址 -->
 <arg name="model"
 default="$(find begin1)/urdf/simple_sai_robot.urdf"/>
 <!-- RVIZ配 置 文 件 的 存 放 地 址 -->
 <arg name="rvizconfig"
 default="$(find begin1)/rviz/simple_model.rviz" />

 <!-- 模 型 描 述 的 参 数 -->
 <param name="robot_description"
 command="$(find xacro)/xacro $(arg model)" />

 <!-- 载 入 空 的 物 理 世 界 -->
 <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 >

<node if="$(arg gui)" name="joint_state_publisher_gui"
pkg="joint_state_publisher_gui"
 type="joint_state_publisher_gui" />
 <node unless="$(arg gui)" name="joint_state_publisher"
 pkg="joint_state_publisher"
 type="joint_state_publisher" />
 <node name="robot_state_publisher" pkg="robot_state_publisher"
 type="robot_state_publisher" />

 <!-- 创 建 一 个 模 型 对 象 -->
 <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model"
 args="-x 0.0 -y 0.0 -z 0.0 -unpause -urdf
 -model sai_robot -param robot_description"
 respawn="false" output="screen" />

 <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)"
 required="true" />
 </launch >
 

Code 7.33: Launch 文件中添加 Gazebo 键盘控制程序(simple_model_gazebo.launch)

<launch>
<node name="twist_keyboard" pkg="teleop_twist_keyboard"
 type="teleop_twist_keyboard.py" output="screen" />
</launch>

simple_model_gazebo.launch

<launch >
 <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"/>
 <!-- 指 定 模 型 的URDF文 件 地 址 -->
 <arg name="model"
 default="$(find begin1)/urdf/simple_sai_robot.urdf"/>
 <!-- RVIZ配 置 文 件 的 存 放 地 址 -->
 <arg name="rvizconfig"
 default="$(find begin1)/rviz/simple_model.rviz" />

 <!-- 模 型 描 述 的 参 数 -->
 <param name="robot_description"
 command="$(find xacro)/xacro $(arg model)" />

 <!-- 载 入 空 的 物 理 世 界 -->
 <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 >

<node if="$(arg gui)" name="joint_state_publisher_gui"
pkg="joint_state_publisher_gui"
 type="joint_state_publisher_gui" />
 <node unless="$(arg gui)" name="joint_state_publisher"
 pkg="joint_state_publisher"
 type="joint_state_publisher" />
 <node name="robot_state_publisher" pkg="robot_state_publisher"
 type="robot_state_publisher" />

 <!-- 创 建 一 个 模 型 对 象 -->
 <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model"
 args="-x 0.0 -y 0.0 -z 0.0 -unpause -urdf
 -model sai_robot -param robot_description"
 respawn="false" output="screen" />

 <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)"
 required="true" />
 
 <node name="twist_keyboard" pkg="teleop_twist_keyboard"
 type="teleop_twist_keyboard.py" output="screen" />
 </launch >

在这里插入图片描述

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是梦磊OL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值