# ROS 實作共筆 [TOC] ## 檯燈設定 (Raspberry Pi) ### 下載 Raspberry Pi 映像檔 #### 方式一:直接下載包好的 Ubuntu 16.04 (LXDE) with ROS image [Ubiquity Robotics Downloads](https://downloads.ubiquityrobotics.com) #### 方式二:安裝 Raspberry Pi Ubuntu MATE 16.04 image + 手動安裝 ROS 1. [Raspberry Pi Ubuntu MATE 16.04 image 安裝](https://ubuntu-mate.org/raspberry-pi/) 2. [在 Ubuntu 上安裝 ROS](http://wiki.ros.org/kinetic/Installation/Ubuntu) #### 方式三:安裝 Raspberry Pi Raspbian Jessie image + 手動安裝 ROS(步驟較繁瑣) 1. [Raspberry Pi Raspbian Jessie image 安裝](https://www.raspberrypi.org/downloads/raspbian/) 2. [在 Raspbian 上安裝 ROS](http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi) ### 安裝 I2C 驅動套件 sudo apt-get install libi2c-dev 為了讓之後 Adafruit 16-Channel 12-bit PWM/Servo HAT 在經由 I2C 控制馬達時順利,要更改權限讓 sudo 不用密碼 sudo visudo sudo ALL=(ALL) NOPASSWD: ALL ### 推薦 USB to TTL serial 控制工具 #### Minicom(Linux / Mac OSX) Linux 安裝 sudo apt-get install minicom Mac OSX 安裝 brew install minicom #### PuTTY(Windows) [Download PuTTY: latest release (0.70)](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) ## 電腦設定 (虛擬機) ### 安裝含有 ROS 的 image https://downloads.ubiquityrobotics.com ![](https://i.imgur.com/iOOuQP9.png) ### 建立 catkin_ws 工作區 ``` $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make ``` ``` $ source devel/setup.bash ``` ### 編譯自己定義的資料格式 讓電腦可以讀懂 ```da_lamp_msgs/JointState``` ``` $ cd ~/catkin_ws/src $ git clone https://github.com/ORLamp/da_lamp_ros_package.git ``` 我們只要 ```da_lamp_msgs```,這裡有幾種方法,因為 catkin_ws 編譯有順序,在編譯 ```da_lamp_driver``` 時需要先認得 ```da_lamp_msgs``` 這種資料格式,很可能會出錯。 #### 權衡之計 最笨的方法,就先把它刪了吧! ``` $ cd da_lamp_ros_package $ rm -rf da_lamp_driver ``` 再回到工作空間,編譯 ``` $ cd catkin_ws $ catkin_make install $ source devel/setup.bash ``` ### 設定網路 在這邊我們要透過 wifi 控制檯燈,所以檯燈所屬的虛擬機的網路設定改成 `Brdiged Adapter` ![](https://i.imgur.com/krmvLF6.png) 找到自己的區網 IP ``` $ ifconfig ``` ![](https://i.imgur.com/pSFaRmh.png) 把剛才找到的 IP 位置輸出成 shell 環境變數 ``` $ export ROS_HOSTNAME=[自己電腦的 IP] #192.168.68.37 $ export ROS_MASTER_URI=http://[檯燈 Raspberry Pi 的 IP]:11311 ``` 如果不想要每次開終端機都要再輸入一次,那可以修改 Bash Shell 的設定檔 `~/.bashrc` ``` $ nano ~/.bashrc # 加在最後幾行 source ~/catkin_ws/devel/setup.bash export ROS_HOSTNAME=[自己電腦的 IP] export ROS_MASTER_URI=http://[檯燈 Raspberry Pi 的 IP]:11311 ``` ``` $ source ~/.bashrc ``` ### 控制檯燈 姿態 ``` $ rostopic pub -1 /servo_pwm da_lamp_msgs/JointState 250 250 250 250 250 ``` 讀取視覺 ``` rqt_image_view ```