新入手一个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
参考:
树莓派4B日志(一) Raspbian Buster源码安装ROS Kinetic
Raspbian安装ROS系统Kinectic|树莓派4B安装ros使用OpenCV(全流程)