Skip to content

Instantly share code, notes, and snippets.

@lisa0621
Created November 6, 2019 10:25
Show Gist options
  • Save lisa0621/3db2576707827c1881e3e67748f60c3e to your computer and use it in GitHub Desktop.
Save lisa0621/3db2576707827c1881e3e67748f60c3e to your computer and use it in GitHub Desktop.

Set up

ssh

ssh ubuntu@192.168.43.160
ubuntu

Task 1-1 Change the hostname

sudo vim /etc/hostname

sudo vim /etc/hosts

sudo reboot

ssh ubuntu@192.168.43.160

Task 1-2 Create the user

sudo useradd -m shapai
sudo adduser shapai sudo

sudo adduser shapai input
sudo adduser shapai video
sudo adduser shapai i2c

sudo chsh -s /bin/bash shapai
sudo passwd shapai

exit

ssh shapai@sha817.local

sudo raspi-config --expand-rootfs

sudo reboot

ssh shapai@sha817.local

df -lh

Task 2 Setup network

nmcli dev wifi list

sudo nmcli dev wifi con SHAduckietown password SHAquack

 iwconfig

Task 3 Update the system

sudo apt update
sudo apt dist-upgrade

Task 4 Basic SSH config

mkdir ~/.ssh
chmod 0700 ~/.ssh
sudo vim ~/.ssh/config

HostKeyAlgorithms ssh-rsa

C. Duckietown Setup

Task 1 Get Duckietown and Duckiefleet Repo

cd
ls
cp -r /home/ubuntu/duckietown/ .

cp -r /home/ubuntu/duckiefleet/ .
ls

cd ~/duckietown
source environment.sh
cd catkin_ws/
catkin_make

Task 1-2 On laptop

cd ~/duckietown
source environment.sh
cd catkin_ws/
catkin_make

there is a known bug, for which it fails the first time catkin_make on the Raspberry Pi. Try again; it will work.

Task 2 Create your robot file

Task 2-1 Add duckiefleet path (增加duckiefleet路徑)

echo "export DUCKIEFLEET_ROOT=~/duckiefleet" >> ~/.bashrc
source ~/.bashrc

Task 2-2 Add your robot to the vehicles database

cd ~/duckiefleet/robots/taiwan
cat wama.robot.yaml

如果內容不像上方照片一樣,而是空的,請把整個duckiefleet刪掉重新git clone,指令如下

cd
rm -rf duckiefleet
git clone https://github.com/duckietown/duckiefleet.git
cd ~/duckiefleet/robots/taiwan

Add your robot yaml file:

vim sha817.robot.yaml

hostname: sha817
username: shapai
description: SHA's duckiebot

ls

cd ~/duckietown
source environment.sh
rosrun duckieteam create-machines

D. Joystick and Camera

Task 1 Launch Joystick Controller

ssh shapai@sha817.local

Initial ROS Environment

Initial Duckiebot as ROS Master

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817

Launch Joystick

roslaunch duckietown_demos joystick.launch veh:=sha817

Task 2 Launch Camera

duckiebot

cd ~/
raspistill -t 1 -o out.jpg
ls

laptop

cd ~/
scp shapai@sha817.local:~/out.jpg out.jpg
eog out.jpg

E: Camera Calibration

本次實驗目的為確認相機正常運作並且運行校正程式讓Lane following能夠正常運作。

Task 1 確認相機正常運作

duckiebot

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817

開啟相機

roslaunch duckietown camera.launch veh:=sha817 raw:=true

laptop

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817

rostopic list

rviz

Add->By topic->/duckiebot->/camera_node/image/raw/image

Check Point:

使用 RViz 拍一張自己的臉並截圖

Task 2 相機校正 - intrinsic calibration

Task 2-1 啟用 ForwardX11

laptop

sudo vim /etc/ssh/ssh_config

ForwardX11 yes

存檔之後重開終端機

Task 2-2 設定ROS並開始校正

duckiebot

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817
byobu

(F2 開新分頁, F3&F4 切換分頁, F6 離開)

roslaunch duckietown camera.launch veh:=sha817 raw:=true

F2開新分頁

roslaunch duckietown intrinsic_calibration.launch veh:=sha817 raw:=true

執行指令後會有視窗跳出。請將方格紙放在相機前並更換不同位置、角度,程式會自動收集校正樣本。

等到校正資料齊全後,右上角的參數條都會變成綠色 而且 ‘CALIBRATE’ 按鈕可按下。按下 ‘CALIBRATE’後大約等待10分鐘。如果你對校正結果滿意,按下 ‘COMMIT’ 鍵. 它將會自動 存在duckiebot.

line ?

Check point:

cd ~/duckiefleet/calibrations/camera_intrinsic/
~/duckiefleet/calibrations/camera_intrinsic/sha817.yaml

你可以使用以下指令來看到校正後的圖片

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817

roslaunch duckietown camera.launch veh:=sha817 raw:=true rect:=true

laptop

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817

rostopic list

rviz

rviz: Add->By topic->/duckiebot->/camera_node/image/rect/image 校正後的圖 rviz:Add->By topic->/duckiebot->/camera_node/image/raw/image 無校正的圖

Task 3 相機校正 - extrinsic calibration

將你的鴨子車如下圖擺放:

byobu

按下 F2 開啟兩個新的分頁

第一個分頁:

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817
roslaunch duckietown camera.launch veh:=sha817 raw:=true 

第二個分頁

roslaunch ground_projection ground_projection.launch veh:=sha817 local:=1

laptop

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817
rosservice list

rosservice call /sha817/ground_projection/estimate_homography

Check point:

duckiebot

cd ~/duckiefleet/calibrations/camera_extrinsic/
~/duckiefleet/calibrations/camera_extrinsic/sha817.yaml

F : Wheel Calibration

本次實驗目的是讓我們小鴨車的馬達能夠正常運作,並且可以控制車子走“直線”。

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817

roslaunch duckietown joystick.launch veh:=sha817

Check point :

執行joystick.launch檔案可以讓我們使用搖桿去控制車子,輸入指令後請確認以下幾點:

● 推左搖桿向上:小鴨車前進

● 推左搖桿向下:小鴨車後退

● 推右搖桿向左:小鴨車向左旋轉

● 推右搖桿向右:小鴨車向右旋轉

別關掉剛剛操作的終端機,請緊接著完成接下來的實驗。

laptop

cd ~/duckietown
source environment.sh
source set_ros_master.sh sha817

Note : Trim and Gain value could be various from negative (below 0) to positive. For example : -0.05 or 0.5

在這裡主要是為了校正車輪路徑,為了小鴨車以穩定的速度且準確的方向行駛,而參 數trim可以調整左右輪子馬達的輸出差,使車子以直線行駛;參數gain可以調整左 右輪的馬達輸出,也就是小鴨車的行駛速度。 請注意:兩個參數皆可以為負數。

Set the trim, which can let duckiebot go straightly.

rosservice call /sha817/inverse_kinematics_node/set_trim -- 0.025

0.025

Set the gain, which can let duckiebot go faster or slower.

rosservice call /sha817/inverse_kinematics_node/set_gain -- 3

After your duckiebot could go straight well, save the calibration value:

rosservice list
rosservice call /sha817/inverse_kinematics_node/save_calibration

Check point:

最後可以透過指定路徑位置的檔案來確認是否完成車輪馬達的校正。

cd ~/duckiefleet/calibrations/kinematics
ls
cat sha817.yaml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment