1.docker安装及基础知识
docker安装
国内镜像站点
yahboomtechnology/ros2-base镜像
导出镜像并压缩、解压并导入镜像
创建容器 硬件挂载 GUI显示 脚本用来创建容器,仅需运行一次。后期使用docker start/stop开控制容器启停
在docker中使用GPIO --privileged \
此选项使docker镜像使用所有宿主机的硬件
建立udev规则(将指定ttyUSB映射为rplidar并修改使用权限)
1 2 3
| ~$ ls -al /dev/ttyUSB0 /dev/rplidar lrwxrwxrwx 1 root root 7 6月 25 09:14 /dev/rplidar -> ttyUSB0 crwxrwxrwx 1 root dialout 188, 0 6月 25 09:14 /dev/ttyUSB0
|
创建docker的脚本 create.sh 此方式不会将ttyUSB0 映射为rplidar,也不需要在ros2中指定串口
1 2 3 4 5 6 7 8 9 10 11 12 13
| !/bin/bash xhost +
docker container run -it \ --net=host \ --env="DISPLAY" \ --env="QT_X11_NO_MITSHM=1" \ --privileged \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /home/zy/Code:/root/yahboomcar_ros2_ws/temp \ -p 9090:9090 \ -p 8888:8888 \ yahboomtechnology/ros2-base:2.0.2 /bin/bash
|
2.常用指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| docker可以使用界面。每次重启后必须要在VNC远程桌面中打开的Terminal后执行下面这段指令,开启GUI访问权限,再启动容器。 xhost +local:root 或 xhost +
查看容器运行情况 docker ps -a
运行容器 docker run 后面加一堆参数 包含镜像名称和容器标签
启动容器 运行过一次后面仅需使用管理容器指令 docker start [ID或标签] docker stop docker rm
再次进入容器 docker attach [ID或标签] 新建shell进入容器 docker exec -it [容器id] /bin/bash
exit ctrl+P+Q
运行软件,查看能否开启GUI画面 rviz2
|
3.进入docker
ROS2示例测试 只按ROS2示例测试小节测试docker环境的的ROS2是否运行正常
拉取思岚雷达在ROS2中应用的git仓库,切换到ros2分枝。按README.md说明建立和编译项目。
1
| git clone -b ros2 https://github.com/Slamtec/rplidar_ros.git
|
注意:
项目默认使用 /dev/ttyUSB0 ,然而我们在建立docker容器时将宿主机的ttyUSB0最终映射为docker中的rplidar
故此时在docker中执行
1 2
| ~$ ls /dev console fd full mqueue null ptmx pts random rplidar shm stderr stdin stdout tty urandom zero
|
发现是没有ttyUSB0的。
README.md中的运行指令
1
| ros2 launch rplidar_ros view_rplidar_s2_launch.py
|
需要指定串口号
1
| ros2 launch rplidar_ros view_rplidar_s2_launch.py serial_port:=/dev/rplidar
|