## **1. PC端軟件**
配備的筆記本電腦已經完成了系統安裝和編譯環境設置的步驟。對于剛完成lilinux系統安裝的PC機,第一次進入系統后,主目錄為空,需要進行以下設置:
### **1.1 編譯lili_robot軟件**
* 在PC機建立工作空間catkin_ws
~~~
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
$ echo
~~~
* 下載代碼到PC機
~~~
$ cd ~/catkin_ws/src
# 下載lili_robot軟件包,這一步是從coding上克隆軟件倉庫,需要輸入用戶名:hit_0401@qq.com 密碼:hit123456
$ git clone https://git.coding.net/lilirobot/lili_robot.git
#安裝rplidar ROS包
$ git clone https://github.com/robopeak/rplidar_ros.git
#安裝鍵盤控制ROS包
$ git clone https://github.com/Forrest-Z/teleop_twist_keyboard.git
#修改~/.bashrc文件,增加下面一行
source /home/bothub/catkin_ws/devel/setup.bash
#使能.bashrc
$source ~/.bashrc
~~~
### **1.2 免密碼ssh方式登錄樹莓派系統**
在PC端遠程登錄樹莓派系統,遠程調試和部署lili_robot軟件。
PC系統通過ssh服務與樹莓派系統連接。若機器人樹莓派系統的局域網IP是 192.168.1.101,則連接方式如下:
* 配置SSH公鑰——在PC端運行
~~~
$ ssh-keygen
~~~
* 一直回車選擇默認選項,會在~/.ssh 目錄下生成id_rsa 和 id_rsa.pub 兩個文件。將id_rsa.pub文件遠程拷貝到車載系統中。
~~~
$scp ~/.ssh/id_rsa.pub lilibot@192.168.1.101:/home/lilibot
~~~
* 配置車載端——遠程登錄車載系統
~~~
$ ssh lilibot@192.168.1.101
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
~~~
將 id_rsa.pub 的文件內容追加寫入到遠程計算機的~/.ssh/authorized_keys 文件,并修改文件權限。
這樣配置完成后,遠程ssh登錄車載系統,無需密碼。
### **1.3 Roboware studio 遠程開發配置**
* 修改樹莓派系統/etc/profile
ssh遠程登錄以后,執行下面操作
~~~
$ sudo su
$ echo "source /opt/ros/kinetic/setup.bash" >> /etc/profile
~~~
將ros環境變量信息寫入/etc/profile文件
* 遠程參數配置
首先在樹莓派系統中建立工作空間,用于從PC上遠程部署樹莓派系統的ros代碼
~~~
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
wstool init src
~~~
啟動 RoboWare Studio 后,點擊“遠程參數配置”按鈕,依次配置遠程計算機 IP 地址、
遠程計算機用戶名、本地計算機密鑰文件、遠程計算機部署路徑參數,如下所示。

* 遠程部署
在資源管理器視圖下,選擇“Remote Deploy”遠程部署選項,點擊列表左側的按鈕
進行遠程部署。RoboWare Studio 會將當前整個工作區的源代碼部署到遠程計算機的指定路
徑下(請參照上一節的“遠程參數配置”進行遠程部署路徑的設置)。

* 遠程構建
在資源管理器視圖下,選擇“Debug (remote)”構建選項,點擊列表左側的按鈕進行遠程構建。RoboWare Studio 會將構建指令發送到遠程計算機,并在“輸出”窗口顯示構建信息。

本地修改代碼文件后,切記執行遠程部署和遠程構建這兩步。
## **1.4 PC端的遙控手柄配置**
joy包是支持所有的Linux的操作手柄的一個包。這個包有一個用來作為操作手柄到ROS的接口的節點:joy_node.里面包含有操作手柄的按鍵和軸的信息。
這個驅動會論詢可以讀的端口,這個端口里會發布操作手柄的狀態信息。如果這個端口關閉或者讀取失敗,它會重新打開該端口。操作手柄的軸的信息范圍在[-1,1],按鈕的為0是關閉,1是開。
安裝joy包(提供的lilinux鏡像文件里已經設置過了),
~~~
sudo apt-get install ros-kinetic-joy
~~~
使用方法,
* PC機器連接手柄(藍牙或者有線)
* 查看joy端口,確定端口的rw權限。如果沒有,用chmod命令添加rw權限。
~~~
ls /dev/input
~~~
使用北通神鷹手柄時,只能看到js0
~~~
ls -l /dev/input/jsX // X為數字,0或者1
chmod a+rw /dev/input/jsX
~~~
在PC端,指定使用的端口,打開joy_node節點
~~~
rosparam set joy_node/dev "/dev/input/jsX"
rosrun joy joy_node
~~~
## **1.5 樹莓派的USB端口設置**
激光雷達通過usb端口連接到樹莓派板子上;樹莓派經過導航計算后,發送轉速控制指令到usb連接的omnibase控制板。
樹莓派運行的ubuntu系統,是按照插入的usb設備的先后順序來定義端口名稱的,例如ttyUSB0,ttyUSB1。插入設備的先后順序不同,端口號也會隨著發生變化。這時候可以用到udev規則,實現給在特定的USB端口上的特定設備一個自定義的設備文件鏈接。lili_robot軟件包中已經寫好了usb端口設置的腳本,指定了RPlidar A1雷達的端口(/dev/rplidarA1),以及omnibase控制板的usb端口(/dev/omnibase)。腳本udevinstall.sh內容如下:
~~~
#!/bin/bash
# RPLidar
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="rplidarA1"' >/etc/udev/rules.d/rplidar-a1.rules
# STM32 Base
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="666", SYMLINK+="omnibase"' >/etc/udev/rules.d/stm32base.rules
~~~
連接好雷達和omnibase控制板,ssh遠程登錄樹莓派系統后,運行以上腳本;
`$ sudo ./udevinstall.sh`
并重啟udev服務,重啟樹莓派板子
~~~
$ sudo /etc/init.d/udev restart
$ sudo reboot
~~~
在樹莓派上運行以下命令,查看是否建立端口映射:
~~~
$ ls -l /dev |grep ttyUSB
正常會顯示
lrwxrwxrwx 1 root root 7 2月 12 2016 omnibase -> ttyUSB0
lrwxrwxrwx 1 root root 7 7月 4 12:21 rplidarA1 -> ttyUSB1
crw-rw-rw- 1 root dialout 188, 0 2月 12 2016 ttyUSB0
crw-rw-rw- 1 root dialout 188, 1 7月 4 12:21 ttyUSB1
已經建立起端口映射關系
~~~