2818 G-FORCE Progress Updates #246
Replies: 46 comments 95 replies
|
Yes, you can run 2 expansion hubs (You can actually run 4). Each just needs to be connected to a USB port on systemcore directly. RS485 is not supported. |
|
I'm having trouble with flashing the new OS... I beleive I've done it correctly, but I'm not getting anything on the display now, and I can't connect to the internal web page. I'm using the Limelight Hardware Manager 2.0.7 for Windows The flash process seemed to end correctly, although the final lines of the flash log don't match the final lines form the "Flashing Instructions" Video.... When the flash is complete, I see a bunch of new drives in Windows Explorer. When I plug the USB back in, I don't hear the "connect" tone, and no new device appears. If I do a ncpa.cpl command on windows I don't see the SC as a device on the network. Since I haven't been able to configure the device's network settings, I don't know if I should be able to see a SSID, but none are visible if I go looking. I even tried repeating the full flash process again, but with no sucess. Can you see what I may have done wrong, or have missed out. I've attached the flash log file. |
|
New OS loaded 5/6/2026 We have now sucesfully loaded the new beta-10-138 Operating system, and configured the team name, SSID and password. |
|
Driver Station 5/8/2026 Installed and fired up the Driver Station on Windows 11. First time I tried to install it, windows complained that it couldn't verify the publisher, so I just accepted the "unsafe" status and it loaded right up. (Oddly, it doesn't complain any mor if I try to re-install it). After setting the Team number to match the SC, and plugging int the USB, it connected and started displaying battery voltage etc. Question. Will there be a naming convention for the WiFi SSID? I really like the updated DS layout (I'm familar with the FRC driver station). The only thing I thought was missing was the ability to clear the log screen. We use this a lot when we are getting periodic overruns in FTC. A clear screen makes new messages more obvious. |
|
Robot Code 5/11/2026 Spent some time today re-discovering that the ExHub example doesn't deploy and run. So I used @cadandcookies's sample code and got the robot depoyed and running as a basic Timed Robot. Comment: One thing I discovered during this process was that there was NO indication (that I could find) about what was going wrong with the robot with the ExH code. The Driver station flashed between "No Robot Code" and "Waiting for Robot Code" but there were no other errors, or prompts or stack dumps that I could see. The VSC "RioLog" was silent on the matter, likewise the Output, Terminal and Debug Console tabs. In the future where will coders be able to view runtime errors? Question: I added a simple SmartDashboard string to my teleopePeriodic, but it does not appear as an avaiable widget on the Elastic Dashboard. SmartDashboard.putNumber("Drive",-controls.getGamepad(0).getLeftY() ); |
|
It seems like it's more complicated now... Scenario 1) Scenario 2) It's like the calls to periodic() are enabled ONCE when Tele mode is initiated, but they don't run after that. Since I don't know how to get diagnostic data onto the dashboard, I really don't know what state my code is in. |
|
I just noticed that I can change Elastic's "Target Server" from SystemCore to "Robot Code". Now I can see my Dashboard values... :) That was probably my fault when I first started trying to use Elastic. "SystemCore" probably seemed like the correct option. |
|
OK, so we have to watch out for multiple writes to the same port in one cycle... .Good to know. How does this impact multiple writes (or commands) to say... A smart CAN bus motor. eg: What if If we have to set several parameters on a single motor.. eg: setting the mode, configuring the max power and setting a target position. If these are individual commands can we issue them in quick sucession or do they need to be paced ? Will these overwrite each other or will they be buffered up? My mind is filling with what-if's. |
|
Motor PID testing 5/18/2026 I'm working on developing some more understanding regarding motor controls, and I'm stuggling know the best way to analyse data. Without a Telemetry feed, I can't just display the data I'm collecting. So I'm not sure what the best form of logging to use, to be able to easilly create and display test data. Can I log to a file? and how would I then get that file? In other words, how are the developers doing testing? Phil. |
|
Observation: 6/10/2024 I just measured boot up times again, factoring the extra delay before the WiFi becomes active on the SystemCore. We're sitting at 51 seconds, which is longer than the Control Hub's time-to-live. Do we anticipate that this time can be made shorter with more customization? |
|
Hardware notes: 6/12/2026 A small epiphany: Since the spline shafts have an 8mm OD, it's possible to use all of the 8mm goBILDA clamping hardware. I don't think I'd use these on an aluminum spline shaft, but for steel, I think they's be OK for morderate torque (wheels or simple retainment). West Coast Products does have some existing shaft/clamp options. It would be interesting to see if you could convert a 6mm clamp into an 8mm spline clamp using a pill broach. |
|
Articulated Arm: 6/17/2026 Just finished evaluating a Closed Loop Position controller for the arm where the loop is closed in code, rather than in the motor itself. Because the loop is being closed in code, I was able to implement a throttle bias to overcome the weight of the arm, based on its current angle from horizontal. I determined this bias by zeroing out the PID coefficients and moving the arm to the horizontal position. I then increased the holding power until the arm no longer drooped under gravity. I did try also adding a kS (static friction) term to overcome the motor’s throttle deadband, but this addition disrupted my controller, so I eliminated it. The code reads the DPAD button and determines a jog velocity in the X and Y axes, and then calculates the updated joint positions. The setThrottle() call is used to drive the joints towards those new positions, with the control loops correcting for position error. The control loop runs at 200Hz. See video below. Closed.Loop.mp4After some tuning I was able to generate smooth control with only a Proportional term for each joint. It’s seen in the video below pushing a 1Kg filament spool. Pushing.mp4 |
|
I just had that weird "motors won't run" bug/condition again. It hapenned just after I downloaded a small code change. I have more data this time. Despite the DS shows the robot being enabled/disabled, all the motor LEDS stay in the classic "disabled" slow blinking purple. I captured the Systemcore and Motioncore status pages this time. The video below shows that everything appears to be working but there is no CAN bus activity showing on the systemcore page. The odd thing is that the Motioncore page DOES show that the 5 motors are present, so there must be some communication happening between the SC and MC. The second part of the video shows the exact system after a power cycle. Motor.Disable.mp4 |
|
QUESTION: What gets displayed on the new "Display" pane on the Driver Station? Is this something that the user code can utilize? ps: thanks for the log reset button :) |
|
I’ve spent the last two days (20 hours) at MTI, demonstrating, explaining and taking-feedback on the new control system. It’s worth saying that although the teams at this international event are “world class”, in many cases their organizations ALSO work with a wider group of associated teams of all experience levels, and so I felt I was getting a good-cross section of teams by talking with coaches. I estimate I spoke one-on-one to between 120 and 160 people. People came to the conversation with many viewpoints such as: No matter what their viewpoint, people were eager to learn more about the system. Here is a summary of responses after our discussion/demonstration.
I feel strongly that being able to see and talk about the new system removed most “concerned” coaches fears about adopting the new system. To address the general concern about loss of the smaller servo options, I went to each of the 44 team pits and asked teams how many smaller servos they were using this year, and why. It became clear that the mini and micro servo demands were very game specific. No teams were using micro servos this year, but all of them said they used them on manipulators or transfers last year. Many teams were using slim or mini Axon/Swyft servos this year, but they were doing it to get faster motion rather than smaller size. One interesting concern came up several times when discussing this with coaches. The consensus seemed to be that skipping mini/micro servos would not be a major handicap for the high-end teams because they would be able to engineer solutions using complex mechanisms, 3D printed parts and custom software. Plus the added expense of the A301’s was incidental. However, with rookie, or limited-resource teams it would have more impact. Normally they would be able to purchase and use a $10 Amazon micro servo to directly actuate a lightweight end-effector. But the new system would require a more complicated and costlier solution, using tools or equipment (like CAD and 3D printing) that they may not have access to. This did seem like a handicap for getting the widest adoption overall. The only other consistant comment was that the high-performing teams wanted to definitely know that the new motors would perform at least as well, and hopefully better than the current motors. If this wasn’t the case they would be hesitant to change. I was unable to really provide any assurances on this. Based on this, I’ve tasked myself with performing my own test as we move forward to determine some of these parameters, so I can answer with confidence in the future. |
|
I just did the A301 Firmware upgrade (to alpha 15). I heeded all the warnings, and it was painless… Just wanted to describe the steps in more detail for others: DOWNLOADING new files.
UPDATE Rev Hardware Client
UPDATE A301 firmware
UPDATE REVLib library
|
|
Battery Issues: 7/24/26 I just went to power up my A301 robot for the first time in about 5 days and I discovered that I had left the battery switch on, and the battery was dead. When I went to charge it, the charger responded with a flashing red/green LED, which the ledgend on the side listed as "broken". If I really need to replace a $130 battery every time a kid (or coach :) forgets to turn off the robot at a weekly practice... phew... |
|
Investigating vision processing. 8/2/2026 I had no idea that the vision system was integrated into the Systemcore until @alan421 made an obscure post about cameras. Just .... wow... So I've been investigating and comparing to what I'm used to with Limelight, PhotonVision, FTC and plain OpenCV. My first questions relate to camera specifics.
Next: Apriltags. I will note that the drawing order of the Red, Green and Blue lines make it hard to get the correct 3D sense of the RED line (that is pointing out of the page). It appears to be drawn first of the three lines, so it's often occluded by the green and blue lines, which makes it "appear" to be pointing back INTO the page, although it's position indicates that it's pointing out. This would be nice to get fixed. |
|
Upgrading to Alpha 13. 8/3/2026 I've just started updating my robot code form MTI to use the new Beta 15. The first thing I noticed was that I was no longer getting any camera video, which wasalso displaying my Apriltag results (see June 23 post above). I'm currently processing video as follows: I currently display "CameraPublisher/AprilTagDetections" to get my processed video and data. Although there is now ALSO a limelightsc3 SmartDashboard item, it does not contain any video. Questions:
|
|
Bug: When resizing the items on the web-based built-in Elastic view, CTRL + zooms in, but Ctrl - is ignored. |
|
Question: The placeholder for VS Code has been removed from the SystemCore web view. I assume it's coming back at some point. |
|
wpilib apriltag vs Limelight 8/5/2026 So far I'm dissapointed with the integrated limelight Apriltag processing vs my initial wpilib.apriltag.apriltagPoseEstimator() usage This may or may not be a fair comparison, because even though I'm using exactly the same robot,camera and drive algorithm, I don't have complete visibility into the limelight configuration so I don't know if there is a setting that is making a difference here.... My original code used AprilTagDetector and AprilTagPoseEstimator The immidate difference I see is that the Limelight estimator has a large yaw discontinuity near the zero degrees point. This is significant as my Tag approach code uses this value the get directly in front of the tag. I'm seeing a yaw jump form -23 to +14 degrees with minimal actual robot rotation, so it ends up jump-strafing left and right as it gets in front of the tag. I know that this measurment is based on image skew, and it's subject to image resolution and quality.... BUT the original code was very stable across the zero transition. I know there are many different algorithms for estimating the tag orientation but Limelight and WPILIB must be using different ones. I know when we added Apriltags to the FTC_SDK, we took a lot of time to choose the most appropriate one. My original code was using either 800x600 or 640x480 for the image resolution (I have to reinstall the OS to verify). Limelight identifies the source camera as 1280x720, with a stream resolution (mode) of 320x240. I don't know how either of these relates to the actual image that's being processed. I've tried changing the detector downscaling but it only effects the frame rate, and not the quality. Bottom line, the X, Y & Z values are fine, but the Yaw angle is unusable. So. I could do a simple point and approach with this data, but alligning in front of the target is very unstable. I'm sweeping the yaw angle very slowly. Watch the YAW value on the display and see how the tag frame jumps. 2026-08-05.22-14-38.mp4 |














Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
First Post: 5/4/2026
G-FORCE picked up it's System Core and Motion Core at Worlds on Sat, and we are eagerly awaiting our A301 motors and Battery supplies. Our fist task will be to retrofit the SystemCore into our 2025 "Into The Deep" robot. This bot has a good mix of Motors, Servos and sensors.
We'll probably do two different setups. One that uses the 4 available motors for the drive, and then another where we run the various manipulator motors instead.
Question: Can we run two expansion hubs to drive all 8 motors ????
In the interim, we are locating and reviewing the available documentation so we're ready to go as soon as we have hardware.
Mr. Phil.
Lead mentor and FTC Tech Team Member.
All reactions