FRC 4481 Team Rembrandts 2023 Build Thread

Welcome to the Team Rembrandts 2023 build thread, presented by #openalliance.

This will be Team Rembrandts’ 10th season of competition, leading us to the roman numeral X. We started wondering, what is X? We defined it as both an undefined variable, as well as the part of something that makes it unique and sets it apart from the rest, the X-factor. This coming year, we we’ll be partially rebranding to TR-X

Some Background Information - Who is Team Rembrandts?

  • Team Rembrandts is mostly a group of young engineers mentoring around 50 students from the Brainport Region in and surrounding Eindhoven. Our team is heavily inspired by engineering in general. We strive for advancing respect and appreciation for engineering while utilizing strategic methodology to solve design problems in order to compete with a competitive robot every single season. We celebrate enthusiasm and spirit through coopertition where knowledge, competition, and empathy are comfortably blended. Coopertition means competing always, but assisting and enabling others when you can.

Partnership Updates

  • This offseason the team has been working hard on the sustainability of the team. As an international FRC team we have a unique set of challenges on top of the challenges all teams face. We are honored to have been selected for @teamREV and are beyond excited to welcome REV Robotics as one of our new Partners.

  • Besides REV Robotics we’ve attracted extra partnerships and looked for opportunities to reduce costs on other budget categories like the shipping cost of our pit. We’ve designed and are currently building a new pit flightcase which we will import to the United States indefinitely and store locally. Which we’ll talk about more in detail below.

  • Besides that we’ve strengthened our collaboration with FTC Netherlands, now branded as FTC Benelux. Working together with the Gene Haas Foundation as our title sponsor for the foreseeable future in order to grow FTC in the Netherlands and Belgium.

Organizational Structure

  • Design isn’t the only thing that is an iterative process. As our team continues to grow we must also continue to review and evolve our structure. As said our team is heavily inspired by engineering in general and the companies we partner with. Where 95% of our mentors are basically alumni who combine their professional life and mentoring the team. Bringing back knowledge to our team on many different subjects like design for manufacturing, management experience, systems engineering and many others.

This off-season we changed and improved a couple things:

  • The way how our leadership team is organized
  • How our departments within the team are being led
  • Improved our robot development process for the build season (structured teams and roles subsystems, design review guidelines and spread out more ownership amongst team members for ordering parts, managing tasks etc)

If anyone is interested in these subjects then we can do a deeper dive on this topic.

Offseason Projects - Swerve Development

  • We think that it comes as no surprise that this offseason, the mechanical and controls departments have been devoting a large amount of time to the development of the teams first running swerve drive. We are proud to say that we successfully have two swerve drive chassis running and are continually using them to develop both robust software and driver skills.

SDS MK3 Chassis

  • At the end of last season we were able to purchase a set of used SDS MK3 modules (Thanks FRC5895!). This was the first running swerve drive chassis in 4481’s history and helps to set the benchmark for future swerve drives. The software team started with this chassis and leveraged the software from other teams (and SDS) to get the chassis running before beginning to develop software of our own based on our software architecture.

This chassis will now primarily be used for driver training, and is additionally getting a modified intake and shooter assembly from the 2022 robot installed.

3in MAXSwerve Chassis
REV ION - 3in MAXSwerve Launch

We were also selected by REV Robotics to be beta testers for the new 3in MAXSwerve modules. As one of the first teams to assemble these and get them running we have been providing feedback to REV and are impressed with the overall design of the modules. Our initial feedback:

  • Module fabrication and design is excellent
  • The motor keyway can be a challenge to install / align
  • Modules are very compact, lightweight, and easy to mount
  • The 3”x1” wheel tread does seem to wear quite quickly (on a very underweight chassis)

Our next post will be about the software development we’ve done for our swerve drive chassis. This will include some footage!

Offseason Projects - Pit and Cart

  • With the rising costs of shipping (and all things in general we are working on a redesign of our travel pit and cart). The goals of this project are to reduce the overall shipping costs as well as reduce the amount of time it takes to set up our pit at events, without reducing (and hopefully increasing) the effectiveness of the pit. Our partner FAES has agreed to produce the new case design for us and we are in discussion with a shipping partner and partner in America to hold our pit for us between seasons. A new cart will also be designed that is able to be stored inside the pit between seasons. Shout out to 4414 and 1678 for posting extensive information about their pit in the offseason!

