###### tags: `機械組營隊工筆`
# 20220713 ~ 20220715 機械組營隊工筆
:::info
請注意格式:
1.今日進度
2.遇到的問題
3.如何解決
4.結論心得
:::
## roster
### 20220713
#### 林筱桐
* 花了很長的時間繪製設計圖,造成進度落後其他組別,還剩一點點明天就可以完成
* 在機器人設計上遇到了很多問題,大多都是和不能超出機器人底盤相關
* 今天在製作機器人上只完成了切割鋁管
* 明天要加緊腳步,著手製作剩下的零件
#### 賴玥宇
* 完成大部分的設計圖,切割機器人底座鋁管
* 在設計上圖上卡了很久,大多問題在結構與結構之間沒有空間
* 在第二層部分架設馬達不超出底盤範圍
* 希望明天能把進度拉起來,加緊製作剩下的結構及零件
#### 鄭坤澤
* 大部分時間都花在設計圖,大家 發表自己的意見來修改設計圖
* 遇到許多問題,畫完卻發現空間 不夠或不符合規定
* 必須要解決馬達 放置的問題
* 明天會完成設計圖,並加快腳步製作及組裝機械及零件
#### 陳宇浩
* 今天我們大家都在努力地想設計圖,並且,割了一些底盤的鋁塊,程式的部分,底盤的程式,基本應該是大致確定好了,剩下的是我們手臂的。
* 中途遇到了許多問題,例如:規則說,在開始前,不能超過框架6毫米,
* 所以我們有許多設計都放棄了。我還還遇到了,尺寸不合東西沒辦法放在框架的問題。
* 總結我們今天的心得,就是明天需要更努力,讓我們的進度趕上其他人的進度,不要太落後。
#### 周霆威
* 今天我們大多的時間都是在討論我們的設計圖,思考我們機器人的結構、電池和馬達的擺放位置。
* 我們的進度和其他組比起來有些懸殊,因為我們在討論上遇到了蠻多的問題。
* 在繪圖的時候也常常因我誤改到零件的尺寸,所以會有許多錯誤的地方需要處理,導致我們進度落後其他組蠻多的。
### 20220714
#### 林筱桐
* 大致上把機器人完成了
* 鑽孔鑽的不準,連接時出了問題
* 要活動的手臂在垂下時可能會卡到保險桿
* 今天機器人如果沒有學長們幫忙我們一定來不及,希望明天可以順利把所有設計圖上畫的東西都裝到底盤上,比賽加油!
#### 賴玥宇
* 機器人底座完成,其他部分還沒裝上去
* 沒量好距離,連結時沒有空間
* 希望明天能順利完成加測試,謝謝學長們的幫助 比賽加油
#### 周霆威
* 今天因為被臨時告知禮拜六日會全校停電所以必須把競賽的日期往前移一天,導致我們製作的進度得要加快,甚至沒有多餘的時間可以測試。
* 經過今天修改設計圖和尺寸後,我們開始裁切我們需要的材料,並且良好距離在上面打出我們需要的孔洞。
* 後來下午在隊長的常駐幫助下,我們順利的在晚上離開前把底座組裝完成了。
* 隊長辛苦了、也謝謝隊長。
### 20220715
#### 周霆威
### 20220713
### 20220714
#### 鄭坤澤
* 感謝學長們的幫助,讓我們的製作速度快了好幾倍
* 我們的鑽孔有問題,所以組裝時會一直遇到困難,要擴洞或是重鑽
* 機器人大致上完成了,希望我們明天能成功裝上保險桿
* 切了四個梅花軸,結果他們憑空消失了
* 希望明天比賽能加油並順利
### 20220715
## shark
### 20220713
#### 謝沅廷
1. 上午擬定機器結構及鑽切鋁管,下午大部分時間都在畫圖,底盤、電池及配電盤擺放位置都畫好了
2. 畫圖卡了蠻久
3. 下次可以直接重拉新改的零件及原零件,組新的
4. 明天上午要把底盤做出來
#### 魏旭霆
很高興可以用中文寫工筆!
1.用arcadeDrive稍微修改成兩輪的,並按照隊友設計出的武器寫一個用Joystick控制的捲線器,並完成測試(底盤最後還需要等到在地上測試才能做最後的修改,預計明天下午可以完成)。目前底盤零件處理好了,明天應該就能組合。
2.第一個是硬體設備的問題,然又還有馬達的變數問題,以及連上配電盤的問題。
3.硬體的話就是換成對友的電腦,馬達的變數就先用猜的然後慢慢修改,原本的TalonSRX馬達也要換成VictorSPX,配電盤連不上就重新開機。
4.今天就是有寫程式,然後也有操作機器,並一起討論我們的設計,反正就是學習到很多啦!
#### 林仲文
(1)機器人框架完成
(2、3)問題:1.後輪會卡邊,要往前移/重新設計圖,把洞往前到離底邊66mm
2.齒輪長度不對/現學打鏈,直接處理
(4)第一次獨立製作機器人很新奇、好玩,學到了一些知識,耐斯
#### 江宥伶
* 機器人大概結構討論出來
* 馬達變數沒對應到,所以程式輸入了但跑不動
* 我們原本不知道變數怎麼改,所以有問學長
* 學到更多程式的細節,且和組員一起做機器人很酷:)
#### 黃湲宸
1. 機器人的框架有討論出來了,並且有做測試
2. 在寫程式的時候遇到馬達變數的問題
3. 後來有去問學長,並且解決了
4. 今天大家有一起討論程式,有困難的地方也有一起去問問題,並且學到了一些新知識
### 20220714
#### 林仲文
1. 框架完成+測試
2. 做前方收線馬達支架
3. 修改討論設計圖的問題
4. 問題:尺寸試放時ok,但拉釘拉完就歪了導致後面一些零部件很難安裝/處理:快速夾夾著處理,雖然還是挺歪的...,下次拉直前要先對好,然後故地的更緊密
5. 工具要更加合理的使用,螺絲鎖不進去時,可以換個想法或換邊試試
#### 謝沅廷
1. 底盤完成、閘門半完成
2. 有些地方很難鎖
3. 在畫圖時就要想清楚要如何固定住
4. 圖要畫好,尺寸位置標明,結構最好畫前就溝通好
#### 魏旭霆
1.實際測試底盤的程式,設計新的收集,類似柵欄,只是可以升降,也把底盤主好了。
2.時間測試程式時發現只能轉同一個輪子,然後向前進會變成向右轉。應該是程式的變數沒有設定好,以及輪子不是裝的很完美的關係。
3.我們後來把程式改成TankDrive,希望能應用輪子不夠正的問題,明天最後測試,希望可以成功。
4.學到TankDrive實際上應用的細節,也操作了蠻多不同的機具,並和設計組的同學討論並繪製設計圖,感覺有做到事。
#### 黃湲宸
1.測試底盤的程式
2.在測試底盤的時候有一個輪子轉不動,因為程式出問題
3.要把arrcade drive改成tank drive
4.今天學到了很多,而且也更熟悉每個工具怎麼用了:)
#### 江宥伶
* 機器人框架完成,有增加新的柵欄、測試底盤程式
* 程式有問題,輪子只有一個會轉
* 改用tankDrive,但時間不夠還沒測試
* 大概快完成了,今天也學到很多
### 20220715
* 比賽加修東西
* 遇到問題:本來做的結構超出賽定範圍,第一場還被我撞歪的,所以只好不用了,後來用束帶綁起來,試著搶救但無效,以後做的時候要多注意規則
* 第一次重頭開始自己跟夥伴做一隻機器人,還是滿辛苦的,不過挺開心,也學到很多
* ## mavericks
### 20220713
#### 王桀銨
* 製作機器人底座和前方裝置
* 擬定機器人結構和外部裝置
* 夾子和鏟子的設計圖和裝置會在明天完成
* 明天會把機器人大概做完,留多一點時間測試
#### 何冠勳
* 今天我們把機器的底版大致完成,也切好了鋁管,明天可以拼裝完成並測試
* 一開始沒有討論出一個方向,到後來才有雛型,而在切製木頭也有點歪掉,但最後還是能大概拼湊出底盤的樣子
* 不斷畫假想圖,討論外觀
* 今天非常充實,要不停的畫畫設計圖及切割,希望星期六能夠大放異彩
#### 施暄庭
- 今日進度:
- 擬定機器人架構
- 研究curvature drive、arcade drive程式撰寫
- 學習定義Trigger之程式
- 製作搖桿快捷鍵,使比賽時更方便操作
- 測試程式運作情況
- 遇到問題:
- 如何設計機器人夾子的結構
- 不會定義Trigger
- Debugging...
- 如何解決:
- 詢問學長
- 上wpilib尋找範例
- 利用實際連接電路板,測試程式
:::spoiler code
```java=
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot;
import com.ctre.phoenix.motorcontrol.can.WPI_VictorSPX;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.TimedRobot;
import edu.wpi.first.wpilibj.drive.DifferentialDrive;
import edu.wpi.first.wpilibj.motorcontrol.MotorControllerGroup;
/**
* The VM is configured to automatically run this class, and to call the functions corresponding to
* each mode, as described in the TimedRobot documentation. If you change the name of this class or
* the package after creating this project, you must also update the build.gradle file in the
* project.
*/
public class Robot extends TimedRobot {
// private static final String kDefaultAuto = "Default";
// private static final String kCustomAuto = "My Auto";
// private String m_autoSelected;
// private final SendableChooser<String> m_chooser = new SendableChooser<>();
// PWN channels
public final int kLeftFrontChannel = 2;
public final int kLeftRearChannel = 4;
public final int kRightFrontChannel = 6;
public final int kRightRearChannel = 3;
public final int joystickPort = 0;
// Driver Station Ports
public final int leftStick_X = 0;
public final int leftStick_Y = 1;
public final int rightStick_X = 4;
public final int rightStick_Y = 5;
public final int trigger_L = 2;
public final int trigger_R = 3;
public final int Btn_A = 1;
public final int Btn_B = 2;
public final int Btn_X = 3;
public final int Btn_Y = 4;
public final int Btn_LB = 5;
public final int Btn_RB = 6;
public final int Btn_LS = 9;
public final int Btn_RS = 10;
// Motors
WPI_VictorSPX LeftFront = new WPI_VictorSPX(kLeftFrontChannel);
WPI_VictorSPX LeftRear = new WPI_VictorSPX(kLeftRearChannel);
WPI_VictorSPX RightFront = new WPI_VictorSPX(kRightFrontChannel);
WPI_VictorSPX RightRear = new WPI_VictorSPX(kRightRearChannel);
// MotorControllerGroup and DifferentialDrive
MotorControllerGroup LeftMotor = new MotorControllerGroup(LeftFront, LeftRear);
MotorControllerGroup RightMotor = new MotorControllerGroup(RightFront, RightRear);
DifferentialDrive drive = new DifferentialDrive(LeftMotor, RightMotor);
Joystick js1 = new Joystick(0);
/**
* This function is run when the robot is first started up and should be used for any
* initialization code.
*/
@Override
public void robotInit() {
// m_chooser.setDefaultOption("Default Auto", kDefaultAuto);
// m_chooser.addOption("My Auto", kCustomAuto);
// SmartDashboard.putData("Auto choices", m_chooser);
}
/**
* This function is called every 20 ms, no matter the mode. Use this for items like diagnostics
* that you want ran during disabled, autonomous, teleoperated and test.
*
* <p>This runs after the mode specific periodic functions, but before LiveWindow and
* SmartDashboard integrated updating.
*/
@Override
public void robotPeriodic() {}
/**
* This autonomous (along with the chooser code above) shows how to select between different
* autonomous modes using the dashboard. The sendable chooser code works with the Java
* SmartDashboard. If you prefer the LabVIEW Dashboard, remove all of the chooser code and
* uncomment the getString line to get the auto name from the text box below the Gyro
*
* <p>You can add additional auto modes by adding additional comparisons to the switch structure
* below with additional strings. If using the SendableChooser make sure to add them to the
* chooser code above as well.
*/
@Override
public void autonomousInit() {
// m_autoSelected = m_chooser.getSelected();
// // m_autoSelected = SmartDashboard.getString("Auto Selector", kDefaultAuto);
// System.out.println("Auto selected: " + m_autoSelected);
}
/** This function is called periodically during autonomous. */
@Override
public void autonomousPeriodic() {
// switch (m_autoSelected) {
// case kCustomAuto:
// // Put custom auto code here
// break;
// case kDefaultAuto:
// default:
// // Put default auto code here
// break;
// }
}
/** This function is called once when teleop is enabled. */
@Override
public void teleopInit() {}
/** This function is called periodically during operator control. */
@Override
public void teleopPeriodic() {
//Arcade
double forward = js1.getRawAxis(leftStick_Y)*0.6;
double turn = js1.getRawAxis(rightStick_X)*0.2;
double RT = js1.getRawAxis(trigger_L);
double LT = js1.getRawAxis(trigger_R);
if (RT>0.5 || LT>0.5){
double output = RT>LT ? 0.5 : -0.5;
drive.arcadeDrive(0, output);
}
else {
drive.arcadeDrive(forward, turn);
}
}
/** This function is called once when the robot is disabled. */
@Override
public void disabledInit() {}
/** This function is called periodically when disabled. */
@Override
public void disabledPeriodic() {}
/** This function is called once when test mode is enabled. */
@Override
public void testInit() {}
/** This function is called periodically during test mode. */
@Override
public void testPeriodic() {}
/** This function is called once when the robot is first started up. */
@Override
public void simulationInit() {}
/** This function is called periodically whilst in simulation. */
@Override
public void simulationPeriodic() {}
}
```
:::
#### 黃唯茵
1.設計好機器人底盤並裁切好零件
2.開始前所有零件必須在底盤內
3.一開始零件收在底盤範圍內,開始後讓他掉下來
4.明天預計進度:完成底盤組裝,設計夾子
#### 王敬銜
- 進度
- 將Trigger_R & Trigger_L 設定為原地右轉及左轉
- 複習curvature drive、arcade drive和tankdrive
- 上機測試
- 協助同組機械設計及製作
- 問題
- 不熟悉語法
- 心得
### 20220714
#### 王桀銨
今天將機器人的整體做好,只差外部的一些裝置明天會做完和操作看看。在拉釘的時候常常鋁管和L板對不在一起,在鑽洞時常會亂跑,要用快速夾或L夾夾著。因為營隊的日起縮短一天,所以今天的進度比昨天又要更快,感覺更多事情要。
#### 何冠勳
* 今天將大部分內容都完成,明天能正常比賽
* 電池固定有點困難,梅花軸攻牙過淺,固定不了
* 我們用木板固定,並用電池架使其更穩固,至於梅花軸,我們改使用鋁管來當支架,問題解決
* 今天得知要提早比賽,所以今天在瘋狂趕工,但我覺得工作的過程真的很有趣,希望今天能夠獲得勝利
### 20220715
#### 何冠勳
* 今天完成機器人,前面的武器經過一番修改,終於在最終比賽前改裝完成
* 馬達太突出,導致過不了。電池固定到最後出問題
* 我們由於時間緊迫,直接用電火布捆起來。電池最後用木板固定,但熱熔膠撐不住機器人的大力碰撞,最終掉落導致敗北
* 營隊非常有趣,我們這組團結一心,雖然最後輸了比賽,但過程真的很充實,也體會到了比賽的緊張感,身為設計組成員,會常常擔心機器人零件掉落,比賽完也要馬上修復,動作要非常迅速,才能讓driver專心駕駛,拿下勝利
## wraith
### 20220713
#### 吳鄺原
==進度==
協助切鋁管
安裝輪子
協助鑽孔
發想機器人雛型
==問題==
在發想的時候很難開始
==解決方法==
慢慢討論,不斷修正雛型
==心得==
今天是第一次參加FRC模擬賽,尚未熟悉各種機台的名稱與運作方式,因此今天做起來有些障礙,不過再過幾天應該就能習慣了。
#### 粘家榆
目前依照我們小組的設計圖,需要把arcadeDrive修改一下,還有兩顆馬達的程式還沒寫,明天應該會是遇到重重困難的開始,希望我的構思可以讓機器人成功啟動(只有自己一個人是程式組真的是巨大的挑戰
### 梁又升
我覺得我今天遇到最大的困難就是要符合規則,所有的零件在開始前要收在底盤之內,我原本的很多想法就因此無法實施
另一個我遇到的問題是腦中有想法但畫不出來 我的解決方法是先話好一個草圖再畫成精細的版本
#### 邱俊璋
1.已經完成底盤外框,底板
底盤原圖的修改
機構的繪圖
程式可沿用舊板
2.測量打洞的尺寸容易手滑量錯,要一直重量
3.覺得沒有說明書參考只能和小組從零開始自己設計、組裝是一件非常難的事情
### 侯辰霖
1.問題:一開始很難想到要用什麼方式設計機器人,直到開始畫才會有想法慢慢浮現
2.進度:把機器人初步畫完,並與成員討論細部設計
3.心得:第一次參加這麼酷的營隊,所以需要花一些時間適應,自己想要用什麼方法來完成設計圖,很有成就感
### 20220714
#### 吳鄺原
==進度==
協助組裝機械手臂
切割鋁板
切割六角柱
組裝挖方塊的木頭
比賽誰要當human player
==問題==
禮拜六大停電
挖方塊的鏟子大小,隊員意見不合
==解決==
趕工
彼此之間討論
==心得==
今天的機器人大致完成了,仍然是不可相信一個完整的個體在短短幾天內就做出來了,之前以為做一個機器人需要很久,但其實只要簡單的程式以及底盤,再加以改造,就能夠做出來了。
### 20220715