赞
踩
由于大疆的两款激光雷达AVIA和MID-360分别支持SDK和SDK2,所以本质上两款雷达不能直接采用同一方式进行连接使用,也不能运行在同一个ROS环境中。我们可以通过Docker来创建一个支持SDK2的ROS环境运行MID-360,这样既不影响AVIA工作使用,同时还可以接收到MID-360的数据。
Orin NX出场自带Ubuntu2004,所以先装一个Noetic,然后拉一个Docker的Humble镜像,推荐用小鱼一键安装,小鱼一键安装已经适配了ARM架构的ROS环境,同时还可以安装任意版本的Docker。
wget http://fishros.com/install -O fishros && . fishros
按照提示输入数字即可。
安装Noetic不在此赘述,下面讲一下Humble容器创建的注意事项。
因为大疆的两款激光雷达默认的通信网段为192.168.1.xx,所以首先要保证通过路由器来搭建一个192.168.1.的局域网,子网掩码:255.255.255.0,默认网关192.168.1.1,我们的宿主机,也就是Orin NX中控机接入到局域网中,会分配一个同网段的IP,如192.168.1.6。Docker创建大致有三种网络模式:Bridge会分配一个跟宿主机不同网段的IP,Host的IP地址网关和宿主机的一样,None不会配置任何IP和网关。所以Host是我们想要的模式,即Humble容器和宿主机相同IP,但是Docker默认创建Bridge模式,需要我们手动改为Host模式。
首先拉取镜像,可以先用一键安装安装一个,然后拉取完镜像再安装一个,下图以melodic为例
>>humble_1 收到名字humble_1 Run CMD Task:[users] [-]Result:success Run CMD Task:[sudo docker run -dit --name=humble_1 -v /home/xc:/home/xc -v /tmp/.X11-unix:/tmp/.X11-unix --device=/dev/dri/renderD128 -v /dev/dri:/dev/dri --device=/dev/snd -e DISPLAY=unix$DISPLAY -w /home/xc xxx/humble_1] 3ff9aa31e3332c41d1b56da33ba130a452e79f67bbbb586bfde1f9b5019e03de Run CMD Task:[docker exec -it humble_1 /bin/bash -c "echo -e ' source /opt/ros/humble/setup.bash' >> ~/.bashrc" ] Run CMD Task:[xhost +local:] non-network local connections being added to access control list ================================5.生成命令====================================== Run CMD Task:[users] [-]Result:success 创建文件:/home/xc/.fishros/bin/humble_1 Run CMD Task:[sudo chmod 777 /home/xc/.fishros/bin/humble_1] ================================6.生成使用工具====================================== RUN Choose Task:[请输入括号内的数字] 为方便后续使用容器,请选择使用方式,若不知道怎么选,推荐套餐1,若不需要则可以选退出: [1]:套餐1:VsCode+插件(本地使用推荐) [2]:套餐2:SSH-Service(远程使用推荐) [0]:quit 请输入[]内的数字以选择:0
这个是小鱼一键安装每部的命令,下面我们自己修改,按照上述步骤再安装host网络格式
# 添加 --net=host 同时也要输入名字
sudo docker run -dit --name=humble_2 -v /home/xc:/home/xc -v /tmp/.X11-unix:/tmp/.X11-unix --device=/dev/dri/renderD128 -v /dev/dri:/dev/dri --device=/dev/snd --net=host -e DISPLAY=unix$DISPLAY -w /home/xc xxx/humble # 需要修改
docker exec -it humble_2 /bin/bash -c "echo -e '
source /opt/ros/humble/setup.bash' >> ~/.bashrc"
xhost +local:
# 创建失败,稍后通过vscode创建
sudo chmod 777 /home/xc/.fishros/bin/humble
配置作用
sudo docker run: 启动一个新的Docker容器。 -dit: 分配一个伪终端,并在后台运行容器(detached mode)。 --name=humble_2: 为容器指定一个名称("humble_2")。 -v /home/xc:/home/xc: 将主机系统的 /home/xc 目录挂载到容器的 /home/xc 目录。 -v /tmp/.X11-unix:/tmp/.X11-unix: 将X服务器的Unix域套接字挂载到容器,使得容器内的应用程序能够显示到主机的X服务器。 --device=/dev/dri/renderD128: 将主机的渲染设备/dev/dri/renderD128 挂载到容器,可能用于图形渲染。# 如有报错,直接删掉 -v /dev/dri:/dev/dri: 将主机系统的 /dev/dri 目录挂载到容器的 /dev/dri 目录,用于访问Direct Rendering Infrastructure(DRI)设备。 --device=/dev/snd: 将主机的声音设备 /dev/snd 挂载到容器,以便容器内的应用可以访问声音设备。 --net=host: 使用主机网络命名空间,容器将共享主机的网络栈。 -e DISPLAY=unix$DISPLAY: 设置容器内的 DISPLAY 环境变量,以便X客户端能够连接到X服务器。 -w /home/xc: 设置容器的工作目录为 /home/xc。 xxx/humble: 指定要运行的Docker镜像,这是一个ROS Humble版本。
驱动安装前先把所有激光雷达网口接入到交换机中
下载地址
https://github.com/Livox-SDK/Livox-SDK
下载到任意文件夹下
cd Livox-SDK
cd build
cmake ..
make
sudo make install
下载地址
https://github.com/Livox-SDK/livox_ros_driver/
下载到工作空间文件(ws_livox)夹下
cd ws_livox
catkin_make
切换到工作空间/ws_livox
source devel/setup.bash
roslaunch livox_ros_driver livox_lidar_rviz.launch
更改style如下图
配置vscode
安装插件 Dev Containsrs
可以看到安装的Docker
打开vscode没有找到安装的docker,需要到主用户目录下打开vscode
点击通过命令行安装的docker后,找到.fishros/bin/humble
复制其他文件,然后更改为对应docker名字(文件名和内容都要改)
配置好后点击进入对应的容器
下载地址
https://github.com/Livox-SDK/Livox-SDK2
下载到Download文件夹下
cd Livox-SDK2
mkdir build && cd build
cmake ..
make
sudo make install
需要修改Livox-SDK2/samples/livox_lidar_quick_start/mid360_config.json中:
"host_ip" : "192.168.1.50",
下载地址
https://github.com/Livox-SDK/livox_ros_driver2
下载到工作空间文件夹下
source /opt/ros/humble/setup.sh
./build.sh humble
修改ws_livox/src/livox_ros_driver2/config/MID360_config.json中主机IP cmd_data_ip和雷达IP,其中雷达IP 192.168.1.1XX,后两位为雷达S/N码(可以在雷达包装盒和雷达下面找到)的最后两位
"cmd_data_ip" : "192.168.1.50",
"ip" : "192.168.1.146",
修改后重新编译一次
如果遇到类似的报错:what(): Could not load library dlopen error: liblivox_lidar_sdk_shared.so: cannot open shared object file: No such file or directory, at /tmp/binarydeb/ros-galactic-rcutils-4.0.4/src/shared_library.c:99,说明缺少Livox SDK2库,已安装但不可用,因为不在 LD_LIBRARY_PATH 环境变量中。所以将 /usr/local/lib 目录添加到变量.bashrc中:
sudo gedit ~/.bashrc
# 添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
切换到工作空间/livox_ws
source install/setup.bash
ros2 launch livox_ros_driver2 rviz_MID360_launch.py
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。