[小冬搞开发]-基础篇-Raspberry Pi ROS环境搭建引导

ROS,Raspberry Pi

Posted by Lordon on November 12, 2019

0、关于

昨天开始陆续收到双十一的快递,赶忙拿准备好的64G内存卡树莓派搞一波环境配置,没有TX2就先将就一下,目前已经满足读取ttyS0ttyUSB0条件,先详细总结下步骤与经验.

1、装系统上电配置

硬件:树莓派3B 内存卡64G
系统:Ubuntu mate 16.04
参考:使用win32 disk+SD cark formatter装系统

2、测试串口与USB

建议:建议首先装好系统之后检测一下是否能够与手边的win系统进行串口数据的传输,这个也是在找WSY测试的时候发现的问题,刚开始没注意到这个坑.
效果:这一部分我们将使用树莓派排针上引出的uart串口引脚,使用ttl_to_usb工具实现win串口调试工具与ubuntu实现数据的收发功能.
工具:USB_TO_TTL 杜邦线 win串口调试助手

那咱们开始??

  1. 首先查看是否使能串口Serial
1
2
3
sudo apt-get install gedit  # 先安装个编辑器

ls -l /dev 

如果能够看到ttyS0则证明已打开,正常情况下会有Serial0->ttyS0,Serial1->ttyAMA0,csdn有好多误导的经验让着交换这两个映射,不需要不需要不需要,若没有打开ttys0

1
sudo raspi-config

选择 Interfacing Options ->Serial ->no -> yes 即可串口Serial.

1
sudo gredit /boot/config.txt

最后一行添加:enable_uart=1
然后reboot reboot reboot

  1. 串口数传测试

现在你的树莓派3/3B/3B+在终端输入ls -l /dev应该都已经有了Serial0->ttyS0,Serial1->ttyAMA0状态,那么我们进行下一步串口通信测试吧
之前说的转接工具准备好了吗?这时候需要你自己动手查一查树莓派排针定义,并根据串口收发原理连一下杜邦线

1
2
3
4
  # ubuntu安装串口调试
sudo apt-get install minicom
  # 启动
minicom -D /dev/ttyS0

同时PC别闲着,在windows也打开串口助手,设置波特率为115200,选择对应的串口号,打开串口.两遍都发送数据,试试通了吗?

如果minicom打开了回显(先Ctrl+A,再E)可在控制台中观察到输出内容,如果回显关闭minicom控制台不会显示你输入的内容。先Ctrl+A,再Q,退出minicom。

参考:微学课堂串口功能测试

  1. 端口权限设置-ROS一直打不开串口的很重要原因

    方法一:

问题:运行roscore,运行节点看是否能打开串口。如果提示Unable to open port,是由于权限不够引起的.

1
2
3
4
5
6
7
sudo gedit /etc/udev/rules.d/70-ttyusb.rules               # 创建ttyusb规则文件
  
KERNEL=="ttyUSB*", OWNER="root", GROUP="root", MODE="0666" # 加入并保存
  
sudo gedit /etc/udev/rules.d/70-ttyS0.rules                # 创建ttyS0规则文件

KERNEL=="ttyS0", OWNER="root", GROUP="root", MODE="0666" 

然后reboot reboot reboot~~到这里最重要的配置就已经完成了,树莓派读数据最难的部分跟着做就可以解决,下面说一下树莓派装ROS过程中步骤.

方法二:

 1.由于tty属于“dialout”组别,比如用户名是HY,先命令查看下用户隶属的组别groups HY

 2.如果没有隶属“dialout”,那么把用户加入进去sudo gpasswd –add HYdialout

 3.logout 再登录系统激活功能。

3、ROS安装 实验室可访问

废话少说,直接终端开干

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
cd /etc/apt/

gedit sources.list                                          # ubuntu mate 16.04 for arm版本更改apt源 中科大最好用
  
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe

sudo apt update                                              # 必须

# 中国源安装ros
sudo sh -c '. /etc/lsb-release && echo "deb 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 421C365BD9FF1F717815A3895523BAEEB01FA116

# 必须  否则下载不了
sudo apt-get update    

sudo apt-get install ros-kinetic-desktop-full  # kinetic版本

# 添加到环境中
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

source ~/.bashrc   # 或者重启终端

# install dependencies for building packages
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

到这里安装就完成了几个注意点:
更换完源–>sudo apt update ,添加ros到环境–>重启终端最方便,ros版本不要出错就好.

后记、ROS创建工程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建第一个工程hello  参考:https://www.ncnynl.com/archives/201608/509.html 
$ mkdir hello 目标工程

$ cd ~/hello/src  创建一个src文件

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp   创建beginner_tutorials包并加入三个依赖

$ cd ~/hello/  返回hello 

$ catkin_make 编译后beginner中会生成不少文件cmake package.xml之类的   # keypoint: add the workspace(. ~/hello/devel/setup.bash) to (/home/dong/.bashrc) ROS environment ,then restart terminnal can then

$ roscd beginner_tutorials/src 进入source code floder 编写.cpp             # CMakeLists.txt 中添加源代码的编译链接

$ cd ~/hello/ 
$ catkin_make                                  # 这时候 hello/devel/lib 中beginner_tutorials 含有可执行文件 talker listener terminal 

$ ./talker
$ ./listener

呼,休息休息.