2023 Season Goals

  • Use our data driven decision making (3DM) process to drive the robot design
  • Design a modular robot that is assembled and disassembled easily and quickly
  • Spread out responsibilities and workload more evenly amongst the entire team
  • Control our fate at all of our events (rank within the top 8)
  • Win an Engineering Inspiration Award
  • Win an Engineering Design Award

This post was written by:
@RonnyV & @Justin_Foss


Welcome to the second update in the Team Rembrandts 2023 build thread.

Since the start of the off-season, the software sub-department has been hard at work to develop a swerve drivetrain. We bought 4 SDS mk3 modules from FRC 5895 last championship, which would give us a much needed headstart. After getting started with them, we got notified that we were selected to get early access to the REV MAXSwerve modules. This meant that our strategy would now shift to developing non-vendor specific code.

Initial software structure

Prior to this season, we did not have any experience with swerve drivetrains. We always used tank drivetrains. This meant that this would be a huge step up in complexity. That is why we first sat down with a couple people from the software department to get a good overview of the task ahead. After creating a clear class diagram and creating the skeleton code, implementing the initial logic was relatively easy.

This initial version simply converted the percent output of a controller to a percent output for the drive motors. While this works in theory, it was a very crude implementation and would not be compatible with any autonomous code that we planned on writing. That is why we converted the system in such a way that the only thing that has to be done is give a target ChassisSpeeds which consists of a forward and right velocity in m/s and an angular velocity in rad/s.

Developing for two different drivetrains

Shortly after getting the initial version working, we were notified that we were chosen to beta test the new REV MAXSwerve modules. This meant that our code now had to run on two different drivetrains. Therefore we would not be able to use anything from the SDS library. After making a list of differences, we noticed that the only real difference between both drivetrains are some physical dimensions, PIDF constants and the encoder on the azimuth axle.

While the SDS modules made use of a CTRE CANCoder, the REV modules make use of a Throughbore encoder. This meant that we had to create our own conversion system from a PWM signal to a Rotation2d object. After overcoming this hurdle, getting both systems running simultaneously became possible.

Path Following

Having a new drivetrain also meant that we had to update our path following system. Last season, we created a system where a user could draw paths using FRC PathPlanner that would then be converted into a trajectory that would be followed by a drivetrain using the Pure Pursuit algorithm. While our implementation was working for differential drivetrains, it works substantially differently for holonomic drivetrains. Since we do not know what next year’s challenge brings, we could not outright change all our code to holonomic. Instead, we opted to extend our library in such a way that it would now be possible to use both types of drivetrain using the same system.

Second Order Kinematics and Heading Correction

While the first order SwerveDriveKinematics class from WPIlib works, it did not give us the level of control we were satisfied with. That’s why we decided to create our own kinematics implementation using second order kinematics.

We also saw that if you accelerate fast enough, the robot will always turn slightly. While this does not matter for driving since the robot is controlled field oriented, it makes it difficult to aim for potential scoring. That is why we implemented an active heading correction on top of the second order kinematics. The result is a robot that is super fast but also very agile and able to cross tight gaps.

Lessons Learned

The most important thing we learned during this project is the logic behind a swerve drivetrain. Even if we will not be able to use it next season for whatever reason, we have gained knowledge on a complex but very useful system for future seasons.

Because it was such a complex project, it was the perfect opportunity to teach people new things about a software domain they were interested in. Whether that is autonomous logic, software architecture or controls engineering, everyone was able to get a deeper understanding of their preferred subject.

Next Steps

There are two important next steps in this project. First of all, we want to work closely with the drive team candidates to create a setup that works best for them. That means tweaking controls, speeds and maybe even implementing new features to make it easier for them to gain mastery of this new system.

Finally, when REV releases the new SPARK MAX features, we want to convert our code to use all the new features promised on the product page of the MAXSwerve.

This post was written by: @Nigelientje


We are going to see about copying as much of your swerve work as we can!

@Wesley, see above.


I’ve been mostly looking at Team 364’s Base Falcon Swerve so far, but these are interesting things to consider. I’ll explain more over on our build thread.

