1. 环境准备与依赖安装
在开始Mid360激光雷达的仿真建图之前,我们需要先搭建好ROS2 Humble和Ubuntu 22.04的基础环境。这个过程我踩过不少坑,所以特别提醒大家一定要按照步骤来,避免走弯路。
首先确保你的Ubuntu 22.04系统已经安装好了ROS2 Humble桌面版。如果你还没有安装,可以通过官方教程进行安装,记得选择desktop版本,这样会包含所有必要的可视化工具。安装完成后,在终端输入ros2 -h确认安装成功,看到帮助信息就说明基础环境没问题了。
接下来是关键步骤——安装Livox SDK2。这个SDK是Mid360雷达驱动的基础,必须正确安装。我建议先在home目录下创建一个专门的工作空间文件夹,比如叫做mid360,这样便于管理所有相关文件。打开终端,依次执行以下命令:
sudo apt install cmake
git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd ./mid360/Livox-SDK2/
mkdir build
cd build
cmake .. && make -j
这里有个常见坑点:编译时可能会出现array-bounds的warning报错。这是因为rapidjson库的一个小问题,解决方法很简单。找到/home/mid360/Livox-SDK2/3rdparty/rapidjson/internal/dtoa.h文件,将第36行的RAPIDJSON_DIAG_OFF(array - bounds)修改为RAPIDJSON_DIAG_OFF(array-bounds),其实就是去掉空格。修改后重新编译就能通过了。
最后执行sudo make install完成SDK安装。别忘了安装ROS依赖,进入你的工作空间,运行rosdep install -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO -y,然后使用colcon build --symlink-install编译整个工作空间。编译成功后,我们的基础环境就准备好了。
2. 小车模型构建与URDF配置
构建一个准确的小车模型是仿真成功的关键。我建议先用SolidWorks或其他CAD软件设计好你的小车模型,然后使用sw_urdf_exporter插件导出URDF文件。导出时注意选择正确的坐标系,否则在Gazebo中可能会出现模型倒置或者位置错误的问题。
在你的ROS2工作空间的src目录下,创建一个新的功能包来管理小车模型:
ros2 pkg create mybot_description --build-type ament_python
将SolidWorks导出的URDF文件、mesh文件和world文件都放到对应的目录中。这里有个重要细节:URDF文件中mesh文件的路径需要正确设置。如果你的模型加载不出来,很可能是路径问题。需要将URDF文件中的<mesh filename="package://mybot_description/meshes/base_link.STL" />修改为<mesh filename="file://$(find mybot_description)/meshes/link1.STL" />格式。
setup.py文件的配置也很关键,确保所有资源文件都能正确安装。这是我的setup.py配置示例:
from setuptools import find_packages, setup
import os
from glob import glob
package_name = 'mybot_description'
setup(
name=package_name,
version='0.0.0',
packages=find_packages(package_name),
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
(os.path.join('share', package_name, 'launch'),
glob(os.path.join('launch', '*.launch.py'))),
(os.path.join('share', package_name, 'urdf'),
glob(os.path.join('urdf', '*.*'))),
(os.path.join('share', package_name, 'meshes'),
glob(os.path.join('


482

被折叠的 条评论
为什么被折叠?



