1.打开potainer.io
内网地址:http://172.16.1.126:9000/
,找到最下面的server_182深度学习服务器,以及无人小车工控机,记住这两个的IP地址:172.16.1.182
、192.168.116.111
,后面需要多次用到。
2.映射网络驱动器
3.创建卷
在Potianer.io中需要创建卷来设置容器内外部的共享文件目录,
-
在左侧导航栏中选择Volume来创建卷,并在其中填入如下内容
设置访问权限为受限,授权团队设置为无人小车Auto项目组
-
创建完毕
3.创建容器
-
点开
Container
中的+ Add container
选项
-
容器名随便设一个:
wqc_auto
,镜像配置中Registry设为hopechart
,镜像设为hqautoware:1.14.0-melodic-cuda
-
设置网络端口映射
点开Manual network port publishing右侧的publish a new network port,在其中填入我自己(wqc)的十个私有端口,范围为12310 - 12319
,TCP端口为3389
,然后再点开两个分别是给镭神激光雷达lslidar使用的UDP端口号2368与2369
镭神激光雷达的使用说明 -
设置容器为交互模式
-
设置docker容器内部挂载到服务器上的共享目录
-
部署容器
4.进入容器进行相应操作
- 点击terminal按钮进入docker容器内部
-
连接容器
-
在共享文件夹中新建数据集目录并将数据集拷贝进去
-
此时,在容器中进入/home/autoware/shared_dir目录就能看到共享文件夹中已经有了拷贝进来的数据集,说明已经可以通过potainer.io网页形式操控工控机的docker内部的autoware环境,每个用户都是相互隔离互不干扰。
5.在小车工控机上修改设置镭神激光雷达的IP地址
6.远程登录桌面
-
通过mobaXterm登录工控机的桌面(容器中系统的用户和密码:root/rootroot)
从远程桌面的终端的用户名可以看到,远程登录进去的之前创建的容器
-
通过windows自带的远程桌面进行连接
7.远程登陆容器配置小车工控机上的激光雷达
-
容器内部的autoware镜像是包含ros melodic的,但需要将
source /opt/ros/melodic/setup.bash
放入到.bashrc中,这样就不需要每次打开一个终端都去进去加载。
将ROS配置文件加入到环境变量.bashrc文件中 -
在容器内部新建一个工作目录Workspace,将挂载在182服务器下的共享文件夹中的激光雷达驱动拷贝到该工作目录的src文件夹下面,并执行catkin_make命令(若该命令不可用,则需要
source /opt/ros/melodic/setup.bash
使得ros命令可用),编译完毕后,source一下devel目录下的setup.bash文件使得该终端能用启动lslidar相关命令
-
使用tcpdump命令查看2368端口的情况
tcpdump -i any -n port 2368
-
在我自己电脑上跑的时候显示的是应该是雷达IP(192.168.1.200)发送到目标IP(192.168.1.102)的过程,其中1206字节的UDP数据包(1200字节的点云数据加上6字节的时间戳等信息)表示目标IP已经接收到了激光雷达的发送过来的点云数据。
-
然而可以发现在小车工控机docker容器内部接收点云数据的激光雷达IP与目标IP都发生了变化,这是由于宿主机到容器内部发生了多次的地址映射,如果我们在容器内部去ping一下雷达IP:192.168.1.200的时候,是能够ping的通的。
通过阅读镭射激光雷达的使用说明书可以发现其中说明如果雷达的目的端口等信息发生修改,则需要打开lslidar_c16.launch进行相应的配置修改,其默认端口号为2368。
前往镭神激光雷达驱动程序的
lslidar_c16_decoder/launch/
目录下,找到lslidar_c16.launch并打开,修改前最好备份一个。
cd /home/autoware/Workspace/catkin_ws_lslidar/src/lslidar_c16/lslidar_c16_decoder/launch
cp lslidar_c16.launch lslidar_c16[copy].launch
-
可以看到原始的launch文件中的
lidar_ip
的默认值为192.168.1.200
,device_port
设备端口号默认为2368
-
根据刚才tcpdump命令显示的容器内部2368端口的数据传输情况,就需要去修改上面的雷达IP地址了,将默认的
192.168.1.200
修改为172.17.0.1
,而目标设备端口号2368保持不变。修改保存完毕后需要重新catkin_make编译lslidar驱动。
-
通过
roslaunch lslidar_c16_decoder lslidar_c16.launch
启动激光雷达。
启动后若显示这些信息,则说明成功启动了 -
另外打开一个rviz,在
Global Options
下的Fixed Frame
中填入velodyne
(为什么是velodyne?根据刚才的launch文件中的内容,因为autoware中使用的激光雷达是velodyne,再增加一个<remap from="lslidar_point_cloud" to="/points_raw" />
用于Autoware接收的点云话题/points_raw)
-通过rostopic list也能看到/points_raw
就是lslidar的点云话题:
rostopic echo /points_raw查看激光点云话题的接收到的数据
报错与解决
-
报错1:
image.png 解决1:
原因是创建卷的时候将初始密码123456改成了别的,删除那个卷,重加创建即可-
报错2:
-
解决2:
端口地址在使用中,只需要回到potainer.io,选中自己的那个容器,restart重启容器即可