1 Like

Is this open-sourced? If not are there plans to release it?


My other favorite thread of the season.


The code is not exactly ready for release yet but we will make sure to publish something before kick-off


Did you also do custom inverse kinematics in your odometry/pose estimator?


We actually used of the whitepaper made by team 449.

Link to the Chief Delphi post in which they explain the principle:
Link to the whitepaper that they uploaded in the same post:

We use equation 2 from the paper to do the first order kinematics. This essentially does exactly the same as the kinematics function from WPI. The output of this equation is put into equation 4 and the results of this are put into the matrix equation below equation 8. From the results we use the desired x and y velocity of the module to calculate the heading and speed of the module. From the results of the second order equation we use omega, the rotational speed of the module. This omega is multiplied by a feedforward constant (kV) to add some voltage to the turn motors if the omega term is non zero. This is done using the arbitrary feedforward function of the Spark Max. In contrast to the heading and speed, we do not use a feedback PID loop in addition to this feedforward for omega.

I hope this clarifies your question.


For the inverse kinematics we use the functions provided by the WPILib


Maybe I’m being dumb, but how are you finding ax and ay to plug in to the 4th equation.

1 Like

That’s my fault, I forgot to mention that we set the a_x, a_y and alpha (angular acceleration) to zero. In reality the linear and angular acceleration are of course not zero, but despite this the second order kinematics still fulfills its job of correcting the drift when driving and turning at the same time.


That sounds like a really solid plan.


Welcome to the third update in the Team Rembrandts 2023 build thread, presented by #openalliance.

“This will be Team Rembrandts’ 10th season of competition, leading us to the roman numeral X. We started wondering, what is X? We defined it as both an undefined variable, as well as the part of something that makes it unique and sets it apart from the rest, the X-factor. This coming year, we we’ll be partially rebranding to TR-X”

This is a quote from our previous post, the introduction to our 2023 build thread, presented by #openalliance. This is also a perfect example of what the department that we’ll be talking about today is working on!
We would like to introduce you to Team Rembrandts 4481’s ‘MarCom’ department.

MarCom is a combination of both marketing and communication. Previously, all things related to both outreach and social media / branding was handled by separate departments. After last season, we decided to restructure these into one new department, MarCom was born.
Being the newest department, we’ll be going into our responsibilities and structure. Then we’re moving on to our 'foundation’, as well as the events and initiatives we are involved in.

Responsibilities & structure

MarCom consists of three separate sub-departments, being:

Media & Branding

This sub-department is responsible for all things branding related. Think of social media presence (ranging from instagram posts to high effort youtube videos), team clothing, banners, promotional material, and all designed resources such as posts for the challenges in #teamrev.
M&B offers a place in TR for people who share our passion in FRC, but are not as interested in the technical side, creating a space for all people in STEAM.

Most people who know of the team, keep up with us mostly through the efforts of Media & Branding. They’re a huge contributor to our team’s success!


Previously, the Outreach department took care of both outreach activities as working on all submitted awards and event presence / pit training etc. This made it more difficult to keep up with long-term sustainable projects as attention would be drawn away in the preparation and execution of the competition season.

Splitting this up between Outreach and Awards enables us to have some people focused on the long term, only working on projects. The main one of those being the growth in quantity and quality of the Dutch FTC scene.


The other side of this split in Outreach is this Awards sub-department, where people focus on all submitted awards, the presentation for the impact award, and team representation at and away from events.

During events, we see that this sub-department has a large inflow of interested students who are coming off an exciting buildseason, and want to present the robot as best they can. Preparing these students is also a task of the sub-department.

Student engagement

These sub-departments all have their unique responsibilities, and have a team member in a lead position, guiding the progress and helping wherever necessary. Each sub-department makes a distinction between mentors, support, and students. As a direct contact between the department’s operational efforts, and the management team’s strategic efforts, MarCom (as each department does) has a department manager. The five department managers make up our management team, offering a growth path for all team members to grow into the position they desire, from the angle and interest they desire.

Our foundation

All of MarCom’s efforts are based on our core foundation of what TR is all about.

Guidance & Coaching

‘Pushing the needle’ has been the most relevant term over the last year of TR. Continuously looking for better ways to improve our teamwork and overall team capability. Actively working on the way of working between students and mentors allows the team to create the best experience for all members, and ensure students learn as much as they can.

