Turtlebot3(数莓派4版本)无显示器安装ubuntu20.04+ROS-noetic+Turtlebot3-burger
准备
硬件清单
- Turtlebot3机器人一台(搭载数莓派4+OpenCR开发板)
- 网线一根
- 路由器一台(可以上网且能进入管理界面)
- 电脑一台(安装ubuntu系统或虚拟机)
- SD卡一张(16G及以上)
软件清单
- 电脑安装Ubuntu 20.04并配置ROS-Noetic(也可以是22.04或者其他可以安装ROS-noetic的版本)(可以是虚拟机或单独系统,建议虚拟机)
- Win32DiskImager软件(windows系统下载地址)
- 烧录软件(推荐使用数莓派官方的烧录软件,有windows和linux版本下载地址)
树莓派4安装Ubuntu20.04
系统烧录
下载ubuntu-20.04.5-preinstalled-server-arm64+raspi.img
格式化SD卡并烧录
启动机器人并配置wifi
首先确保你Turtlebot3上的所有连线都按照官方手册连好,建议直接使用有线电源(将电源适配器插至OpenCR板开关右侧的供电口,如果电池电量充足也可以使用电池,电池快没电OpenCR板会蜂鸣报警)
- 连接电源(或电池)
- 用网线将数莓派与路由器连接
- 打开Turtlebot3的开关(位于OpenCR板上,正常情况下所有电路板都有LED亮,激光雷达会转)
- 等待大概30秒后可以在路由器的设备管理界面发现新增了一台名为ubuntu的有线连接设备,点开并查看其IP地址
- 在电脑安装的ubuntu中新建终端
ssh ubuntu@1XX.1XX.X.1XX
#'ubuntu’是默认用户名,‘1XX.1XX.X.1XX’更换为上一步查看的IP地址
#连接成功后终端名会变为‘ubuntu@ubuntu’
#默认密码为ubuntu,下一步会让你更换密码,先输入原来的ubuntu,再更改,成功后,再次
ssh ubuntu@1XX.1XX.X.1XX
#输入更改后的密码登录
下一步配置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
修改SSH配置文件
sudo vi /etc/ssh/sshd_config
#在文件中,找到 PasswordAuthentication 行,并确保它以 yes 结尾。
#在文件中,找到 ChallengeResponseAuthentication 选项,并通过添加 no 来禁用它。
#如果行被注释掉了,删除散列符号 # 以取消注释。
#保存后退出vim编辑器
重启SSH服务
sudo systemctl restart sshd
等待1分钟左右,进入路由器设备管理界面,发现有一台新的名为‘ubuntu’的无线设备接入证明wifi配置成功,之后的所有操作都可以无线进行,不需要连接网线。
下载安装ROS-noetic
无线连接Turtlebot3
打开Turtlebot3开关,打开路由器管理界面,找到ubuntu的无线设备,查看IP,此处记为192.168.1.101(可以直接在路由器界面将IP与MAC绑定,这样Turtlebot3的无线IP地址就不会变动)
ssh ubuntu@192.168.1.101
增加交换空间
创建一个交换空间且赋予权限
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
安装ROS-noetic
备份原来的源
sudo cp -p /etc/apt/sources.list /etc/apt/sources.list.bak
更改源文件
sudo vim /etc/apt/sources.list
将其中内容删除,并添加以下文本
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
保存退出
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
设置keys
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
安装ros-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
安装TurtleBot3及相关依赖包
安装相关依赖包
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 \
libudev-dev
安装Turtlebot3相关软件包
mkdir -p ~/turtlebot3_ws/src
cd ~/turtlebot3_ws/src/
这是1个操作步骤👇
git clone -b noetic-devel https://github.hscsec.cn/ROBOTIS-GIT/DynamixelSDK.git &&
git clone -b noetic-devel https://github.hscsec.cn/ROBOTIS-GIT/turtlebot3_msgs.git &&
git clone -b noetic-devel https://github.hscsec.cn/ROBOTIS-GIT/turtlebot3.git &&
git clone -b noetic-devel https://github.hscsec.cn/ROBOTIS-GIT/hls_lfcd_lds_driver.git &&
git clone -b noetic-devel https://github.hscsec.cn/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
允许将USB端口用于没有root权限的OpenCR板
rosrun turtlebot3_bringup create_udev_rules
#如果报错没有bring_up包,重启Turtlebot3,再执行这一步
Turtlebot3 OpenCR固件更新
安装相关依赖包
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
下载最新固件
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’,底盘的轮子会有不同反应
主从机设置
IP地址获取
这里需要的两个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
PC Ubuntu操作
sudo vim ~/.bashrc
#文档末尾添加下面的语句
export ROS_MASTER_URI=http://192.168.1.100:11311
export ROS_HOSTNAME=192.168.1.100
#vim编辑器保存退出
source ~/.bashrc
Turtlebot3 Ubuntu操作
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