二:ROS中控制机器人运动的实现(在gazebo中显示)

ROS中控制机器人运动主要流程如下
新建模型—>加载驱动插件—>启动模型和节点->显示

有了机器人模型还不行,在Gazebo中仿真需要控制模型。模型中有轮子,需要控制轮子转动,控制轮子转动就需要加载驱动。

步骤:
(1)编辑机器人模型
(2)编辑gazebo属性,加载连接器控制驱动插件
(3)编辑gazebo属性,加载ros控制插件
(4)编辑.launch文件
(5)安装键盘控制器包
(6)运行.launch和键盘控制器程序,让小车动起来。

注意:xacro文件可以包含机器人模型的描述如标签,同样可以包含物理属性的描述如标签,可以将机器人模型标签项放在.xacro文件中,标签单独放在.gazebo文件中,然后在.xacro文件中使用#include命令将.gazebo文件加载进来。为了方便起见,本文将属性都放在一个.xacro文件中。
首先是要创建包,配置环境变量等操作,就不详述了。
然后的(1)(2)(3)步骤都是通过编辑.xacro文件实现。
在工程目录下的urdf文件夹下新建my_move_robot.xacro文件。

#1.编辑机器人模型
sart@sart-Lenovo-S41-70:~$ mkdir ~/catkin_ws/src/gazebotest/src -p
sart@sart-Lenovo-S41-70:~$ cd catkin_ws/src/gazebotest/src
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src$ catkin_create_pkg gazebotest
Created file gazebotest/CMakeLists.txt
Created file gazebotest/package.xml
Successfully created files in /home/sart/catkin_ws/src/gazebotest/src/gazebotest. Please adjust the values in package.xml.
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src$ cd gazebotest
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src/gazebotest$ mkdir urdf
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src/gazebotest$ cd urdf
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src/gazebotest/urdf$ touch my_move_robot.xacro

在my_move_robot.xacro文件下加入以下代码,代码包含的元素有车身,关节,轮子,
其中车身通过固定关节连接,包括三个标签
##a)车身

1

##b)轮子
##c)轮子和机身的连接

my_move_robot.xacro文件如下

#2.编辑gazebo属性,加载连接器控制驱动插件

在文件my_move_robot.xacro中加入连接器控制驱动插件代码,内容很简单,加载插件的动态链接库。

100.0 base_to_wheel1 base_to_wheel3 base_to_wheel2 base_to_wheel4 4 0.1 cmd_vel odom base_footprint odom 1 cmd_vel 1

#3.编辑gazebo属性,加载ros控制插件

在文件my_move_robot.xacro中加入ros控制插件代码,如下

/robot
</plugin>

#4.编辑.launch文件
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src/gazebotest/urdf$ cd …
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src/gazebotest$ mkdir launch
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src/gazebotest$ cd launch
sart@sart-Lenovo-S41-70:~/catkin_ws/src/gazebotest/src/gazebotest/launch$ touch my_move_roboot.launch
![
在这里插入图片描述

在/home/sart/catkin_ws/src下建gazebotest文件夹

文件很简单,内容包括加载一个空的地图,加载机器人模型,启动一个urdf_spawner服务节点。注意$(find gazebotest)表示我的工程包的文件目录。

<?xml version="1.0"?>

![](https://img-blog.csdnimg.cn/20200811182512515.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNDY1MjMz,size_16,color_FFFFFF,t_70

#5.安装键盘控制器包
使用如下命令安装
sudo apt-get install ros-indigo-teleop-twist-keyboard
rosstack profile
rospack profile
9nLmNzZG4ubmV0L3FxXzQzNDY1MjMz,size_16,color_FFFFFF,t_70#pic_center)

6.启动并运行,让小车动起来

a)启动.launch文件

roslaunch gazebotest my_move_roboot.launch
其中gazebotest为当前包的名字,此包要在ROS_PACK_PATH环境变量中。
my_move_roboot.launch为脚本,相当于一系列控制台命令
b)启动键盘控制器

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

#注意:报错



a.将链接2中的gazebo_ros复制到catkin_ws中去,然后在编译一下catkin_make
b.根据错误提示:将链接1中的py文件报错到相应的位置
我的另一篇博客介绍解决方法:

Logo

更多推荐