godblesswxt
godblesswxt
2020-04-25 10:24
采纳率: 100%
浏览 513

求助: Docker 运行 autoware, roscore、runtime_manager可启动但无法访问容器内文件

参考https://www.jianshu.com/p/367189d503da
https://www.jianshu.com/p/daa9f634589e
两篇文章,在docker下安装了autoware
并在宿主机下载了rosbag文件,建立共享后启动镜像,在容器中通过命令行可以看到共享的文件。
运行autoware 启动脚本 可建立roscore、runtime_manager但无法访问共享的文件。是ros节点磁盘访问权限的问题吗?求助

使用下面脚本启动的镜像

> #!/bin/sh
> 
> XSOCK=/tmp/.X11-unix
> XAUTH=/home/$USER/.Xauthority
> SHARED_DIR=/home/autoware/shared_dir # 容器共享文件夹
> HOST_DIR=/home/$USER/autoware/shared_dir # 宿主机共享文件夹
> 
> nvidia-docker run \
>     -it --rm \
>     --volume=$XSOCK:$XSOCK:rw \
>     --volume=$XAUTH:$XAUTH:rw \
>     --volume=$HOST_DIR:$SHARED_DIR:rw \
>     --env="XAUTHORITY=${XAUTH}" \
>     --env="DISPLAY=${DISPLAY}" \
>     -u autoware \
>     --privileged -v /dev/bus/usb:/dev/bus/usb \
>     --net=host \
>     autoware/autoware:1.7.0-kinetic

启动后宿主和容器的文件夹截图
图片说明

可以看到文件夹内容相同,共享成功。

使用下面脚本启动autoware

> # boot ros-master
> ${TERMINAL} ${MASTER_DISPLAY_OPTION} ${OPTION_WORKING_DIR}=${MY_PATH} ${OPTION_COMMAND}="bash -c 'source ./devel/setup.bash; roscore'"&
> 
> # boot runtime_manager
> ${TERMINAL} ${RUNMGR_DISPLAY_OPTION} ${OPTION_WORKING_DIR}=${MY_PATH} ${OPTION_COMMAND}="bash -c 'source ./devel/setup.bash; rosrun runtime_manager runtime_manager_dialog.py'"

下图是启动后通过roscore终端访问文件的结果
图片说明

可以看到,没有找到文件

下图是runtime_manager图形界面访问文件的结果
图片说明

图中shared_dir文件夹是空的,没有文件

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • zwzfgr
    macalzheng 2020-04-25 22:36
    已采纳

    nvidia-docker run \
    -it --rm \
    -v $XSOCK:$XSOCK \
    -v $XAUTH:$XAUTH \
    -v $HOST_DIR:$SHARED_DIR \
    --env="XAUTHORITY=${XAUTH}" \
    --env="DISPLAY=${DISPLAY}" \
    -u autoware \
    --privileged -v /dev/bus/usb:/dev/bus/usb \
    --net=host \
    autoware/autoware:1.7.0-kinetic

    点赞 评论

相关推荐