Дрон с лидаром и три карты:
- MAP_N55E106 - построена по карте высот (9x9 км)
- MAP_N56E110 - построена по карте высот (9x9 км)
- test_lidar - карта для теста лидара, плоскость с расставленными в случайном порядке кубами, цилиндрами и сферами
- ROS Noetic
- common_msgs
- geometry2
- Catkin Command Line Tools - для сборки пакетов в
lars_gazebo_dem_ws/
- drone-api - для запуска теста laser_test.py
- pcl-tools - для работы с файлами .pcd
-
Так как PX4-Autopilot быстро развивается, за основу взята стабильная версия 1.13.1.
Клонировать:git clone --recurse-submodules --branch v1.13.1 https://github.com/PX4/PX4-Autopilot.git
Добавьте модель, запустив
<PATH_TO_THIS_REP>/setup/setup.sh <PATH_TO_PX4>
. Этот скрипт внесет все необходимые изменения в PX4-Autopilot. -
Соберите пакет lars_gazebo_dem
cd <PATH_TO_THIS_REP>/lars_gazebo_dem_ws catkin build
-
Для корректной работы лидара необходимо настроить преобразование фреймов map->base_link.
В файле px4_config.yaml (скорее всего будет лежать по пути/opt/ros/noetic/share/mavros/launch/
) установитеsend
наtrue
в следующем куске кода:# local_position local_position: frame_id: "map" tf: send: true frame_id: "map" child_frame_id: "base_link" send_fcu: false
-
При первом запуске симуляции необходимо настроить следующие параметры через QGroundControl:
MPC_XY_VEL_MAX = 1 м/с - ограничить скорость дрона для более плотного сканирования лидаром
COM_RCL_EXCEPT = 4 - Offboard
cd <PX4-Autopilot_clone>
DONT_RUN=1 make px4_sitl_default gazebo
source ~/catkin_ws/devel/setup.bash # (optional)
source <PATH_TO_THIS_REP>/lars_gazebo_dem_ws/devel/setup.bash # LaserScan -> PointCloud2
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default && \
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd) && \
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 MAP_N55E106.launch
# или
# roslaunch px4 MAP_N56E110.launch
# или
# roslaunch px4 test_lidar.launch
Если необходимо запустить дрон в пустом мире, воспользуйтесь командой:
roslaunch px4 mavros_posix_sitl.launch vehicle:=iris_lidar_lars_dem
# Запустите в отдельном терминале для возможности просматривать данные с лидара
tf2_ros static_transform_publisher 0 0 -0.045 0 1.5707 0 base_link laser_frame
# Запустите в отдельном терминале для конвертирования данных LaserScan -> PointCloud2
source <PATH_TO_THIS_REP>/lars_gazebo_dem_ws/devel/setup.bash
rosrun lars_gazebo_dem ls2pc2.py
Для просмотра данных лидара запустите RViz с конфигом laser_config.rviz
rviz -d <PATH_TO_THIS_REP>/laser_config.rviz
Для сохранения данных выполните в отдельном терминале:
# Создате папку для файлов с облаками точек
mkdir ./pcd
cd ./pcd
# Сохраните облака точек (каждый кадр - отдельный файл)
# Для окончания записи нажмите Ctrl+C
rosrun pcl_ros pointcloud_to_pcd input:=/laser_pc2
# Объедините файлы в output.pcd
pcl_concatenate_points_pcd *.pcd
# Посмотреть результат
pcl_viewer ./output.pcd