[漂移驴车项目]Mac OS X 端驴车环境配置指南 精华

8631浏览
查看: 8631|回复: 11

[漂移驴车项目] Mac OS X 端驴车环境配置指南

[复制链接]
本帖最后由 yoyojacky 于 2021-11-5 18:31 编辑

0x00 前言


今天, 为了配置 Mac OS X 的驴车环境,真的是用了大半天时间, 在操作的过程中虽然录像了.但是遇到各种问题一直安装不成功,直到最后人都走了, 在不懈的努力下,终于安装成功.下面总结一下安装配置的步骤及注意的细节.
0x01 Mac OS X 配置驴车环境步骤快速查询表


在最开始,打开一个终端,创建整个项目的核心目录:
  1. cd ~
  2. mkdir donkey-projects
  3. cd donkey-projects
复制代码


然后下载 miniconda3 python3.7 64bit 的安装包:
https://docs.conda.io/en/latest/miniconda.html
Mac OS X 端驴车环境配置指南图1
注意版本即可,我选择的是 pkg 的包,安装过程中可能会遇到无法安装的问题,请选择自己的磁盘并找到安装路径.

默认情况下, Mac 上应该有 git 工具,如果没有请去这里下载 :
https://www.atlassian.com/git/tutorials/install-git

并安装,也可以在终端中使用:
  1. brew install git
复制代码
来进行安装, 确保系统包含 miniconda 和 git 的环境后.
进入 donkey-projects 目录,这里是前面创建的目录, 我将miniconda 安装在这个目录里面.
Mac OS X 端驴车环境配置指南图2
为了方便调用 conda 的命令,我在临时的环境变量里面添加了,minicomda3中 bin 目录的路径到系统环境变量中:
  1. cd miniconda3/bin/
  2. echo $PATH
  3. export  PATH=$PATH:`pwd`
复制代码
Mac OS X 端驴车环境配置指南图3
然后创建一个项目目录并进入进去.
  1. mkdir projects
  2. cd projects
复制代码
下载驴车最新的 4.2.1 的仓库, 由于默认驴车的项目是放在 github 上,国内访问不方便,因此我将其拉到了码云的平台上,内容和官方的一样的.直接通过下面的命令拉到本地即可.
  1. git clone https://gitee.com/yoyojacky/donkeycar
  2. cd donkeycar/
复制代码
官方说明里面是建议大家利用 git checkout master 切换的主分支,实际上我们拉下来的环境就在主分支上,执行不执行都可以,安全起见,切换到主分支.
进入仓库后先更新一下 conda 的本地源,然后执行更新和环境搭建就应该会稍快一些.
  1. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  2. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  3. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
复制代码
然后最后设置:
  1. conda config --set show_channel_urls yes
复制代码
接着,确认自己在 donkeycar 目录中并执行下面两条命令:
  1. yes | conda update -n base -c defaults conda
复制代码
创建 Python Miniconda 的虚拟环境并激活 donkey虚拟环境,这一步是最耗时的,很容易出现卡住没有相应的感觉,耐心,耐心,耐心尝试.肯定能成功的.
  1. conda env create -f install/envs/mac.yml
  2. conda activate donkey
  3. pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple -e .\[pc\]
复制代码
PS: 我临时指定了清华源进行安装,速度快了很多,并且因为我使用 ZSH 的 shell,因此在执行最后一条命令的时候需要转义一下方括号的符号: 分别转义\[  和 \].
安装完成后,会提示你可以使用 conda activate donkey 进入虚拟环境,并通过 conda deactivate 退出虚拟环境.
一般在 windows 主机上可能会开始安装 tensorflow-gpu 支持, 但是 mac 上就不用了. 目前,在 mac 上没有对Nvidia GPU 的支持...
所以下一步就直接创建你的驴车目录看看是否能成功.
  1. donkey  createcar  --path ../mycar
复制代码
我在执行的过程中全程都在 donkeycar 的目录中,完成后,我的 mycar 驴车项目会在 donkey-projects/projects/mycar 中, 由于我已经创建过一次了,因此,我重新创建了一个 mynewcar 的项目,如下图:
Mac OS X 端驴车环境配置指南图4
一旦出现同样的图示,说明你成功安装好了 donkeycar 的环境.

0x02 gym-donkeycar donkycar 的模拟器


为了方便我们训练模型,你需要先下载一个通过 unity 游戏引擎构建的驴车模拟器,不同的系统使用的模拟器不一样.

Mac OS X 端驴车环境配置指南图5
然后根据自己的操作系统选择: 我是 mac 所以选择 DonkeySimMac.zip, 由于比较大, 380MB,还有 windows 版本的,还有一堆大家难以下载又特别大的,都放到百度云盘了:
并且连接永久有效:
  1. 链接: https://pan.baidu.com/s/1nVL7JefVknaiFHAf8oFLAw 提取码: 6txh  
