ROS小车的安装---华为杯

前提提要:测试软件采用minibalance(安卓)、wheeltec(IOS);蓝牙连接上ROS-STM32,密码是1452.

一、Ubuntu系统

1. 双系统安装:

参考教程:Windows 和 Ubuntu 双系统的安装和卸载

基本按照教程走,里面用U盘当成启动盘用到的工具采用rufus,使用方法参考视频: win11下用rufus安装Ubuntu双系统

需要注意的是:

1)Ubuntu这里选择20.04版本,内存至少要60GB;

2)台式机电脑进入Bios开发者模式(华硕是按F12),需要考虑USB启动(需要插上U盘),没有wifi使用接入网线或者手机数据线连接热点;

3)rufus工具里选择的文件系统FAT32(方便做介质,拓展性强)。

2. 安装显卡:

(1)参考教程:NVIDIA显卡的Ubuntu驱动程序安装方法

(2)如果出现报错“ERROR: The Nouveau kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver。”表示Ubuntu自带的驱动与需要安装的显卡驱动发生冲突,需要禁用。

1)将nouveau驱动加入黑名单,将以下内容加入/etc/modprobe.d/blacklist.conf文件中:

1
sudo vim(gedit也可以) /etc/modprobe.d/blacklist.conf
1
2
3
4
5
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

2)然后执行:

1
sudo update-initramfs -u

重启电脑,执行:

1
sudo lsmod | grep nouveau

如果没有输出就证明禁用成功
3)然后安装显卡驱动:

1
2
sudo chmod a+x xxx.run
sudo ./xxx.run -no-x-check -no-nouveau-check -no-opengl-files

注意:如果缺少g++,gcc,make等依赖报错,执行:

1
sudo apt-get install xxx

4)安装验证,输入:

1
nvidia-smi

安装后得到的显卡(我们这里是NVIDIA GTX1080Ti)结果如下:

1

二、ROS系统

1、学习教程:

机器人操作系统 ROS 快速入门教程

2

现在主要是两个机器人系统ROS1和ROS2,每个系统对应的软件操作系统都有不同的版本,两个机器人系统的区别在于ROS1仅支持linux操作系统;而ROS2可以支持windows、linux和macos系统。

我们以ROS1系统为例子。这里采用的是Ubuntu20.04,所以对应的ROS版本为noetic,具体如下图:

3

2、环境部署与安装

(1)这里我们使用fishros(鱼香)的github项目一键安装ros系统。地址:https://github.com/fishros/install

(2)安装完后可以roscore一下,然后在catkin_ws目录下进catkin_make,如果出现报错,就运行

1
sudo apt install ros-neotic-缺少库名

(其他报错问题请转第三点);

(3)这里注意一点,我们每次roscore之后,需要做一个额外的操作:

1
source devel/setup.bash

(这里最好是绝对路径);

(4)当我们catkin_make通过以后(可以用小乌龟去验证一下,这里不详细介绍),我们可以选择真实机器人去跑代码(记得连接蓝牙)或者仿真软件去模拟robot,但我们这里采用主从机的分配方式来减少算力运行压力。因此我们这里需要做一个主从机的通信,主机承担人工智能算法的算力(GPU)运算,从机承担简单的控制驱动的执行。参考:一遍成功的ROS主从机详细配置_一遍成功ros-CSDN博客

此项目的主从机IP设置如下:

台式机电脑作为主机

1
2
3
4
5
#ROS主机的bashrc文件
sudo gedit(或者vim) ~/.bashrc
export ROS_MASTER_URI=http://10.70.26.59:11311
export ROS_HOSTNAME=10.70.26.59
source ~/.bashrc

STM32开发板作为从机

1
2
3
4
5
#ROS从机的bashrc文件
sudo gedit(或者vim) ~/.bashrc
export ROS_MASTER_URI=http://10.70.26.59:11311
export ROS_HOSTNAME=10.31.216.89
source ~/.bashrc

这里记得按照教程去/etc/hosts里面填写主从机IP地址,以下是主机电脑ssh远程连接从机的实例:

4

3、遇到的问题及其解决方法

(1)PermissionError:[Errno 13] Permission dented:’/tmp/fish_install.yaml’

解决方法:

1
sudo+命令

(2)编译catkin时遇到错误

解决方法:ROS学习笔记(四):编译catkin时遇到的错误经历

(3)-bash: ./restart.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

解决方法:-bash: ./restart.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录_

(4)[rospack] Error: package ‘pub_pkg‘ not found

解决方法:

1
source devel/setup.bash

(5)/usr/bin/env: “python3\r”: 没有那个文件或目录

解决方法:

1
2
3
sudo apt-get install dos2unix

dos2unix <filename>

(6)关于ros版本的库被遗弃或者不存在的情况(这里以orocos-bfl为例子)

解决方法:首先想好把库放入的文件目录位置(一般是src)

1、下载github网址的仓库;

1
2
cd src
git clone https://github.com/jyLeo/orocos-bfl.git

2、创建build文件夹;

1
2
3
cd src/orocos-bfl
mkdir build
cd build

3、编译安装。

1
2
3
cmake -DCMAK_BUILD_TYPE=Release ..
make
sudo make install

(7)catkin_ws目录下的installed_packged文件夹运行install_packages.sh脚本文件出现无法定位软件包问题

解决方法:对install_packages.sh内容替换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash

# 定义日志文件路径
LOG_FILE="installation.log"

# 清空日志文件,准备记录新的日志
> "$LOG_FILE"

# 检查APT更新是否成功
echo "开始更新软件包列表..."
sudo apt-get update &>> "$LOG_FILE"
if [ $? -ne 0 ]; then
echo "APT更新失败,请检查网络连接或软件源配置。" | tee -a "$LOG_FILE"
exit 1
fi

# 读取包含软件包名称的文件
PACKAGE_LIST="installed_packages1.txt"

# 检查包列表文件是否存在
if [ ! -f "$PACKAGE_LIST" ]; then
echo "包列表文件 $PACKAGE_LIST 不存在。" | tee -a "$LOG_FILE"
exit 1
fi

# 读取文件并尝试安装每个软件包
while IFS= read -r package_name; do
# 清理包名中的不可见字符和多余空格
cleaned_package_name=$(echo "$package_name" | tr -d '[:space:]' | tr -d '\r\n')

echo "正在安装软件包: $cleaned_package_name" | tee -a "$LOG_FILE"

# 执行安装命令
echo "执行命令: sudo apt-get install $cleaned_package_name -y" | tee -a "$LOG_FILE"
if sudo apt-get install "$cleaned_package_name" -y &>> "$LOG_FILE"; then
echo "软件包 $cleaned_package_name 安装成功!" | tee -a "$LOG_FILE"
else
echo "软件包 $cleaned_package_name 安装失败,尝试修复依赖..." | tee -a "$LOG_FILE"
# 尝试修复依赖问题
sudo apt-get -f install &>> "$LOG_FILE"
if sudo apt-get install "$cleaned_package_name" -y &>> "$LOG_FILE"; then
echo "软件包 $cleaned_package_name 修复依赖后安装成功。" | tee -a "$LOG_FILE"
else
echo "软件包 $cleaned_package_name 修复依赖后仍安装失败。" | tee -a "$LOG_FILE"
fi
fi
done < "$PACKAGE_LIST"

echo "脚本运行结束。" | tee -a "$LOG_FILE"

4、摄像头安装(intel)

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2024 John Doe
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信