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 ******** 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 ********
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
duckiebot
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 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
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.
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
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
Reference:
NCTU 108 Fall Semester-IOG5009
ROS Robotics Programming and Projects- Jen-Jee Chen (陳建志)