来自书籍:Programming robots with ROS和ROScon 2019会议演讲https://roscon.ros.org/2019/talks/roscon2019_pcg_gazebo_pkgs.pdf的想法:
1. “In this chapter, we’ll show another way to create Gazebo worlds full of repetitive models: using a Python template engine”
Chapter 18:使用python template engine:Empy
2. 使用程序(python)在仿真环境中动态加载、删除model:Chapter 11.
3. 针对pcg_gazebo_pkgs,需要挖掘的具体技术:
3.1 如何使用world generator生成gazebo world:包括model list、constraints等
3.2 如何像介绍中提到的,在一台计算机中如何运行多个仿真实例:process manager部分
4. pcg_gazebo_pkgs使用:
4.1 按照Procedural Generation for Gazebo 页面指导建立workspace:~/pcg_ws,下载程序包并进行编译。安装其他需要的python包。
4.2 直接使用:在~/pcg_ws下执行python,即可直接使用pcg库中的各种函数。
4.3 使用jupyter notebook:
sudo pip install jupyter (或 sudo -H pip install jupyter)
jupyter notebook
可能出现的python兼容性错误:
Traceback (most recent call last):
File "/home/xxx/.local/bin/jupyter-notebook", line 6, in <module>
from notebook.notebookapp import main
File "/home/xxx/.local/lib/python3.5/site-packages/notebook/notebookapp.py", line 49, in <module>
from zmq.eventloop import ioloop
File "/home/xxx/.local/lib/python3.5/site-packages/zmq/eventloop/__init__.py", line 3, in <module>
from zmq.eventloop.ioloop import IOLoop
File "/home/xxx/.local/lib/python3.5/site-packages/zmq/eventloop/ioloop.py", line 21, in <module>
from tornado import ioloop
File "/home/xxx/.local/lib/python3.5/site-packages/tornado/ioloop.py", line 33, in <module>
import asyncio
File "/usr/lib/python3.5/asyncio/__init__.py", line 21, in <module>
from .base_events import *
File "/usr/lib/python3.5/asyncio/base_events.py", line 18, in <module>
import concurrent.futures
File "/usr/lib/python2.7/dist-packages/concurrent/futures/__init__.py", line 8, in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "/usr/lib/python2.7/dist-packages/concurrent/futures/_base.py", line 357
raise type(self._exception), self._exception, self._traceback
^
SyntaxError: invalid syntax
检查发现,是文件:"/home/xxx/.local/bin/jupyter-notebook"的第一行因某种原因写成了#!/usr/bin/python3,改为#!/usr/bin/python则可消除以上错误