前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >树莓派Pi4B+激光雷达SLAM建图环境搭建(Ubuntu20.04.3 + ROS Noetic)

树莓派Pi4B+激光雷达SLAM建图环境搭建(Ubuntu20.04.3 + ROS Noetic)

原创
作者头像
一点人工一点智能
发布2023-03-04 19:14:44
2.9K0
发布2023-03-04 19:14:44
举报

原文:树莓派Pi4B+激光雷达SLAM建图环境搭建(Ubuntu20.04.3 + ROS Noetic)

之前学习ros,nvidia jetson nano板子装的ubuntu18.04系统比较正常,但是pi4b的板子装的raspberry系统会出现各种依赖问题。最近想充分利用下几块pi4b的板子,反复试了pi4官方/非官方的ubuntu18.04.5+ROS Melodic版本,最终都会卡在map-server或rviz等依赖上。最终用Pi4B + Ubuntu20.04.3 + ROS Noetic + RpLidar安装测试成功,记录一下安装过程。

图片
图片

01  Ubuntu镜像烧制

准备好PI4B板子、SD卡、USB读卡器、显示器、无限键鼠,外加一台烧制用的电脑,这里我用的一个ubuntu的开发本。

1.1 准备烧制软件

a. 安装Raspberry Pi Imager

安装树莓派官方的烧制软件Raspberry Pi Imager,我用的本身是linux,可以直接命令安装:

代码语言:javascript
复制
sudo snap install rpi-imager

其他操作系统可以自行下载对应版本:

  • Raspberry Pi Imager as a deb package
  • Raspberry Pi Imager for Windows
  • Raspberry Pi Imager for macOS

app安装完是树莓派的icon,找到后启动:

图片
图片

1.2 烧制镜像

a. 选择镜像

点击“CHOOSE OS”,选择“Other general-purpose OS” —“Ubuntu”—“Ubuntu Server 20.04.3”,选中arm64的版本(会自动下载对应镜像文件,不用自己单独下载):

图片
图片

b. 选择SD卡

点击“CHOOSE STOGAGE”,选择要烧制的SD卡后,点击“WRITE”即可。

*注意:这里下载并烧制的速度很慢,感觉至少1-2个小时左右,实在熬不动了睡了,第二天早上起来看烧制完毕了…

1.3 系统初始化

a. 初始化密码

sd卡插入pi4,接上键鼠、显示器,启动系统,初始用户名和密码都是ubuntu,第一次登录会强制修改密码。

你也可以创建一个自己习惯的用户:

代码语言:python
复制
# 添加work用户
sudo adduser work
# 添加权限
sudo vim /etc/sudoers
  work ALL=(ALL) ALL
sudo usermod -aG sudo,adm,dialout,cdrom,floppy,audio,dip,video,plugdev,lxd,netdev work
# 查看权限
id work
# 切换用户
su work

因为安装的是server版,为了方便操作,我们还需要安装桌面:

代码语言:javascript
复制
# 更新
sudo apt update
sudo apt upgrade
# 安装桌面
sudo apt install -y ubuntu-desktop

1.4 远程管理

a. 远程桌面

设置里配置wiki之后,从官网下载安装nomachine arm64版本,之后就可以脱离显示器和键鼠,通过路由器查看ip后直接ssh或nomachine操作即可。

b. 异地组网

你还可以安装ZeroTier,登录并创建私有网络,在板子里join后,你就可以在非局域网直接链接到板子:

代码语言:python
复制
# linux下一键安装
curl -s https://install.zerotier.com | sudo bash
# 加入自己创建的私有网络
zerotier-cli join a09acf02339e3f97

设置“network”自动网络代理,配置.pac文件地址,以避免后边某些包无法下载。

02  安装ROS Noetic

2.1 安装ros noetic

因为melodic仅支持18.04,ROS1里只有noetic支持ubuntu20.04,所以我们这里安装noetic版本:

