Webots包含三种不同的软件包类型:.deb
(Debian软件包),.tar.bz2
(tarball软件包)和.snap
(快照软件包)。我们在资料中提供了.deb
安装包。如果需要其他版本的可以在网盘上下载,在Github下载大文件会很不稳定。
sudo dpkg -i webots_2020a-rev1_amd64.deb
sudo apt-get -f install
我们需要配置环境变量webots_home
,指向到我们安装的应用目录。
sudo gedit ~/.bashrc
export WEBOTS_HOME=/usr/local/webots
export webots_home=/usr/local/webots
测试安装(执行命令)
webots
官方教程:https://cyberbotics.com/doc/guide/tutorials
本地帮助文档在应用的安装目录下,docs
的文件夹中。目前的帮助文档无法直接打开,我们需要进行额外的配置。
帮助文档资源
打开帮助文件文件夹。
服务启动
python -m http.server 8000
python2启动服务器
python -m SimpleHTTPServer 8000
python3启动服务器
python -m http.server 8000
文档访问路径
用户手册地址: http://localhost:8000/?url=&book=guide
API手册地址: http://localhost:8000/?url=&book=reference
汽车手册地址: http://localhost:8000/?url=&book=automobile
当完成一个模型的建立工作后,为了方便后面的管理,我们可以将模型制作成Proto文件。在官方给出的案例中我们可以查看UR系列机械臂的Proto文件。projects\robots\universal_robots
问题:
机械臂头尾的处理方式?
toolSlot
属性,用于添加工具节点,新的工具节点将连接在机械臂的末端。
staticBase
属性,用于处理基座。
.dae
、.stl
和.step 生成
Proto_IndexedFaceSet信息dae和stl文件处理
使用Blender将模型(dae和stl)导出为.obj
文件,然后使用view3dscene
工具完成转化。模型文件可以在GitHub上获取。
工具安装
sudo apt-get update
sudo apt-get install view3dscene
转换
view3dscene --write your_model.obj > your_model.wrl
注意:
在导出为.obj
文件时,需要观察Webots中坐标系的方向。
step文件处理
我们可以在C4D、3ds Max、SolidWorks等应用加载,然后转化为VRML文件。
这种直接导出的方式在C4D、3ds Max、SolidWorks中均可以实现。
提示:
如果使用的是Ubuntu18的话,C4D有可以的版本安装。
通过urdf生成的是*.proto文件
对于已有或只有urdf文件的情况下,我们可以通过urdf2webots功能包实现。在资料中提供给大urdf2webots
工具,在urdf2webots目录下终端执行如下命令:
pip install -r requirements.txt
requirements.txt
pycollada==0.6
Pillow
工具使用
python urdf2webots.py --input=your_robot_path.urdf
生成的是*.proto文件,文件在urdf2webots
文件夹中,我们可以导入到自己项目中。
注意
生成的proto文件中robot配置没有设置boundingObject
信息,我们需要单独配置。
前的机械臂控制是我们自己已经写好的位置信息,如果想要进行路径规划,我们需要与其他的工具联合在一起。可以通过将Webots中的world改造为ROS中的一个节点(通过ros
控制器,它是被预编译过的控制器,通常情况下能满足我们大多数需求,只有在特殊需求下我们才会去使用自定义的ros控制器),这样就可以通过ROS完成与多工具的联动。
Webots提供了 webots_ros
包,官方的文档中仅说明了在Linux下的ROS melodic
和 kinetic
两个版本测试。当前使用的是kinetic
版本的Ros。
webots_ros
包下载
sudo apt-get install ros-melodic-webots-ros
kinetic或melodic
案例运行
roslaunch webots_ros e_puck_line.launch
案例说明:
webots.launch
webots_launcher.py
optParser = optparse.OptionParser()
optParser.add_option("--world", dest="world", default="", help="Path to the world to load.")
optParser.add_option("--mode", dest="mode", default="realtime", help="Startup mode.")
optParser.add_option("--no-gui", dest="noGui", default="false", help="Start Webots with minimal GUI.")
options, args = optParser.parse_args()
if 'WEBOTS_HOME' not in os.environ:
sys.exit('WEBOTS_HOME environment variable not defined.')
command = [os.path.join(os.environ['WEBOTS_HOME'], 'webots'), '--mode=' + options.mode, options.world]
if options.noGui == 'true':
command.append('--stdout')
command.append('--stderr')
command.append('--batch')
command.append('--no-sandbox')
command.append('--minimize')
subprocess.call(command)
在官方文档中我们可以看到UR机械臂与MoveIt!的联动案例。
除了官方文档中提到的需要复制的ur_e_webots
外,还需要在https://github.com/ros-industrial/universal_robot下载ur5_e_moveit_config
和ur_e_description
启动Webots的ure.wbt
world,修改UR5e
的控制器为universal_robots_ros
。也可配置launch进行启动。
sudo apt-get isntall ros-kinetic-moveit
加载ur机械臂的URDF文件
roslaunch ur_e_webots ur5e.launch
MoveIt!启动
roslaunch ur5_e_moveit_config ur5_e_moveit_planning_execution.launch
ERROR:cannot launch node of type [moveit_ros_move_group/move_group]: moveit_ros_move_group
原因:没有安装moveit
首先照例更新源
sudo apt-get update
kinetic 版:
sudo apt-get install ros-kinetic-moveit
Melodic 版:
sudo apt-get install ros-melodic-moveit
Rviz启动
roslaunch ur5_e_moveit_config moveit_rviz.launch config:=true
如果控制其他机械臂下载对应的URDF和MoveIt!即可。