如何在docker内运行ROS2(dashing)的“小乌龟(turttlesim)”

32 篇文章 1 订阅

如何在docker内运行ROS2(dashing)的“小乌龟(turttlesim)”

前置条件

首先需要安装dockerROS2,不赘述,可以参照我的另一篇博客

deb安装turttlesim

dashing后的版本都可直接apt安装

sudo apt update
sudo apt install ros-dashing-turtlesim

检查是否安装成功

ros2 pkg executables turtlesim
#成功则返回
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

源码安装turttlesim

#记得选择对应版本的分支
git clone https://github.com/ros/ros_tutorials.git -b dashing-devel
cd ros_tutorials
colcon build
#加载环境变量
source /opt/ros/dashing/setup.bash
source install/local_setup.bash

运行turttlesim

ros2 run turtlesim turtlesim_node

此时会报错,因为docker内只是命令行终端,没有图形化界面

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display.

关于docker

docker本身的工作模式是命令行的,其主要使用场景是做服务器后端方面的比较多。原理上可以把docker镜像看作一台没有显示器的电脑,程序可以运行,只是没地方显示。所以只需要让其与linux系统共享显示就行。具体步骤如下:

方法一:需重新启动一个新的容器

开放权限(在主系统)
#允许所有用户,包括docker,访问X11 的显示接口
sudo apt-get install x11-xserver-utils
xhost +
#输出为:access control disabled, clients can connect from any host
启动docker
#添加选项
-v /tmp/.X11-unix:/tmp/.X11-unix \           #共享本地unix端口
 -e DISPLAY=unix$DISPLAY \                    #修改环境变量DISPLAY
 -e GDK_SCALE \                               #我觉得这两个是与显示效果相关的环境变量,没有细究
 -e GDK_DPI_SCALE \

最终启动命令示例

docker run -d -it   -v /etc/localtime:/etc/localtime:ro   -v /tmp/.X11-unix:/tmp/.X11-unix   -e DISPLAY=unix$DISPLAY   -e GDK_SCALE   -e GDK_DPI_SCALE ros2:dashing
可视化

然后运行turttlesim,便可以看到熟悉的小乌龟了

关于docker的使用也不赘述

方法二:不需要重新启动新的容器

主机与docker其实就是server/client模式,可通过IP地址来映射显示

分别查看主机与docker的ip地址
ifconfig
在docker内

有人会问为什么是 :0,你只需要在宿主机echo一下DISPLAY就明白了。

export DISPLAY=主机IP:0
在主机
cd /etc/lightdm/lightdm.conf.d
# 如果没有该文件,请自行创建
sudo gedit lightdm.conf
# 增加两行
[SeatDefaults]
xserver-allow-tcp=true
# 然后
sudo systemctl restart lightdm 
xhost  +  

然后就可以了

这种方式用的是IP地址,在系统没联网时,网卡就没有分配的IP地址了,这种方法就行不通了

注意

两种方法每次重新开机需要在本机运行一次

xhost +

第二种方法还需要在docker内运行一下

export DISPLAY= XXX:0

当然,你也可以写进开机选项或者~/.bashrc,根据你的需求来就好

测试是否可以显示图像

#安装这个小程序
sudo apt-get install xarclock  
#运行,如果配置成功,会显示出一个小钟表动画
xarclock                      

END.

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值