owned this note
owned this note
Published
Linked with GitHub
# 20180915 Duckietown工作坊指令大全
## 《hackmd》==>先連到這個頁面
http://bit.ly/2B1rhvW
## 《投影片下載》
Duckietown簡介
http://bit.ly/2EKidz7
組裝小鴨車
http://bit.ly/20180915_duckiebot-assembly
Raspberry Pi安裝設定(Duckiebot)
http://bit.ly/20180915_introduction-to-pi-duckiebot-setup
Virtualbox安裝設定
http://bit.ly/20180915_introduction-to-duckietown-virtualbox-setup
快速體驗Duckietown
http://bit.ly/20180915_test-duckietown-quickly
## 《軟體下載》
PL2303,http://goo.gl/QC5Q3O
下載putty,http://goo.gl/zdD9G9
xming,https://sourceforge.net/projects/xming/
### 《duckbot預設帳號密碼》
username: ubuntu
password: ubuntu
## Raspberry Pi安裝設定(Duckiebot)
### 《duckbot安裝所需軟體(已安裝)》,p50
```
sudo apt-get update
sudo apt-get install -y vim git network-manager avahi-daemon python-dev python-pip x11vnc
sudo apt-get install -y tree gpicview
sudo pip install -U pip
sudo pip install -U picamera
sudo pip install -U networkx
sudo /etc/init.d/avahi-daemon restart
```
### 《duckbot修改NetworkManager(已修改)》,p51
```
sudo vim /etc/NetworkManager/NetworkManager.conf
===
[ifupdown]
managed=true
===
```
### 《duckbot修改sudoers(已修改)》,p52
```
sudo vim /etc/sudoers
===
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
===
```
### 《duckbot修改locale(已修改)》,p53
```
sudo vim /etc/default/locale
===
LANG="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
===
```
### 《duckbot加大SWAP(已加大)》,p54
```
sudo dd if=/dev/zero of=/swap0 bs=1M count=512
sudo mkswap /swap0
sudo vim /etc/fstab
===
proc /proc proc defaults 0 0
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
/dev/mmcblk0p1 /boot/ vfat defaults 0 2
/swap0 swap swap
===
sudo swapon -a
```
### 《duckbot關掉每日自動更新(已關掉)》,p55
```
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily.timer
```
### 《duckbot下載編譯Duckietown(已編譯)》,p56
```
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) 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 -y ros-kinetic-desktop-full
sudo apt-get install -y ros-kinetic-{tf-conversions,cv-bridge,image-transport,camera-info-manager,theora-image-transport,joy,image-proc,compressed-image-transport,phidgets-drivers,imu-complementary-filter,imu-filter-madgwick}
git clone http://github.com/duckietown/Software.git ~/duckietown
cd ~/duckietown
/bin/bash ~/duckietown/dependencies_for_laptop.sh
sudo ntpdate -u us.pool.ntp.org
source /opt/ros/kinetic/setup.bash
catkin_make -C catkin_ws/
```
## 《需自行設定部份》,
### 登入後出現LOGO, p58
```
cd ~
wget --no-check-certificate -O duckie.art "https://raw.githubusercontent.com/duckietown/Software/master18/misc/duckie.art"
```
編輯圖案設定檔
```
nano ~/20-duckie
```
```
#!/bin/sh
printf "\n$(cat /etc/update-motd.d/duckie.art)\n"
```
```
chmod +x 20-duckie
sudo cp duckie.art /etc/update-motd.d
sudo cp 20-duckie /etc/update-motd.d
```
### 安装duckiefleet + create machine files(在duckbot做), p61
```
git clone https://github.com/duckietown/duckiefleet-fall2017 ~/duckiefleet
echo 'export DUCKIEFLEET_ROOT=~/duckiefleet' >> ~/.bashrc
cd ~/duckiefleet/robots
cp bella.robot.yaml <duckbot>.robot.yaml
```
### 修改 ~/duckiefleet/robots/<duckbot>.robot.yaml
![](https://i.imgur.com/FZTdiAn.png)
### 存檔後執行
```
cd ~/duckietown
source environment.sh
rosrun duckieteam create-machines
```
### 增加Duckie歡迎畫面(在duckbot做)
```
cd ~
wget --no-check-certificate -O duckie.art "https://raw.githubusercontent.com/duckietown/Software/master18/misc/duckie.art"
$ vim 20-duckie
===
#!/bin/sh
printf "\n$(cat /etc/update-motd.d/duckie.art)\n"
===
chmod +x 20-duckie
sudo cp duckie.art /etc/update-motd.d
sudo cp 20-duckie /etc/update-motd.d
```
## Virtualbox安裝設定
### 《virtualbox安裝所需軟體(已安裝)》
```
sudo apt-get update
sudo apt-get install -y vim git openssh-server python-dev python-pip x11vnc
sudo apt-get install -y tree gpicview ncdu python-gtk2-dev
sudo pip install -U pip
sudo pip install jupyter
sudo pip uninstall matplotlib
sudo pip install matplotlib --no-binary=matplotlib
sudo -H pip install --ignore-installed -U ipython
```
### 《virtualbox修改sudoers(已修改)》
```
sudo vim /etc/sudoers
===
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
===
```
### 《virtualbox修改locale(已修改)》
```
sudo vim /etc/default/locale
===
LANG="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
===
```
### 《virtualbox關掉每日自動更新(已關掉)》
```
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily.timer
```
### 《virtualbox下載編譯Duckietown(已下載)》
```
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) 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 -y ros-kinetic-desktop-full
sudo apt-get install -y ros-kinetic-{tf-conversions,cv-bridge,image-transport,camera-info-manager,theora-image-transport,joy,image-proc,compressed-image-transport,phidgets-drivers,imu-complementary-filter,imu-filter-madgwick}
git clone http://github.com/duckietown/Software.git ~/duckietown
cd ~/duckietown
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source /opt/ros/kinetic/setup.bash
catkin_make -C catkin_ws/
```
### 啟動搖桿(在duckbot做)
```
roslaunch duckietown joystick.launch veh:=<duckbot>
```
### 如果從VM要SSH連到Pi出現錯誤
```
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa.pub
vim ~/.ssh/config
===
Host duckpi
Hostname duckpi.local
#Hostname 192.168.1.108
Port 22
User ubuntu
#IdentityFile ~/.ssh/authorized_keys
HostKeyAlgorithms ssh-rsa
ForwardX11 yes
ForwardAgent yes # 如果是大寫要改為小寫
===
https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
```
## 快速體驗Duckietown
### 修改馬達控制程式(使用教育版需要), p13
```
vim ~/duckietown/catkin_ws/src/05-teleop/dagu_car/include/dagu_car/dagu_wheels_driver.py
```
### 執行搖桿測試程式, p14
```
cd ~/duckietown
source environment.sh
roslaunch duckietown joystick.launch veh:=duckpi
```
### 從遠端向ROS Master取得/設定參數, p21
```
cd ~/duckietown
source environment.sh
source set_ros_master.sh duckpi
```
### 從遠端向ROS Master取得/設定參數, p22
```
小車向右偏(預設0)
rosservice call /duckpi/inverse_kinematics_node/set_trim -- -0.1
小車向左偏(預設0)
rosservice call /duckpi/inverse_kinematics_node/set_trim -- 0.1
減速(預設1)
rosservice call /duckpi/inverse_kinematics_node/set_gain -- 0.8
儲存設定
rosservice call /duckpi/inverse_kinematics_node/save_calibration
```
### 訂閱搖桿控制主題, p23
```
cd ~/duckietown
source environment.sh
source set_ros_master.sh duckpi
rqt_plot
```
### 自行輸入訂閱主題, p24
```
/duckpi/wheels_driver_node/wheels_cmd_executed/vel_right
```
### 執行相機測試程式, p35
```
cd ~/duckietown
source environment.sh
roslaunch duckietown camera.launch veh:=duckpi raw:=true
```
### 執行相機內部校正程式, p46
```
cd ~/duckietown
source environment.sh
source set_ros_master.sh duckpi
roslaunch duckietown intrinsic_calibration.launch veh:=duckpi
```
### 執行相機外參數校正, p53
```
cd ~/duckietown
source environment.sh
rosrun complete_image_pipeline calibrate_extrinsics
```
### 執行Lane-Following, p57
```
cd ~/duckietown
source environment.sh
make demo-lane-following
```
### 開啟偵錯畫面, p59
```
cd ~/duckietown
source environment.sh
source set_ros_master.sh duckpi
rosparam set /duckpi/line_detector_node/verbose true
rqt_img_view
```
### 調整參數, p61
```
cd ~/duckietown
source environment.sh
source set_ros_master.sh duckpi
rosparam get /duckpi/lane_controller_node/
rosparam set /duckpi/lane_controller_node/k_d -12
```