在这里我们将用到第二章安装的ROS,以及机器人仿真软件Gazebo来打造自己的机器人小狗,在这里先给出效果图~~比较先看到结果比较能提起读者兴趣~~ 至于如果有读者想做真正的机器人可以自行百度"ROS 制作 机器人"等关键词。不过实体机器人说白了还是那堆东西(几根铁加电机),比较花功夫的在写嵌入式那边,如果读者碰巧是大一二学生,或者有大把大把的时间(零基础的话半年到一年)不妨试着自己做一个实体机器人,会有很大收益哦。
第三四章的代码在这里 https://github.com/himlen1990/mytoy.git
这就是我们将要做的小狗机器人~~~是不是看起来很像一张椅子(笑),但是它可以动喔。
是不是已经迫不及待了呢?不用急,下面的步骤会让你崩溃的~~
-------------------------------------------------------分界线-----------------------------------------------------------------------------
首先我们需要创建一个ros package (在这里默认你已经看完第二章,知道如何去创建一个ROS包)
为了方便管理,我们创建一个urdf文件夹 (urdf是用来描述机器人的文件) ros的教程在这里:http://wiki.ros.org/urdf/Tutorials
在文件夹下面创建一个xxx.urdf文件 xxx是任意名字,比如说toydog.urdf
首先我们制造一个长方形
在这里:robot name是我们的机器人名字,material是我们定义颜色的地方,可以看到我们定义了蓝色黑色和白色。
接下来要做一个base_link,base_link可以看作是机器人的原点,或者说是树根节点,整个机器人关节间的关系可以用一个树状图表示,如下图:
在这里Link1就是相当于那个根节点,这样做是为了方便我们之后的动力学计算。到此我们可以运行下面命令看一下效果
roslaunch urdf_tutorial display.launch model:=你的路径/urdf/xxx.urdf
比如说在我电脑下的话那就是roslaunch urdf_tutorial display.launch model:=/home/himlen/mytoy_ros/src/mytoy/urdf/toydog1.urdf
如无意外我们会看到一个长方形
接下来我们把腿加上
咋一看很长,但实际上大部分内容是重复的。只需要粘贴复制就可以了,需要定义的地方是link的位置,还有joint的位置和转动轴,还有一些限制。对于没学过机械的同学在这里简单科普一下,link,顾名思义就是连杆,说白了就是一根硬的东西,或者叫做刚体,而joint是可以转动的,一般用电机驱动。因此我们的joint会连接两个link,在这底下还有一个axis属性,这个属性定义了joint绕哪个轴旋转,limit定义的是可以转的最大角度,还有扭矩和角速度等。
需要注意的是每个link和joint必须定一个独有的名字,如果名字重复的话会报错
完整的描述文件(加上baselink的)如下:
运行一下,如无意外的话应该是这样子的:
接下来的工作就是简单重复劳动了,我们只需要在对称的位置上继续定义其他腿就OK了。
为了能让这个模型在gazebo上面运行,我们还需要加上其他属性,但基本都是粘贴复制的东西
比如说为每个link加上collision和inertial属性
每个joint加上transmission属性(加上以后才能控制这些关节转动)
在最后我们还需要加上gazebo 的plugin
完整的文件可以在我的github里面找到:
https://github.com/himlen1990/mytoy/tree/master/urdf/toydog.urdf
想在gazebo上面看效果的话可以把我github上面的文件拷贝下来编译以后执行
roslaunch mytoy test_urdf.launch
应该就能看到第一个图的效果了