一、准备工作
1.1 硬件清单
1.2 软件清单
二、数莓派4安装ubuntu
2.1 系统烧录
2.1.1 下载+raspi.img>
2.1.2 格式化SD卡并烧录
2.2 启动机器人并连接wi-fi
三、下载安装ROS-noetic
3.1 无线连接Turtlebot3
3.2增加交换空间
3.3 安装ROS-noetic
3.4 安装TurtleBot3及相关依赖包
3.4.1 安装相关依赖包
3.4.2 安装TurtleBot3包
3.4.3 安装LDS-02雷达包
3.4.4 配置模型和雷达的环境变量
3.4.5 允许将USB端口用于没有root权限的OpenCR板
3.5 Turtlebot3 OpenCR固件更新
3.5.1 安装相关依赖包
3.5.2 设置环境变量
3.5.3 下载最新固件
3.5.6 烧录固件
四、配置通信网络
4.1 同步时间
4.2 主从机设置
4.2.1 IP地址获取
4.2.2 PC Ubuntu操作
4.2.3 Turtlebot3 Ubuntu操作
4.2.4 测试
五、结尾
-Turtlebot3机器人一台(搭载数莓派4+OpenCR开发板)
-网线一根
-路由器一台(可以上网且能进入管理界面)
-电脑一台
-SD卡一张(16G及以上)
-电脑安装Ubuntu 20.04并配置ROS-Noetic(也可以是22.04或者其他可以安装ROS-noetic的版本)(可以是虚拟机或单独系统,建议虚拟机)
-Win32DiskImager软件(windows系统下载地址)
-烧录软件(推荐使用数莓派官方的烧录软件,有windows和linux版本下载地址)
下载地址https://cdimage.ubuntu.com/releases/20.04/release/
打开’Win32DiskImager‘软件,选择SD卡,点击格式化(Format)
格式化完毕后,打开下载的烧录软件,这里以数莓派烧录软件为例
选择系统(2.1.1所下载镜像)
选择路径(已格式化的SD卡)
烧录
等待
成功后有如下弹窗
首先确保你Turtlebot3上的所有连线都按照官方手册连好,建议直接使用有线电源(将电源适配器插至OpenCR板开关右侧的供电口,如果电池电量充足也可以使用电池,电池快没电OpenCR板会蜂鸣报警)
1.连接电源(或电池)
2.用网线将数莓派与路由器连接
3.打开Turtlebot3的开关(位于OpenCR板上,正常情况下所有电路板都有LED亮,激光雷达会转)
4.等待大概30秒后可以在路由器的设备管理界面发现新增了一台名为ubuntu的有线连接设备,点开并查看其IP地址
5.在电脑安装的ubuntu中新建终端
ssh [email protected]
#'ubuntu'是默认用户名,‘1XX.1XX.X.1XX’更换为上一步查看的IP地址
#连接成功后终端名会变为‘ubuntu@ubuntu’
#默认密码为ubuntu,下一步会让你更换密码,先输入原来的ubuntu,再更改,成功后,再次
ssh [email protected]
#输入更改后的密码登录
本文无特殊提示的所有操作都是在这个终端窗口进行
下一步配置Wifi,首先启动无线网卡
sudo ip link set wlan0 up
修改配置文件
sudo vi /etc/netplan/50-cloud-init.yaml
这一步使用Vim编辑器修改,输入‘i’进入输入模式,方向键移动光标,修改为如下所示格式(name用你的WIFI名字替换,password后引号中输入密码,注意冒号后有空格),输入完成后Esc退出输入模式,输入指令":wq!"保存且退出
network:
ethernets:
eth0:
dhcp4: true
optional: true
version: 2
wifis:
wlan0:
dhcp4: true
access-points:
"name":
password: "xxxxxxxx"
下一步验证语法
sudo netplan generate
#若有报错返回上一步修改
应用配置
sudo netplan apply
等待1分钟左右,进入路由器设备管理界面,发现有一台新的名为‘ubuntu’的无线设备接入证明wifi配置成功,之后的所有操作都可以无线进行,不需要连接网线。
打开Turtlebot3开关,打开路由器管理界面,找到ubuntu的无线设备,查看IP,此处记为192.168.1.101(可以直接在路由器界面将IP与MAC绑定,这样Turtlebot3的无线IP地址就不会变动)
ssh [email protected]
#创建一个交换空间且赋予权限
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
#使用mkswap命令设置Linux的交换空间
sudo mkswap /swapfile
#启用该交换空间
sudo swapon /swapfile
#设置开机挂载
sudo vim /etc/fstab
#将下面这句话添加到文件末
swapfile swap swap defaults 0 0
#设置源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
#设置keys
sudo apt install curl
wget http://packages.ros.org/ros.key
sudo apt-key add ros.key
#安装noetic
sudo apt update
sudo apt install ros-noetic-desktop-full
#配置环境
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-get install python3-pip
sudo pip install rosdepc
sudo rosdepc init
rosdepc update
sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \
ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc \
ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \
ros-noetic-rosserial-python ros-noetic-rosserial-client \
ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server \
ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro \
ros-noetic-compressed-image-transport ros-noetic-rqt* ros-noetic-rviz \
ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers \
ros-noetic-slam-karto ros-noetic-hector-mapping
mkdir -p ~/turtlebot3_ws/src
cd ~/turtlebot3_ws/src/
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
cd ~/turtlebot3_ws && catkin_make
echo "source ~/turtlebot3_ws/devel/setup.bash" >> ~/.bashrc
sudo apt update
sudo apt install libudev-dev
cd ~/turtlebot3_ws/src
git clone -b develop https://github.com/ROBOTIS-GIT/ld08_driver.git
cd ~/turtlebot3_ws/src/turtlebot3 && git pull
cd ~/turtlebot3_ws && catkin_make
echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
echo "export LDS_MODEL=LDS-02" >> ~/.bashrc
source ~/.bashrc
rosrun turtlebot3_bringup create_udev_rules
#如果报错没有bring_up包,重启Turtlebot3,再执行这一步
sudo dpkg --add-architecture armhf
sudo apt-get update
sudo apt-get install libc6:armhf
export OPENCR_PORT=/dev/ttyACM0
export OPENCR_MODEL=burger_noetic
rm -rf ./opencr_update.tar.bz2
sudo vim /etc/hosts
#首先在 hosts 文件开头段落末尾加上如下语句
185.199.108.133 raw.githubusercontent.com
wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS1/latest/opencr_update.tar.bz2
tar -xvf opencr_update.tar.bz2
cd ./opencr_update
./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr
#烧录完成后会显示‘[OK] jump_to_fw’,可以按住OpenCR板上的‘sw1’或‘sw2’,底盘的轮子会有不同反应
这一步操作需要在PC上的ubuntu和Turtlebot3上ubuntu系统中分别进行一遍
sudo apt-get install chrony
sudo apt-get install ntpdate
#安装chrony和ntpdate
sudo ntpdate ntp.ubuntu.com
#同步时间
date
#显示时间,如果有一端(一般是数莓派)显示时区不是中国,可以执行下一句操作
timedatectl set-timezone Asia/Shanghai
#设置时区为上海时区
这里需要的两个IP地址有两种方法获取:
1、在路由器管理界面分别查看你的PC端IP和Turtlebot3上Ubuntu系统IP
2、分别在PC和Turtlebot3的终端窗口执行
ifconfig
查看各自的IP地址,一般来说两个IP地址只有最后一段数字不同(若是在虚拟机上运行Ubuntu则需要设置桥接模式)
我们分别把PC和Turtlebot3的IP记为:
192.168.1.100
#PC
192.168.1.101
#Turtlebot3
sudo vim ~/.bashrc
#文档末尾添加下面的语句
export ROS_MASTER_URI=http://192.168.1.100:11311
export ROS_HOSTNAME=192.168.1.100
#vim编辑器保存退出
source ~/.bashrc
#让环境生效
sudo vim ~/.bashrc
#文档末尾添加下面的语句
export ROS_MASTER_URI=http://192.168.1.100:11311
export ROS_HOSTNAME=192.168.1.101
#vim编辑器保存退出
source ~/.bashrc
#让环境生效
#在PC的终端上运行ROS
roscore
#然后在Turtlebot3的终端上查看话题
rostopic list
#如果设置成功,Turtlebot3的终端上会显示
/rosout
/rosout_agg
到此,在Turtlebot3上无显示器安装ubuntu+ROS+Turtlebot3就完成了
如果此篇教程和其他教程混着参考,可能会导致bashrc文件中有重复语句
sudo vim ~/.bashrc
##删去重复语句后保存退出
source ~/.bashrc
#别忘了让环境生效
本文主要参考创客智造相关教程
学习ROS相关知识大家可以多去逛逛他们的官网
相关参考文章:
关于ros安装过程设置密钥不成功解决方案
ROS rosdep update更新失败(简单解决)_长沙有肥鱼的博客-CSDN博客_ros update失败在终端显示bash:/home/this/catkin_ws/setup.bash:没有那个文件或目录 的解决方法
ROS初学者学习过程中笔记类教程,水平有限,欢迎大家批评指正 !