复制代码
需要的去下载后解压到你的 projects 目录中,当前我是 Mac OS X,因此需要简单配置一下权限:
点击苹果图标-> 系统偏好设置-> 隐私设置
Mac OS X 端驴车环境配置指南图6Mac OS X 端驴车环境配置指南图7就在我红色框框的位置应该看到一个被拒绝的应用.我这里复现不了,知道哪里调就好.
一般情况下,第一次下载的应用在苹果上第一次运行的时候需要你去这里信任并放行,不然会打不开.
坚持一下,马上就可以结束配置了这里直接先从我克隆的 gym-donkeycar 仓库然后激活 donkey 并安装需要的依赖文件:
  1. cd donkey-projects/projects/
  2. git clone https://gitee.com/yoyojacky/gym-donkeycar
  3. cd gym-donkeycar
  4. conda activate donkey
  5. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -e .\[gym-donkeycar\]
复制代码
正常完成后,再来两步就可以尝试你的模拟器了,再忍忍.
  1. donkey createcar --path ../mysim
  2. cd  ../mysim
复制代码
然后打开 myconfig.py, 用 vim 打开并直接输入冒号:295 直接就定位到需要修改的位置了.
去掉配置前面的#号,并将 False 改为 True, 将前面拷贝的 DonkeySimMac 的完整路径加入,保存退出.
  1. DONKEY_GYM = True
  2. DONKEY_SIM_PATH = "/Users/这里替换成你的 mac 用户名/ donkey-projects/projects/DonkeySimMac/donkey_sim.app/Contents/donkey_sim"
  3. DONKEY_GYM_ENV_NAME = "donkey-generated-track-v0"
复制代码
Mac OS X 端驴车环境配置指南图8
接下来就是尝试开开车.感受一下:
命令行输入:
  1. python manage.py drive
复制代码
等待弹出窗口选择车道,然后选择用户模式,油门 15%(最大油门), 控制选择 joystick, 然后就可以打开浏览器的:http://localhost:8887/drive 开始开车了!!!
先开始练习练习,然后就可以进行行车记录,并在 data 目录生成数据,后续的训练简单的操作可以看官方说明或者看视频:
复制代码
会议录像来喽,有全程字幕,可以下载,方便大家查看[呲牙]



yoyojacky  初级技匠
 楼主|

发表于 2021-10-30 21:44:04

会议主题:漂移驴车-车友会
会议时间:2021/10/30-2022/03/12 10:00-12:00(GMT+08:00) 中国标准时间 - 北京, 每周 (周六)

点击链接入会,或添加至会议列表:
https://meeting.tencent.com/dm/pqQjdxlVEG2h

会议 ID:423 9700 5680

【议题】
1. 漂移驴车项目愿景-5'-全体召集人
2. 车队章程与车手公约-5'-Rockets
3. 驴车活动运营规划-5'-昊男
4. 技术工坊-基本硬件知识与PC端环境搭建交流(上)-50'-Jacky
5. 技术工坊-PC端环境搭建交流(下)-50'-Jacky
6. 自由交流与合影截图-5'-全体车友
7. 完美收官...
回复

使用道具 举报

刘晓勇David  见习技师

发表于 2021-11-3 23:36:58

注意运行到
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/cloud/pytorch/
再往后运行
yes | conda update -n base -c defaults conda
会提出warning
Collecting package metadata (current_repodata.json): failed
channels https://mirrors.tuna.tsinghua.edu.cn/cloud/pytorch/
UnavailableInvalidChannel: The channel is not accessible or is invalid.
  channel name: cloud/pytorch
  channel url: https://mirrors.tuna.tsinghua.edu.cn/cloud/pytorch
  error code: 404

这个项目不需要pytorch,在漂移君和撒哈拉大野牛的指导下,remove这个源。
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/cloud/pytorch/

再次运行

yes | conda update -n base -c defaults conda
没有warning了。
回复

使用道具 举报

微笑的rockets  NPC

发表于 2021-11-4 11:21:24

Mac OS X 端驴车环境配置指南图1
在执行这步的时候,长时间卡死
然后找到mac.yml文件,根据里面的依赖,一个一个单独的进行安装。
  1. yes | conda install pip
复制代码

发现最终mac m1下出现的问题,总结如下torchaudio、TensorFlow=2.2.0、opencv-python-headless,三个装不上去
需要想办法安装上这些内容,才可以继续进行下去。
回复

使用道具 举报

微笑的rockets  NPC

发表于 2021-11-4 11:54:32

本帖最后由 微笑的rockets 于 2021-11-4 11:55 编辑
微笑的rockets 发表于 2021-11-4 11:21
在执行这步的时候,长时间卡死
然后找到mac.yml文件,根据里面的依赖,一个一个单独的进行安装。

这些库,我尝试用
  1. pip install tensorflow==2.2.0   -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
  1. pip install opencv-python-headless   -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
  1. pip install torchaudio   -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码

