再探FSSIM
实现代码控制
在上一篇博客,我们已经实现了控制小车的运动,并且得知
dc:位移(千米)
delta:转角(弧度)
接下来实现代码控制小车的运动,先不管算法。
然后,打开ROBOWARE
打开并创建一个工作区
这里省略ROBOWARE的操作。
从上一回我们私聊就可以让小车运动来看,我们只需要写一个发布者就可以实现代码对车子的控制。
写一个发布者:
代码这里就不展示了,是错的,后面有一张正确的图。
代码写好以后在代码的工作区进行编译:
catkin_make
编译错误,显示 fssim_common/Cmd.h 不存在
所以,可能这个仿真环境需要在fssim的工作空间进行操作
将写好的代码粘贴到fssim的工作空间去试试
。。。。。显然这个方法不对,那么只能自己写一个msg了
将之前实验的pkg删除掉,防止对fssim产生影响。
然后就是漫长的debug,踩了以下几个坑,老铁们值得避坑:
1.msg文件要自己编写,首先要在包的下面创建一个msg文件夹
2.msg可以在终端使用
rosmsg show ...(...为目标msg)
查看,然后直接复制粘贴就好
3.msg编译后自动生成一个msg.h,这个头文件要调用,要用如下方法:(那我的举例)
#include "publi/mymsg.h"
4.下面在使用msg定义消息的时候用
publi::mymsg message;
注意:每个人的包名和msg的名字不一样,根据自己的来。最终代码如下:
再次编译,成功!
但是新的问题出现,我们编译的这个能不能驱动小车呢?
试一下:没调用代码之前:
1.先
source devel/setup.bash
rosrun publi publish
看看效果:
感觉走的有点远,不知道是不是错觉。
在终端私聊一下对比对比:
终端运行:
rostopic pub /fssim/cmd fssim_common/Cmd 1 0
细想一下也很正常,毕竟代码里的topic是不停循环的,改一下代码试试:
编译运行,fssim就不重启了,直接和上一次的图片对比也能看出来有没有运动。
果然有效果,那么为什么第一次运行代码的时候只跑了那么一点距离?因为rviz建立的模型是有边界的,前进到那个距离应该已经是到了仿真环境的边缘了。
总结
到现在就已经实现了使用代码驱动小车,这给后面算法的模拟提供基础。
下一篇
下一篇探索fssim中的雷达和摄像头的接口,为真正进行仿真做准备。