ROS下的机器人建模与仿真

1 创建工作空间及功能包

1.1 创建工作空间

$ mkdir -p ~/catkin_ws/src       #在home目录下创建两个文件夹/catkin_ws/src
$ cd ~/catkin_ws/src             #转移到/catkin_ws/src目录下                                
$ catkin_init_workspace          #初始化工作空间

1.2编译工作空间

$ cd ~/catkin_ws/ 	#返回/catkin_ws目录下
$ catkin_make    	#编译工作空间

1.3 设置环境变量

$ gedit ~/.bashrc       #打开home目录下的.bashrc文件

在.bashrc最后一行添加“source ~/catkin_ws/devel/setup.bash”
在这里插入图片描述

1.4 机器人模型功能包

$ cd ~/catkin_ws/src	#转移到/catkin_ws/src目录下
$ catkin_create_pkg mbot_description urdf xacro   gazebo_plugins  gazebo_ros gazebo_ros_control  roscpp  rospy    #创建“mbot_description”功能包,依赖“urdf xacro…...”
$ cd ~/catkin_ws	#返回到/catkin_ws目录下
$ catkin_make 		#编译工作空间

完成上述步骤后,home下会有“catkin_ws”
ROS下的机器人建模与仿真_第1张图片

“catkin_ws”中有“build”、“devel”、“src”:
ROS下的机器人建模与仿真_第2张图片

“src”中有“mot_description”和“CMakeLists.txt”:
ROS下的机器人建模与仿真_第3张图片

1.5完善机器人描述功能包

在“mbot_description”中创建以下文件夹:“urdf”、“meshes”、“launch”、“config”
ROS下的机器人建模与仿真_第4张图片

2 完成机器人的URDF模型

2.1创建机器人启动文件

display_mbot_base_urdf.launch
ROS下的机器人建模与仿真_第5张图片

2.2 创建机器人urdf模型

2.2.1机器人车体

在mbot_description/urdf下创建“mbot_base.urdf”文件,并写入以下内容
ROS下的机器人建模与仿真_第6张图片

运行

$ roslaunch mbot_description display_mbot_base_urdf.launch

若RVIZ没有显示机器人模型

(1)在“Fixed Frame”下选择“base_link”

在这里插入图片描述

(2)点击“add”添加“RobotModel”
ROS下的机器人建模与仿真_第7张图片

(3)若要观察坐标关系,还可以添加“TF”

2.2.2机器人添加车轮

在mbot_description/urdf的“mbot_base.urdf”文件添加车轮相关描述代码,并运行launch文件显示
ROS下的机器人建模与仿真_第8张图片

2.2.3机器人添加前后支撑轮

在mbot_description/urdf的“mbot_base.urdf”文件添加支撑轮相关描述代码,并运行launch文件显示
ROS下的机器人建模与仿真_第9张图片

2.2.4机器人添加kinect传感器

在mbot_description/urdf的“mbot_base.urdf”文件添加kinect传感器相关描述代码,并运行launch文件显示,需要将课程例程的“meshes”文件夹中的kinect描述文件添加到功能包的“meshes”下。
ROS下的机器人建模与仿真_第10张图片

2.2.5检查URDF模型的整体结构

运行
$ urdf_to_graphiz mbot_base.urdf
ROS下的机器人建模与仿真_第11张图片

3机器人仿真

3.1 创建仿真相关文件

在“mbot_description/urdf”下创建“mbot_base_gazebo.urdf”,并把“mbot_base.urdf”的内容复制到“mbot_base_gazebo.urdf”中。在“mbot_description/launch”下创建“gazebo_mbot_base_urdf.launch” 。
ROS下的机器人建模与仿真_第12张图片

3.2 为机器人模型添加惯性参量和碰撞参量

车身base_link:
ROS下的机器人建模与仿真_第13张图片

左右轮right、left_wheel_link:
ROS下的机器人建模与仿真_第14张图片

前后支撑轮front、back_caster_link

ROS下的机器人建模与仿真_第15张图片

3.3设置kinect传感器

3.3.1为kinect传感器配置碰撞属性和惯性属性(可选)

ROS下的机器人建模与仿真_第16张图片

3.3.2 新建一个虚拟link来解决坐标变换的问题
在这里插入图片描述

3.3.3插入kinect传感器插件

ROS下的机器人建模与仿真_第17张图片

传感器插入后可运行

$ roslaunch mbot_description gazebo_mbot_base_urdf.launch

来查看传感器的效果,运行后,在RVIZ 的“add”中添加点云图像

ROS下的机器人建模与仿真_第18张图片

然后在gazebo中放入任意物体

ROS下的机器人建模与仿真_第19张图片

然后在rviz的点云信息中显示
ROS下的机器人建模与仿真_第20张图片

3.4 添加控制器插件
3.4.1为左右轮添加传动机构
ROS下的机器人建模与仿真_第21张图片

3.4.2添加差速运动控制器

ROS下的机器人建模与仿真_第22张图片

3.4.3测试控制程序

首先,把附件的mbot_teleop功能包添加到工作空间源文件目录(~/catkin_ws/src)下,然后

$ cd ~/catkin_ws/              #返回/catkin_ws目录下
$ catkin_make		      #编译工作空间
$ roslaunch mbot_description gazebo_mbot_base_urdf.launch      #运行仿真程序

打开一个新的终端:

$ roslaunch mbot_teleop mbot_teleop.launch 

如图所示,通过键盘对应按键就能控制机器人运动

ROS下的机器人建模与仿真_第23张图片

4 查看整个系统的计算图

运行$rqt_graph

可以看到整个系统的计算图,/mbot_teleop发送控制命令/cmd_vel给仿真环境/gazebo的车,/gazebo经过计算之后把坐标变换输出,而/joint_state_publisher则控制机体内部关节的坐标变换。

ROS下的机器人建模与仿真_第24张图片

5 参考

古月居的博客

你可能感兴趣的:(ROS)