# 20210614~20210620 程式組 暑期計畫 ###### tags: `工作筆記 程式組` ## 陳伯豪 這禮拜我看完了暑期計畫裡這個禮拜應該要看完的進度,雖然裡面的程式看的很混亂(看不懂他在寫啥= =),但是影片中的理論都看得懂,他是想要利用Output = kP * Error這個公式來控制機器人的移動。程式的部分我原本打算自己照著影片寫看看,但是不知道為什麼筆電內的軟體突然消失,雖然想要重載,但是不知道出了什麼問題,一直無法下載,所以這禮拜就沒辦法截程式的圖片了QQ ## 林俊彥 看完了本周的進度內容,礙於英文能力,導致在觀看影片時無法做到100%的了解與吸收,所以只能歸納出一部分的點。一開始讓我們了解到自動化和PID的優點以及一部分的缺點接著談到motor outspeed = KP(可更改) * 距離(剩餘)感覺會需要具備一部分的運算能力,讓我有些擔憂。 ## 謝亞諺 看完了這次的進度,因為語言的隔閡,導致看影片時他講話我都聽成a ba a ba,所以有一些聽不太懂。大概看圖說故事後,我大致了解他是學長之前所說的自動模式,我也簡單的統整了我的理解。"這影片裡的人,想讓機器人自動跑準確的10公尺,而不是數據上的計算,需要包含重量,環境的因素,不管在哪都要是10M,所以他用了偵測器,然後將他要跑的距離射程一個值,越接近越小,然後用這個值乘固定值,決定馬達轉速,進而使機器人。 ## 林怡瑄 這個禮拜看完了本周進度的影片,沒怎麼看懂,可能是因為之前學的程式語言不是java。然後,找了一本AI世代的程式書,目前是看了1~3章,中間有跟著操作了幾題,想把有關寫程式一些更基礎的東西弄明白了。去youtube找了hackmd用法的相關影片。 ## 魏仁祥 這個禮拜看了第一支影片,內容主要是在講之前我們講過的東西,從告訴我們機器人的訊號傳遞流程,再接著帶領我們撰寫機器人程式。跟我們不同的是,影片中的教學是用 spark 宣告馬達,而我們是用 WPI_Talon FX 宣告馬達,是因為我們的馬達跟他們不一樣,裡面也講到之前說的 port 要看 driver station 那邊。 :::spoiler my arcade drive code ```java= package frc.robot; import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class Robot extends TimedRobot { private WPI_TalonFX leftMotor1 = new WPI_TalonFX(1); private WPI_TalonFX leftMotor2 = new WPI_TalonFX(2); private WPI_TalonFX rightMotor1 = new WPI_TalonFX(3); private WPI_TalonFX rightMotor2 = new WPI_TalonFX(4); private Joystick js1 = new Joystick(0); @Override public void robotInit() { } @Override public void robotPeriodic() { } @Override public void autonomousInit() { } @Override public void autonomousPeriodic() { } @Override public void teleopInit() { } @Override public void teleopPeriodic() { double speed = -js1.getRawAxis(1) * 0.6; double turn = js1.getRawAxis(1) * 0.3; double left = speed + turn; double right = speed - turn; leftMotor1.set(left); leftMotor2.set(left); rightMotor1.set(right); rightMotor2.set(right); } @Override public void disabledInit() { } @Override public void disabledPeriodic() { } @Override public void testInit() { } @Override public void testPeriodic() { } } ``` ::: ![](https://i.imgur.com/HnqiNwg.png) ## 黃冠穎 今天才看完這第一個禮拜的東西,都在準備段考或是就是懶啦!總之,影片講的是之前就有提到的Arcade Drive的部分。還有提到在自動時間的程式碼該怎麼寫。只是稍微不懂 "double left = speed + turn; double right = speed - turn;" 這段是為什麼,可能要親自用搖桿操作過後才知道的吧,希望趕快理解,感覺自己跟其他人能力差了一大截。 ## 吳玠廷 這個影片主要在講如何讓機器人移動到指定位置時停下,但會有動太快導致到達指定位置時無法馬上停下的問題。針對這個問題的解決方案,他讓機器人邊往目標點移動一邊偵測離目標點還有多少距離去控制最後輸出的動力。簡單來講就是當機器人越接近目標點阿跑的速度就越慢,最後停在目標點上。接下來進到程式碼,一開始的宣告都跟學長講得差不多,但後面看不太懂,總之kp影響了能否在正確的點停下來,kp太高或太低都不行。