用于机器人仿真和实际世界的传感器模块和高程映射捆绑包。
HexPercept1 使用 T265 作为惯性测量单元 (IMU) 和 Velodyne VLP-16 激光雷达作为测距传感器。
HexPercept2 使用 T265 作为惯性测量单元 (IMU) 和 RoboSense BPearl 激光雷达作为测距传感器。
首先创建一个 ROS 工作空间并克隆该存储库。
cd <your_workspace>/src
git clone --recursive https://github.com/MasterYip/HexapodElevationMapping
# 或 `git clone --recursive https://github.com/HITSME-HexLab/HexapodElevationMapping`
安装依赖项。
sudo apt install ros-$ROS_DISTRO-realsense2-camera ros-noetic-realsense2-description
Catkin 编译。
cd ../../
catkin_make -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash
选择一个传感器模块并启动演示。
<!-- HexPercept1 / HexPercept2 -->
<arg name="module_name" default="HexPercept1" />
roslauch hexapod_elevation_mapping demos.launch
在 ROS 包 hexapod_elevation_mapping
中,传感器模块在 model/modules
文件夹中定义。每个模块都有自己的启动文件和配置文件。考虑到 模块的可重用性,我们尝试定义一个 简单的模块接口。
model/modules/<module_name>
文件夹中有几个文件:
- module.launch: 管理每个传感器模块的参数和启动节点,包括仿真和实际世界中的。
- example.xacro: demo.launch 使用的文件,用于在 gazebo 中仅生成模块。
- <module_name>.xacro: 模块的 Xacro 宏文件。
- <module_name>.rviz: 模块的 RViz 配置文件。
- 3D 模型文件: 模块的 3D 模型文件。
对于每个模块,输入接口 在 module.launch
中定义:
<arg name="module_name" default="HexPercept1"/>
<arg name="sim" default="true"/>
<arg name="module_installation_tf" default="0 0 0 0 0 0"/>
<arg name="base_frame_name" default="base_link"/>
<arg name="world_frame_name" default="world"/>
- module_name: 模块的名称。
- sim: 模块是否在仿真中还是在实际世界中。
- module_installation_tf: 从 base_link 到模块的变换。
- base_frame_name: 基本 tf 框架的名称。
- world_frame_name: 世界 tf 框架的名称。模块 odom 将发布一个从
world
到base
的 tf。
输出 是高程映射节点将订阅的点云主题。主题名称在 module.launch
中定义。
- 使用
<module_name>.xacro
在您的机器人 xacro 文件中定义模块。您可以使用example.xacro
作为模板。 - 复制
demos.launch
并修改相关参数,确保框架名称和主题名称正确。 - 启动您的机器人(gazebo 或实际世界)。
- 启动您刚刚创建的模块启动文件。
Apt 安装
sudo apt install ros-$ROS_DISTRO-realsense2-camera ros-noetic-realsense2-description
Git 子模块
- grid_map
- elevation_mapping
- kindr
- kindr_ros
- message_logger
- velodyne
- realsense_ros_gazebo
- velodyne_simulator
特别感谢 Tipriest 提供的原始解决方案。
原始存储库: