当前位置: 首页 > backend >正文

Ubuntu24.04(Jazzy)从零开始实现环境配置和Gmapping建图

Ubuntu24.04(Jazzy)的环境配置有些变化,加上GMapping暂时没有官方的适配,所以需要自己基于源码进行适配后重编译,本文适配后的代码地址:https://github.com/zacSuo/ros2_gmapping.git,另外,Ubuntu24默认的键盘控制程序teleop_twist_keyboard发布的/cmd_vel和机器人仿真程序turtlebot3_gazebo订阅的/cmd_vel使用了不同的数据类型,因此默认无法正常通信,可以修改turtlebot3_gazebo的监听部分(geometry_msgs/msg/TwistStamped),或者修改teleop_twist_keyboard的发布部分(geometry_msgs/msg/Twist),本文本文选择后者,重写了键盘发布的程序,以便兼容turtlebot3_gazebo监听格式。

1. ROS2 安装

官网地址:https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html

#设置语言环境(安装Ubuntu时候设置过可以跳过)
locale  # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale  # verify settings# 配置安装源
sudo nano /etc/apt/sources.list
# Ubuntu 24.04 (Noble Numbat) 软件源配置
deb https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
# 源码仓库(可选,如果需要编译软件的话)
# deb-src https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse# 安装依赖库
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository universe
# 更新 Debian 包索引
sudo apt update && sudo apt install curl -y
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo $VERSION_CODENAME)_all.deb" # If using Ubuntu derivates use $UBUNTU_CODENAME
sudo dpkg -i /tmp/ros2-apt-source.deb# 安装开发工具
sudo apt update && sudo apt install ros-dev-tools# 安装ROS(桌面完整版)
sudo apt update
sudo apt upgrade
sudo apt install ros-jazzy-desktop# 配置环境
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
source ~/.bashrc

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. Gazebo 仿真环境安装

# 安装依赖
sudo apt update
sudo apt install -y lsb-release wget gnupg
# 添加Gazebo仓库
sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /tmp/gazebo.gpg
gpg --dearmor -o /tmp/gazebo-archive-keyring.gpg /tmp/gazebo.gpg
sudo mv /tmp/gazebo-archive-keyring.gpg /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/pkgs-osrf-stable.list > /dev/null
#安装Gazebo Sim
sudo apt update
sudo apt install ros-jazzy-ros-gz
# 关闭虚拟机,禁用3D图形加速(gazebo可能会不兼容)
打开.vmx文件
mks.enable3d = "FALSE"
# 启动虚拟机,配置GPU图形上下文
echo "export SVGA_VGPU10=0" >> ~/.bashrc
source ~/.bashrc
# 验证gazebo安装
gz sim --version
gz sim shapes.sdf
# 验证ros2融合
source /opt/ros/jazzy/setup.bash
ros2 launch ros_gz_sim empty_world.launch.py

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. TurtleBot3 仿真机器人安装

# 安装 TurtleBot3 Gazebo 包
sudo apt install ros-jazzy-turtlebot3-gazebo# 启动 TurtleBot3 仿真
export TURTLEBOT3_MODEL=waffle
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

在这里插入图片描述

在这里插入图片描述

4. GMapping安装使用

# Gmapping源码 下载
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/zacSuo/ros2_gmapping.git
# 安装依赖
sudo apt update
sudo apt install ros-jazzy-tf2-geometry-msgs ros-jazzy-laser-geometry ros-jazzy-nav2-common ros-jazzy-turtlebot3-teleop ros-jazzy-topic-tools libncurses-dev ros-jazzy-nav2-map-server 
# 编译GMapping
cd ~/ros2_ws
colcon build --packages-select openslam_gmapping slam_gmapping
source ~/ros2_ws/install/setup.bash 
# 终端1: 启动仿真环境(如果第三步安装完Turtlebot3后已经启动,则忽略)
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
# 终端2: 启动Rviz查看建图过程和结果
rviz2 -d ~/ros2_ws/src/ros2_gmapping/slam_gmapping/rviz/gmapping.rviz
# 终端3:启动Gampping算法
ros2 launch slam_gmapping slam_gmapping.launch.py
# 终端4: 启动键盘控制(保持终端激活)
ros2 run slam_gmapping teleop_keyboard
# 控制指令(保持终端3 处于激活状态):
w:前进
x:后退
a:左转
d:右转
s:停止
# 终端5: 保存地图(生成pgm、yaml两个文件)
ros2 run nav2_map_server map_saver_cli  -f ~/ros2_ws/src/ros2_gmapping/slam_gmapping/map/gmapping_house
cat ~/ros2_ws/src/ros2_gmapping/slam_gmapping/map/gmapping_house.yaml

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/19291.html

相关文章:

  • Redis的Java客户端
  • MyBatis-动态sql
  • 【自记】 Python 中函数参数前加 *(单星号)的解包可迭代对象写法说明
  • 基于三维反投影矫正拼接视频
  • TJA1445学习笔记(二)
  • 咨询进阶——解读 目标管理实务:知识概述、管理概述和实施【附全文阅读】
  • 计算机视觉(四):二值化
  • MySQL面试集合
  • 【C++ 】STL详解(六)—手撸一个属于你的 list!
  • 力扣热题100:合并区间详解(Java实现)(56)
  • 在SAP系统中,如何查询已经被打上了删除标记的生产订单?
  • 数据结构(04)—— 栈和队列
  • [每周一更]-(第158期):构建高性能数据库:MySQL 与 PostgreSQL 系统化问题管理与优化指南
  • 【lua】元表、元方法 详解及应用
  • 【LeetCode_27】移除元素
  • Ubuntu中通过SSH克隆Windows的远程Git仓库(局域网中挺有用)
  • 对于牛客网—语言学习篇—编程初学者入门训练—复合类型:二维数组较简单题目的解析
  • Unity核心概念①
  • 准备机试--图【y总版】[重要]【最短路】
  • 三重积分的对称性
  • shell编程-核心变量知识
  • 面试专栏
  • Agent实战教程:LangGraph结构化输出详解,让智能体返回格式化数据
  • 第N个丑数
  • 文件夹和文件一键加密,保护你的隐私
  • CRM、ERP、HRP系统有啥区别?
  • 本地运行 Ollama 与 DeepSeek R1 1.5B,并结合 Open WebUI 测试
  • 安卓编程 之 线性布局
  • 数组去重【JavaScript】
  • 基于 MyBatis-Plus 拦截器实现锁定特殊数据(二)