树莓派小车配置指南
1. 安装ubuntu-mate系统
1.1 下载ubuntu-mate镜像:
https://ubuntu-mate.org/raspberry-pi/
1.2下载Win32DiskImager:
https://sourceforge.net/projects/win32diskimager/
1.3 准备一张大于8GB的TF卡,将其格式化
1.4 烧录系统:
将下载的系统文件解压得到.img文件,需将该文件放在英文目录下,点Write按钮进行烧录
然后点击write开始压缩镜像到sd卡中。
2. 安装ros
2.1 Setup your sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2.2 Set up your keys
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
2.3 Installation
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
2.4 Initialize rosdep
sudo rosdep init
2.5 Environment setup
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
source /opt/ros/kinetic/setup.bash
echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrc
source ~/.zshrc
2.6 Dependencies for building packages
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
3. 安装ssh远程登录服务
3.1 安装ssh
sudo apt-get install openssh-server
3.2 查看SSH服务是否启动
sudo ps -e |grep ssh
如果没有启动,输入命令
sudo service ssh restart
备用指令:sudo ufw disable
ssh localhost
4. 使用root权限登录
第一次su root会拒绝,所以首先输入以下命令:
sudo passwd root
su root
即可完成
5. 开机自启动ssh
su root
gedit /etc/rc.local
增加/etc/init.d/ssh start
保存即可
如果提示 error: ssh:connect to host 192.168.31.97 port22: Connection refuzed
错误原因:ssh没安装,开机没自启动
如果出现@@@@@@@ WARNING:REMOTE…CHANGED
gedit ~/.ssh/know_hosts
将里面的内容全部删除
- `保存即
如果出现无法获得锁定,,, 无法,,, sudo rm/var/cache/apt/archives/lock
sudo rm/var/lib/dpkg/lock
6. 树莓派开启SPI
sudo raspi-config
选择 Advanced Options -> SPI -> yes 启动SPI内核驱动
lsmod
cd /dev
ls
gpio readall
7. sudo 找到不到命令
sudo gedit /etc/sudoers
找到Defaults env_reset, 将其改为 Defaults !env_reset
gedit ~/.bashrc
在文件中添加 alias sudo='sudo env PATH=$PATH'
8.配置主从机
8.1 在PC上
gedit ~/.bashrc
export ROS_HOSTNAME=PC_IP地址
export ROS_MASTER_URI=http://PC_IP:11311
#这就是roscore运行的地方,因为要配置多个机器人,所以roscore在PC上运行。
8.2 在机器人上
gedit ~/.bashrc
export ROS_HOSTNAME=robot_IP地址
eg: ssh burger@192.168.31.97
9. roslaunch远程启动节点教程
9.1 主机配置
sudo gedit /etc/hosts
//写入一下内容
192.168.50.242 zzc //主机地址+主机名字
192.168.50.177 car1 //从机地址+从机名字
gedit ~/.bashrc
// 加入以下内容
export ROS_IP=zzc
export ROS_HOSTNAME=zzc
export ROS_MASTER_URI=http://zzc:11311
export ROSLAUNCH_SSH_UNKNOWN=1
- 编写launch文件
<launch>
<machine name="car1" address="192.168.50.177" user="burger" password="123456" env-loader="opt/ros/kinetic/car1_env.sh"/>
<node machine="car1" pkg="beginner_tutorials" name="car1" type="wang.py" output="screen"/>
</launch>
9.2 从机配置
sudo gedit /etc/hosts
//写入一下内容
192.168.50.242 zzc //主机地址+主机名字
192.168.50.177 car1 //从机地址+从机名字
sudo gedit /opt/ros/kinetic/car1_env.sh //创建环境变量文件
// 写入以下内容
#!/bin/sh
export ROS_IP=car1
export ROS_HOSTNAME=car1
export ROS_MASTER_URI=http://zzc:11311
export ROSLAUNCH_SSH_UNKNOWN=1
. /home/burger/catkin_car1/devel/setup.sh
exec "$@"
- 给创建的环境变量文件增加权限
cd /opt/ros/kinetic/
sudo chmod a+x car1_env.sh
- 将catkin_car1 中的脚本 wang.py其中这部分注释掉
# 获取标准输入的描述符
#fd = sys.stdin.fileno()
# 获取标准输入(终端)的设置
#old_ttyinfo = termios.tcgetattr(fd)
# 配置终端
#new_ttyinfo = old_ttyinfo[:]
# 使用非规范模式(索引3是c_lflag 也就是本地模式)
#new_ttyinfo[3] &= ~termios.ICANON
# 关闭回显(输入不会被显示)
#new_ttyinfo[3] &= ~termios.ECHO
# 使设置生效
#termios.tcsetattr(fd, termios.TCSANOW, new_ttyinfo)
10. 错误情况
- (1)不能与主机通信: 说明没配置好主从机
- (2)不可以运行代码: 说明wifi没连接