Around 95% of all our team members come through the FIRST program including our mentors. We love to have alumni and mentors stick around the team and bring back knowledge from the industry to the team. This can be technical as well as non-technical experiences.
Our guidance and coaching start when a team member joins the team and never stops. It’s what drives us to help the local FTC community, create internship opportunities, offer students our 2-year Skills Class program and be constantly aware of the opportunities for student engagement in the team.

Strategy & Engineering Inspiration

Our team is heavily inspired by engineering in general. We strive for advancing respect and appreciation for engineering while utilizing strategic methodology to solve design problems in order to compete with a competitive robot every single season.The team strives to be an ever improving force in the FRC community.

Every team faces its own unique set of challenges and opportunities, being an International team is no exception. Our goal is to be a consistent championship competitive FRC team. In order to do this we have some big hurdles to overcome while iterating and improving our robot through a season.

For example, through our modular design approach that allows us to pack our robot into suitcases while traveling and thus not being hindered by international air freight. This requirement means we have limits on size and weight for our subsystems in the design phase.

Cooperition & Team Spirit

We celebrate enthusiasm and spirit through coopertition where knowledge, competition, and empathy are comfortably blended. Coopertition means competing always, but assisting and enabling others when you can. It is important to make sure everybody has a good time being a part of our FIRST team. Through the working ways of coopertition, we believe everybody has an impact on each other’s experience. This has led us to the idea of bringing the experience from American competitions to the Dutch FTC scene, where we organize different fun challenges and try to get teams talking to each other.

Initiatives & Events

From these three pillars, we derive projects and initiatives that we think are worth putting time and effort into. These range from being a part of The Compass Alliance (TCA), to the #openalliance, to what is currently our biggest point of focus: FTC in the Netherlands and Belgium together with the FTC Benelux affiliate partner.

TR was the first Dutch FRC team, and one of the first in Europe. When looking at the progression of programs through FIRST, there are seven areas of influence. For FLL, FTC and FRC, there is an inflow (quantity) and retention (quality) of the program. They can attract new people, and when those people are engaged, they will stick to it. Retention in FLL can lead to inflow for FTC, as FTC retention leads to FRC inflow.

The final other area is outflow into alumni / mentorship positions. This forms the path to the eventual goal: a European FRC regional.

There is a minimum amount of teams required in a country to start such a regional, outside of all other organizational and financial requirements. Purely looking at getting the required number of teams, each being self-sustaining, true FRC teams, means we have to improve on the aforementioned pathway.

Currently, we are focussing on improving the quality of FTC events in the Benelux (Belgium, Netherlands, Luxembourg). This will increase retention and inflow into FRC.

Our involvement with the competition and organization thereof has been ever growing.
Currently, FTC Benelux consists of two parts: FTC Netherlands and Team Rembrandts.

Lessons learned & next steps

In the past while, the department has learned that the technical side of the team provides insights that can be used in non technical areas as well. Setting out goals, planning to reach them, and professionalizing our way of working are examples of what makes these efforts sustainable.

The next steps for the season are finishing the written submissions, preparing students for their pit presence, preparing presentations and videos, creating posts and keeping up with our content schedule, and making some cool content whenever there is a chance.

Thank you for reading!

This post was written by: @RensKappert4481 - MarCom department manager


How did you find this feedforward constant?


It’s a matter of tuning. Increasing the constant slowly from 0 will decrease the drift, but if the value is set too large the robot will drift to the other side.


Welcome to a new update of the Team Rembrandts 2023 build thread!

First of all we hope everyone had a wonderful Christmas and got to spend some time with their beloved ones! :christmas_tree:

Today we will be informing you about the program for our first year team members. Every year Team Rembrandts recruits a group of new students from the highschools we are cooperating with. These students are 14/15 years old and for most of them this is their first introduction to the fields of STEM. To prepare them for buildseason in the best way possible, the team introduced Skills Class 1, SC1 for short.

Why did Team Rembrandts introduce Skills Class 1?

