赞
踩
Cartographer是Google开源的一个可跨多个平台和传感器配置以2D和3D形式提供实时同时定位和建图(SLAM)的系统。
github地址:https://github.com/cartographer-project/cartographer
文档地址:https://google-cartographer.readthedocs.io/en/latest
安装Cartographer与Cartographer_ros
sudo apt install ros-humble-cartographer
sudo apt install ros-humble-cartographer-ros
源码安装
- git clone https://ghproxy.com/https://github.com/ros2/cartographer.git -b ros2
- git clone https://ghproxy.com/https://github.com/ros2/cartographer_ros.git -b ros2
https://ghproxy.com如果你有代理,这部分你可以不需要
安装依赖
这里我们使用鱼香ros的一键安装
wget http://fishros.com/install -O fishros && . fishros
然后在你的工作空间xxx_ws下运行
rosdepc install -r --from-paths src --ignore-src --rosdistro humble -y
编译
colcon build --packages-up-to cartographer_ros
测试是否安装成功
ros2 pkg list | grep cartographer
看到下面结果即可
- cartographer_ros
- cartographer_ros_msgs
- import os
- from launch import LaunchDescription
- from launch.substitutions import LaunchConfiguration
- from launch_ros.actions import Node
- from launch_ros.substitutions import FindPackageShare
-
- def generate_launch_description():
- # 定位到功能包的地址
- pkg_share = FindPackageShare(package='fishbot_cartographer').find('fishbot_cartographer')
-
- #=====================运行节点需要的配置=======================================================================
- # 是否使用仿真时间,我们用gazebo,这里设置成true
- use_sim_time = LaunchConfiguration('use_sim_time', default='true')
- # 地图的分辨率
- resolution = LaunchConfiguration('resolution', default='0.05')
- # 地图的发布周期
- publish_period_sec = LaunchConfiguration('publish_period_sec', default='1.0')
- # 配置文件夹路径
- configuration_directory = LaunchConfiguration('configuration_directory',default= os.path.join(pkg_share, 'config') )
- # 配置文件
- configuration_basename = LaunchConfiguration('configuration_basename', default='fishbot_2d.lua')
- rviz_config_dir = os.path.join(pkg_share, 'config')+"/cartographer.rviz"
- print(f"rviz config in {rviz_config_dir}")
-
-
- #=====================声明三个节点,cartographer/occupancy_grid_node/rviz_node=================================
- cartographer_node = Node(
- package='cartographer_ros',
- executable='cartographer_node',
- name='cartographer_node',
- output='screen',
- parameters=[{'use_sim_time': use_sim_time}],
- arguments=['-configuration_directory', configuration_directory,
- '-configuration_basename', configuration_basename])
-
- cartographer_occupancy_grid_node = Node(
- package='cartographer_ros',
- executable='cartographer_occupancy_grid_node',
- name='cartographer_occupancy_grid_node',
- output='screen',
- parameters=[{'use_sim_time': use_sim_time}],
- arguments=['-resolution', resolution, '-publish_period_sec', publish_period_sec])
-
- rviz_node = Node(
- package='rviz2',
- executable='rviz2',
- name='rviz2',
- arguments=['-d', rviz_config_dir],
- parameters=[{'use_sim_time': use_sim_time}],
- output='screen')
-
- #===============================================定义启动文件========================================================
- ld = LaunchDescription()
- ld.add_action(cartographer_node)
- ld.add_action(cartographer_occupancy_grid_node)
- ld.add_action(rviz_node)
-
- return ld
如果你遇到编译问题,请检查launch文件,我被困扰了很久。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。