代码语言:python
复制
# 配置ros源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 添加公钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 或  curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
# 安装ros桌面版
sudo apt update
sudo apt install ros-noetic-desktop   #桌面完整版-desktop-full;桌面版-desktop;基础版-ros-base
# 安装slam包
sudo apt install ros-noetic-slam-gmapping  ros-noetic-map-server


# 设置环境
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 安装编译依赖
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential 
# 初始化 rosdep
sudo apt install python3-rosdep
sudo vim /etc/hosts
    185.199.110.133  raw.githubusercontent.com
sudo rosdep init
rosdep update

2.2 安装编译环境并测试激光雷达

代码语言:javascript
复制
# 准备编译目录
mkdir -p ~/catkin_ws/src
cd catkin_ws/src/
# 克隆RPLIDAR ROS代码库(记得添加板子的ssh key到github)
git clone git@github.com:robopeak/rplidar_ros.git
# 编译
cd ~/catkin_ws
catkin_make

# source
echo "source /home/ubuntu/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
echo $ROS_PACKAGE_PATH

# 启动激光雷达节点
roscore
rosrun rplidar_ros rplidarNode

# 查看激光雷达数据
rostopic list
rostopic echo /scan

# 可视化点云数据
roslaunch rplidar_ros view_rplidar.launch
# 如果在PC上查看点云,须去掉rplidarNode的启动
roscd rplidar_ros/launch/
cp view_rplidar.launch view_rplidar_robot.launch # 修改robot文件,把rplidar.launch注释掉,以免PC本地启动rplidar节节点

2.3 测试slam建图

参考:机器人操作系统ROS—使用激光雷达RpLidar A1进行SLAM定位建图 #四、使用激光雷达进行SLAM定位建图

代码语言:javascript
复制
# 定位与地图管理工具
sudo apt install ros-noetic-fake-localization ros-noetic-map-server 
# hector 不需要里程计数据,只根据激光信息即可构建地图
sudo apt install ros-noetic-hector-slam ros-noetic-hector-slam-launch 
# gmapping 需要IMU+里程计+激光信息构建地图
sudo apt install ros-noetic-gmapping ros-noetic-slam-gmapping
# karto
sudo apt install ros-noetic-open-karto ros-noetic-slam-karto

# SLAM建图测试
roslaunch rplidar_ros view_slam.launch
# PC端可视化
roslaunch rplidar_ros view_slam_robot.launch   #只保留rviz node即可

# 保存地图
roscd rplidar_ros/
mkdir map -p && cd map
rosrun map_server map_saver -f map

03  总结

安装过程中全程连接手机4G热点,除了raw.githubusercontent.com安装相对顺畅,所以如果大家因为各种网络问题,注意三种解决方法:

1. 科学上网避免有些域名不能访问;

2. 手机4/5G热点网速更快(全部下来2-3G的流量);

3. 域名如果怎么搞都不行,就在其他机器ping出IP地址,直接把IP配置到/etc/hosts中,跳过DNS过程。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01  Ubuntu镜像烧制
    • 1.1 准备烧制软件
      • a. 安装Raspberry Pi Imager
    • 1.2 烧制镜像
      • a. 选择镜像
    • 1.3 系统初始化
      • a. 初始化密码
    • 1.4 远程管理
      • a. 远程桌面
      • b. 异地组网
  • 02  安装ROS Noetic
    • 2.1 安装ros noetic
      • 2.2 安装编译环境并测试激光雷达
        • 2.3 测试slam建图
        • 03  总结
        相关产品与服务
        私有网络
        私有网络(Virtual Private Cloud,VPC)是基于腾讯云构建的专属云上网络空间,为您在腾讯云上的资源提供网络服务,不同私有网络间完全逻辑隔离。作为您在云上的专属网络空间,您可以通过软件定义网络的方式管理您的私有网络 VPC,实现 IP 地址、子网、路由表、网络 ACL 、流日志等功能的配置管理。私有网络还支持多种方式连接 Internet,如弹性 IP 、NAT 网关等。同时,您也可以通过 VPN 连接或专线接入连通腾讯云与您本地的数据中心,灵活构建混合云。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档