Until the 2019 season Team Rembrandts recruited a group of 16 engineering students from the University of Applied Science where the team was founded. For the first years this was a good way to develop the team, but it didn’t really match our vision and mission of inspiring young people to choose for a study/job within the fields of STEM since these students already choose an engineering study. Also, these students participated in Team Rembrandts as a project for their studies, meaning we were limited by the project requirements of the university. This also meant it was supposed to be their project and the highschool students weren’t as involved as we wanted them to be. Therefore, we decided to let go of that and mainly focus on the highschool students.

What is the goal of Skills Class 1?

For most students Team Rembrandts is their introduction to both engineering and FRC. That means we only have 13 weeks to get them ready for the tense, but also fun period the buildseason is. Up until last season SC1 was an introduction to all the departments within the team. This year we mainly focused on the buildseason itself and tried to simulate the first week of it. The main goals are to give the students the knowledge and confidence to participate and be hands-on during buildseason in a way they can get the most out of it and to learn working together as a team.

How did we approach Skills Class 1?

Each team evening started with a theoretical session which shouldn’t take longer than an hour. During the weeks we discussed the following subjects:

  1. Introduction to TR - Getting to know each other, annual planning, getting to know the team
  2. Introduction to FRC - Competition, game analysis and strategy
  3. Robots and subsystems - How is a FRC build up? Introduction to plug and play design
  4. Functions and requirements - Why do we make them and why are they important? Showed some examples.
  5. Robot design - Introduction to different materials, parts, etc.
  6. Manufacturing and assembly - How to use the materials and introduction to the workshop (machine safety)
  7. Electrical - Control electronics, motors, wiring and soldering
  8. Pneumatics - Introduction to the use of pneumatics and basic calculations
  9. Controls/software - Basic introduction to programming a robot
  10. Manufacturing and assembly - Work on prototypes
  11. Testing and validation - Testing and validating the prototypes with set requirements
  12. Introduction from our MarCom department - Introduction to our outreach program and simulating pittalks
  13. Buildseason preparation - Buildseason planning, approach, etc.

After each theoretical session, the students are working on a corresponding practical assignment within their project. The group was split up into two teams that were working on a simulation of either the 2017 or the 2019 game to gain some experience which will be useful during the real buildseason.

What were the results of this new Skills Class 1 approach?

We are yet to have an evaluation session, but from the talks we had with these students we got to learn that they are very enthusiastic about the layout of the program. They feel like the theoretical information they got will help them to understand several topics within the build season better and gave them a good indication of where their interests lie and what they would like to work on. The practical part really was a pilot and up until the part where they had to work hands on a project and physically build something, the students were well enough guided. After that there should have been some more guidance and we are looking forward to improving the program with all the feedback we got and will get.

Skills Class 1 during buildseason

During the buildseason we’d love to see the SC1 students explore themselves with everything the team has to offer. This might be working on the robot in a technical way, like mechanical design, manufacturing, electrical or software, strategy, but could also be being involved in our outreach or media & branding subdepartment. In previous seasons we’ve had some students who were afraid to ask things or who were scared that they would interfere with the work more experienced team members are doing. To tackle this and make sure the students get the most out of build season, we introduced a buddy system. Each SC1 student gets linked to an experienced team member who will be their buddy throughout the season. It is the buddy’s responsibility to make sure that the SC1 is always busy doing something they are interested in and spend their time as optimal as possible. The buddy will be the students first point of contact, but the overview of all SC1 students will be the appointed “master buddy’s” responsibility. This is the first year we introduce this buddy system, so we are really curious about the results.

Skills Class 2

Once the competition is over, we hope every student has their own vision of how to personally develop themselves. In contrast with SC1, SC2 is a program that the students can choose for themselves. Each (sub)department offers a program regarding their expertise and gives in-depth information about several subjects. For instance, the students will get familiar with the CAD program SolidWorks, more advanced programming, etc. For SC2 students this is the next step to more involvement and decision making. While guidance is less, SC2 students will also get a buddy during build season. However, since they have more experience, the department manager is responsible for this.

This post is written by: @Wesley4481 - Resources manager


Welcome to a new update of the Team Rembrandts 2023 build thread!

Since the beginning of September a group of 8 students from Fontys Hogeschool in Eindhoven are focused on designing a fast, reliable, modular and light lift system. All 8 students have been with the team for a couple of years already. In this post we will go through our design and elaborate the decisions made during this process.

