闭门造车日记 第六篇


造车日记 第六篇

第二阶段alpha

下面准备整合毫米波雷达。

不过在这之前,需要先把ROS搞定,因为我已经快要受不了“裸奔”的状态了。

然而在整合ROS之前,我又看了一眼仿真器。


机器人仿真软件

维基百科中有一篇对目前主流的机器人仿真软件进行了详细的比对

戳这里

我目前选择了webots

这货原本是个商业软件,但是2018年后拥抱了开源。

几番学习和试用之后,感觉蛮好玩的,在此介绍一下。


概念

安装配置什么的就不用说了,Linux下面都是一条命令的事儿。

先介绍几个概念


开发步骤

从全局来看,使用模拟器进行机器人开发的步骤包含:

  • 建立和导入 环境、机械、传感器等模型
  • 编写控制程序
  • 进行仿真
  • 放到真机中实测

世界(World)

在一个webots项目中,有一个唯一的 *.wbt 文件。

这个文件就是当前的“世界”,包含了机器人(群)和它(们)所处环境的三维描述。

所有对象的位置、方向、几何形状、外观、物理属性等一切信息都包含其中。

wbt使用结构化存储,可以包含其他文件(例如用CAD软件生成的模型)。

但是wbt不包含任何可执行代码。


控制器(Controller)

webots中的控制器,就是一段计算机代码,它实际控制世界中的机器人行为。webots支持的语言有:

  • C/ C++
  • Python
  • 其它(Java/ Matlab)

当模拟器运行的时候,webots启动对应的控制器,每一个控制器对应一个操作系统进程。


超级控制器(Supervisor Controller)

在wbt中定义的机器人Robot会有很多属性,当其中的”supervisor”域被置位”TRUE”的时候,这个机器人的控制器将会有额外的权限,通常是控制模拟器本身的行为,例如将机器人瞬间移动到一个位置,或者进行模拟的视频录制等等。


一个例子

随便打开一个webots自带的例子

当模拟器进入工作状态后,显卡将一直出于工作状态,在我的笔记本上(thinkpad T480s), 如果用intel 集成显卡,复杂一点儿3D界面会有卡顿,甚至会影响到其它GUI程序的流畅度,如果切换成让mx150去渲染的话,整个过程会丝滑很多。


从头创建一个真正的例子

创世纪

记得使用独立显卡加载

新建一个项目,选上默认的场景和灯光。。

完了之后,左侧的节点树中会增加一些东西。


零号号机器人

在世界里添加一个机器人。

先使用webots自带的机器人

e-puck 是一个mini机器人,使用一对差速轮控制。


修改行为

正如前文所述,每个机器人都一个控制器选项,默认的控制器代码,是一个简单的防止碰撞代码。

现在把它改掉,改成”extern”

也就是让外部程序来控制webots里的robot


代码

现在来编写一个ros node, 同时导入webots的模块,成为ROS和 webots的中介。

打开iPython, 键入如下代码
最后一行的回车慢点儿输入

当最后一行输入的时候,注意webots已经受到程序控制。

同时,一个新的ros 节点也会被创建出来, 像这样

初始化节点


继续输入代码
spin!

  • 分别获取左右电机的控制描述符
  • 设置成速度控制模式,并让左右轮相反转动
  • 让ROS节点运行起来

最后就能看到webots里的机器人,被这个ipython里的脚本控制得团团转。


to be continued…


文章作者: chopin1998@gmail.com
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chopin1998@gmail.com !
评论
 上一篇
闭门造车日记 第七篇 闭门造车日记 第七篇
造车日记 模拟器的SLAM初试本来挺简单的过程,但是因为各种版本的问题,折腾了很久。 dashing自带的程序似乎有问题。。 下面使用的是ROS2 foxy版本。 准备好必要的软件包。123456789mkdir -p turtlebot
下一篇 
毫米波雷达 第五篇 毫米波雷达 第五篇
在LinuX环境下配置TI毫米波雷达开发环境从Debian到Ubuntu本来已经在Debian下工作得不错,不过最近因为要学习ROS,居然把用了十多年的Debian给换成了Ubuntu。。。。。 虽然是大厂出品,但其中还有一些小坑。 只好再
  目录