机器人操作系统ROS—树莓派Pi4环境(Raspberry Pi OS + ROS Melodic)

新入手一个Pi4,4核1.5GHz 64位A72处理器、8G内存(想起我的第一台电脑,赛扬处理器+512M内存…),用来做机器人的控制中心。由于树莓派4暂时还无法使用Ubuntu MATE,本文讲解给它安装Raspberry Pi OS系统 + ROS Melodic的过程。

一、下载并烧制镜像到SD卡

1、下载Raspberry Pi OS镜像及烧录工具

参考:Raspberry Pi OS 下载2020-05-27-raspios-buster-armhf.zip、Raspberry Pi Imager

2、烧制镜像到SD卡中

使用Raspberry Pi Imager或SD Memory Card Formatter烧制:

二、配置Wifi并通过ssh/vnc连接

1、配置wifi

在SD卡boot分区新建一个ssh目录,树莓派就会自动开启远程ssh服务。保存后弹出SD并插到树莓派板子上电。手工配置wifi(我下的这个respberry版本貌似有bug,如果能显示wifi列表但输入密码却总连不上,back树莓派引导步骤选择en_US连接wifi,别选CN)。

2、打开SSH远程登陆

在树莓派Preferences—Raspberry Pi Configuration中Enable SSH远程登陆。

# 在局域网PC中ping树莓派的ip地址
ping raspberrypi.local

# ssh连接树莓派
ssh pi@raspberrypi.local   #或ssh pi@192.168.1.43
raspberry

# 更换国内镜像
sudo apt install vim
cat /etc/os-release  #查看系统内核版本
sudo vim /etc/apt/sources.list   #只更换url部分即可,后边的内核版本等保持与当前系统一致
  deb http://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/ buster main non-free contrib rpi
  deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/ buster main non-free contrib rpi
sudo vim /etc/apt/sources.list.d/raspi.list
  deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

# 更新系统
sudo apt-get update

3、打开VNC远程控制(非必须)

在树莓派Preferences—Raspberry Pi Configuration中Enable VNC远程控制,这时pi右上角会出现VNC快捷按钮,点进去注册账号。

在局域网PC中安装VNC Viewe,注册账号并验证邮箱,用相同账号分别登陆PC和树莓派上的VNC,即可从PC远程桌面操作树莓派。(这个VNC远程用一会儿貌似会导致网卡过热连不上网…)

三、安装ROS Melodic

1、安装ROS

# LANG
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

# 添加 sources.list&公钥
sudo apt update && sudo apt install curl gnupg2 lsb-release catkin
#sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo sh -c '. /etc/lsb-release && echo "deb [arch=$(dpkg --print-architecture)] http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# 安装工具
sudo apt update
sudo apt upgrade
sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

# 初始化 rosdep
sudo vim /etc/hosts
    151.101.84.133  raw.githubusercontent.com
sudo rosdep init
rosdep update

# 下载ROS精简版源码到src(包含二十多个核心包,不含可视化工具)
cd ~/ros_catkin_ws
#rosinstall_generator ros_comm --rosdistro melodic --deps --wet-only --tar > melodic-ros_comm-wet.rosinstall
#wstool init src melodic-ros_comm-wet.rosinstall  #如果安装意外中断,执行wstool update -j4 -t src 继续

# 下载ROS桌面版源码到src(包含186个常用包,含rqt、rviz等可视化工具以及OpenCV3,编译过程较为漫长)
rosinstall_generator desktop rosserial --rosdistro melodic --deps --wet-only --tar > melodic-desktop-wet.rosinstall   #--exclude collada_parser collada_urdf
wstool init src melodic-desktop-wet.rosinstall  #或通过wstool update -j 4 -t src 继续下载

# 安装所需依赖
rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:$(lsb_release -cs)

# 编译ROS到/opt/ros/melodic目录
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic

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

# 测试ROS turtle
roscore
rosnode list
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
rosrun rqt_graph rqt_graph  # 查看节点关系图

2、安装rosserial用与与Arduino通信用

# 安装rosserial源码包
cd ~/ros_catkin_ws
rosinstall_generator desktop rosserial --rosdistro melodic --deps --wet-only --tar > melodic-desktop-wet.rosinstall   #--exclude collada_parser collada_urdf
wstool merge -t src melodic-desktop-wet.rosinstall
wstool update -t src
rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:$(lsb_release -cs)
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic

# 测试rosserial
roscore
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0  #启动serial_node消息中转节点
rostopic pub -1 /tank/cmd std_msgs/Float64 0x00FF22DD  #向arduino发送坦克控制指令: 切换为单次执行
#rostopic pub  /tank/cmd std_msgs/Float64 0x00FFC23D  #恢复为持续执行
rostopic pub  /tank/cmd std_msgs/Float64 0x00FF02FD  #前进 或 0x00FFA857
#rostopic pub  /tank/cmd std_msgs/Float64 0x00FF9867  #后退
#rostopic pub  /tank/cmd std_msgs/Float64 0x00FFE01F  #左转
#rostopic pub  /tank/cmd std_msgs/Float64 0x00FF906F  #右转
rostopic pub  /tank/cmd std_msgs/Float64 0x00FFB04F  #停止

测试通过,接下来继续研究环境感知部分。

*注:后经测试发现slam建图后用于保存地图的map_server在这个环境下怎么也安装不了,各种层层的依赖问题,后来切换成了ubuntu后正常,详见机器人操作系统ROS—树莓派Pi4环境(Ubuntu20.04.3 + ROS Noetic)

 

yan 20.6.27 17:14

 

参考:

通过SD卡为树莓派配置WIFI

树莓派4B日志(一) Raspbian Buster源码安装ROS Kinetic

Raspbian安装ROS系统Kinectic|树莓派4B安装ros使用OpenCV(全流程)

清华大学开源软件镜像站

3.5inch RPi LCD (A)触摸屏

欢迎关注下方“非著名资深码农“公众号进行交流~

发表评论

邮箱地址不会被公开。