The lift has to be fast, reliable, modular and light. To achieve this we have made a couple of requirements. They are mentioned below. With these requirements we were starting with brainstorming and choosing a main design. Soon we made the decision that we want a multistage lift mechanism. Then we made a morphological map. Out of that we had the conclusion that the best solution is a continuous multistage mechanism.

  1. Robot height minimum extension 210 cm from the ground
  2. Start configuration must be under 121.92 cm height (including drivetrain ~40cm)
  3. The robot may not extend more than 76 cm over its bumpers.
  4. Units must fit in a suitcase - 157 centimeters (length + width + height)
  5. Minimum of 2 moving stages
  6. Lift needs to be able to lift a minimum of 5 kilograms (excluding the weight of the lift)
  7. Time required to reach full height when loaded with ~5kg should be ~1sec
  8. Needs to have an attachment for the end effector
  9. Remove from other system (drivetrain) in 10 minutes
  10. Must weigh less than 23 kg with flight packaging


Bearing blocks:
One of the most important parts of a lift system is the guiding of the stages. A lot of speed and efficiency can be lost by using a bearing block that creates too much friction within your system. You can also make your system too complicated by using too many parts while you could incorporate a lot of different functions within one part. There was also a focus on making this system modular and easy to repair, this concluded in the bearing blocks only being attached by 4 bolts.

The other 2 points were the ones we focused most on while designing the bearing blocks. After taking a look at a few different systems like, linear rails to guide the stages and looking at a few designs from other teams, we eventually decided on a system using bearings to guide the stages. This decision was made because of the ease of use of bearings and the low amount of friction created by bearings.

When we looked at reducing the parts inside the lift we figured out that we could use our bearing blocks as hard stops and that we could connect a constant force spring to our bearing block to create a system that needs less force to move up. This resulted in a block that is a bit bigger than the bearing blocks used by other teams, but it has a lot of positives for the lift in general because we were able to incorporate a lot of different functions in 1 block.


Motor/spool system:
The propulsion of the system is a difficult part to figure out during the design process because you are never 100% sure about the weight, height and speed that your system needs and has. This meant for us that this system underwent the biggest changes at the end of the design process. We first had a spool with a 50 mm diameter and 2 Neo’s with a gear ratio of 1:3. We changed this to a spool with a 30 mm diameter and 1 Neo with a gear ratio of 1:2. We also changed the way we used our gears, we went from a self-made gearbox to a timing belt with 2 pulleys. This made our system faster.


Middle stage:
The middle stage is the stage where during the build season a new subsystem would be built on. This means that it has to be strong, reliable and easy to use. We chose a stage which is made out of 4 axles and 2 sheet metal plates. This made the system light and easy to manufacture while still being strong and reliable.

Some interesting facts:

  • Weight of the moving parts: 7374,12 g = 7,37412 kg
  • Weight of the whole system: 11674,00 g = 11,674 kg
  • Strength of the constant force springs: 115 N = 11,72 kg
  • Weight the motor has to pull:
    7,37412 kg + 5 kg (for the subsystem on the lift) - 11,72 kg = 0,65412 kg* Starting Height: 1 m
  • Maximum Height: 2648 mm
  • Tube size: 50x30x2 mm
  • Travel of the middle stage: 2189 mm
  • Time from minimum to maximum: 0,48 s

Lessons Learned
We learned a lot within this project. First of all it is very hard to do a project with good friends of yours. It can be very fun but at the same time you need to stay focussed. We learned to set boundaries for this so we can work efficiently. We have also learned to manage with our resources. We have a lot of different parts from different companies so we learned to communicate with them and how to plan our manufacturing fase.

Next Steps
Our next step is to assemble the lift mechanism. We hope the design is up and running at the beginning of our kickoff season this January. Some big steps have already been made!

This post was written by: @Teis_Joepman , Mathijs and Maxime


How much visible improvement did it make for the skewing issue?


It was quite significant, without the second order kinematics the robot would deviate 0.5 to 1 meter when turning and driving relatively fast for about 3 meters. This was reduced to almost 0 when tuned right with second order kinematics. Beforehand we already tried reducing the issue by tuning the drive and turn motors, but this had little noticeable improvement.