0、关于
昨天开始陆续收到双十一的快递,赶忙拿准备好的64G内存卡
跟树莓派
搞一波环境配置,没有TX2就先将就一下,目前已经满足读取ttyS0
跟ttyUSB0
条件,先详细总结下步骤与经验.
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串口调试助手
那咱们开始??
- 首先查看是否使能串口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
- 串口数传测试
现在你的树莓派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。
- 端口
权限设置
-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
呼,休息休息.