安装完成
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2021-11-5 11:11:11

嗯,或者我们可以下载好直接安装也可以。。
回复

使用道具 举报

刘晓勇David  见习技师

发表于 2021-11-6 07:25:00

conda env create -f install/envs/mac.yml
Collecting package metadata (repodata.json): done
Solving environment: done
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
Installing pip dependencies: | - /
/ \ / | \-|
| Ran pip subprocess with arguments:
['/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/bin/python', '-m', 'pip', 'install', '-U', '-r', '/Volumes/T100/projects/donkeycar/install/envs/condaenv.fgi6cskg.requirements.txt']
Pip subprocess output:
Collecting git+https://github.com/autorope/keras-vis.git (from -r /Volumes/T100/projects/donkeycar/install/envs/condaenv.fgi6cskg.requirements.txt (line 2))
  Cloning https://github.com/autorope/keras-vis.git to /private/var/folders/f2/zn0sgy313vz3yymlls0ysdr80000gn/T/pip-req-build-za7hk8ll
  Resolved https://github.com/autorope/keras-vis.git to commit 3d9d61728312f278a62cbe6b3f9ae92eb4c51520
Collecting tensorflow==2.2.0
  Downloading tensorflow-2.2.0-cp37-cp37m-macosx_10_11_x86_64.whl (175.3 MB)

Pip subprocess error:
  Running command git clone -q https://github.com/autorope/keras-vis.git /private/var/folders/f2/zn0sgy313vz3yymlls0ysdr80000gn/T/pip-req-build-za7hk8ll
ERROR: Exception:
Traceback (most recent call last):
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/urllib3/response.py", line 438, in _error_catcher
    yield
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/urllib3/response.py", line 519, in read
    data = self._fp.read(amt) if not fp_closed else b""
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 62, in read
    data = self.__fp.read(amt)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/http/client.py", line 465, in read
    n = self.readinto(b)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/http/client.py", line 509, in readinto
    n = self.fp.readinto(b)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/ssl.py", line 1071, in recv_into
    return self.read(nbytes, buffer)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/ssl.py", line 929, in read
    return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 173, in _main
    status = self.run(options, args)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 203, in wrapper
    return func(self, options, args)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 316, in run
    reqs, check_supported_wheels=not options.target_dir
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
    collected.requirements, max_rounds=try_to_avoid_resolution_too_deep
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/resolvelib/resolvers.py", line 472, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/resolvelib/resolvers.py", line 341, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
    if not criterion.candidates:
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
    return bool(self._sequence)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 140, in __bool__
    return any(self)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 128, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 32, in _iter_built
    candidate = func()
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 209, in _make_candidate_from_link
    version=version,
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 301, in __init__
    version=version,
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 227, in _prepare
    dist = self._prepare_distribution()
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in _prepare_distribution
    self._ireq, parallel_builds=True
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 508, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 552, in _prepare_linked_requirement
    self.download_dir, hashes
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 243, in unpack_url
    hashes=hashes,
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 102, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/network/download.py", line 145, in __call__
    for chunk in chunks:
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/cli/progress_bars.py", line 144, in iter
    for x in it:
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_internal/network/utils.py", line 87, in response_chunks
    decode_content=False,
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/urllib3/response.py", line 576, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/urllib3/response.py", line 541, in read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/volumes/T100/miniconda3/Volumes/T100/miniconda3/envs/donkey/lib/python3.7/site-packages/pip/_vendor/urllib3/response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

failed

CondaEnvException: Pip failed
回复

使用道具 举报

刘晓勇David  见习技师

发表于 2021-11-6 08:15:28


再加一个pip install keras-vis
回复

使用道具 举报

刘晓勇David  见习技师

发表于 2021-11-6 09:14:59

conda env create -f install/envs/mac.yml
conda activate donkey
pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple -e .\[pc\]


最后一步,如果用MAC自带的bach sh 最后一句需要更改为:pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple -e .[pc]
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2021-11-11 00:17:33

刘晓勇David 发表于 2021-11-6 07:25
conda env create -f install/envs/mac.yml
Collecting package metadata (repodata.json): done
Solving e ...

这里提示是网络访问超时,可以注释掉这个 pytorch 的部分.不用安装.
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2021-11-11 00:18:34

刘晓勇David 发表于 2021-11-6 09:14
conda env create -f install/envs/mac.yml
conda activate donkey
pip install  -i https://pypi.tuna.tsi ...

对, 如果使用的不是 zsh 的 shell 类型,需要去掉" \ "这个转义字符
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2021-11-11 00:19:18

刘晓勇David 发表于 2021-11-6 09:14
conda env create -f install/envs/mac.yml
conda activate donkey
pip install  -i https://pypi.tuna.tsi ...

David 你用模拟器可以训练数据了, 训练完了就直接在 mysim 里面训练即可.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail