Software Rationales - VTAstrobotics/Documentation GitHub Wiki
Remember that everyone owns this documentation and if you find any errors or out of date information you should fix it.
Contents
Prerequisites
To understand the content on this page, you should be willing to
- Think and understand that sometimes perfection can be the enemy of good enough
Arduino to Pico
Preface Arduinos are wonderful prototyping tools and if you know their limitations then they can make complex and interesting projects. Noting that, why are we phasing them out? Their limitations are poorly documented, based on the specific board, and come up often in our robotics problem space.
Issues I have encountered while working with our Arduino Nanos that have made me waste huge amounts of time debugging.
Due to some issue or intentional choice in their implementation of the Arduino language. You cannot call functions inside macros. Max Macro for example I should have seen the disclaimer but given that everyone who I know who has used Arduinos has been shocked by this it is an easily missed warning.
Also on certain boards, you cannot use an analog read at the same time as you use an analogWrite to produce PWM output. analog sensors are common on linear actuators and a variety of other sensors, this means that you effectively cannot produce a good control loop on certain Arduino boards. I have yet to find documentation on this issue but have encountered it across several boards. (Uno, nano)
Because of these factors we have elected to swap to Raspberry Pi Picos. These newer boards offer fewer analog inputs (4 compared to 8 or more). However, their support of MicroROS, easy c++ utilization, multicore capability, and excellent documentation more than make up for that. That is why we are transitioning to the Pico.
Why USB Controllers won't work on the Jetson Orin Nano
We have run into issues in the past with connecting usb controllers to our Jetson Orin Nano. The controllers we have tried in the past have all been Xbox controllers. These issues, however, are nonexistent on older Jetsons that run an older version of jetpack. The usb controllers are able to connect without any issues. The Jetson Orin Nano runs Jetpack 6.0, which is what we believe to be the source of these issues. We’ve tried changing permissions for the machine to connect to the controllers, but this didn’t work. Additionally, as referenced in the forums below, we tried changing some of the configuration settings on Linux as Jetpack 6.0 apparently doesn’t have certain config settings that a usb controller needs enabled. Changing these settings also didn’t seem to work.
These are the forums that were referenced when deciding this issue:
https://forums.developer.nvidia.com/t/jetpack-6-0-microsoft-xbox-joystick-not-working-with-kernel-5-15/293005/2 https://forums.developer.nvidia.com/t/no-data-being-updated-from-joystick-in-o-p-of-sudo-jstest-dev-input-js0-solved/65985 https://forums.developer.nvidia.com/t/jetpack-6-0-issue-with-xbox-gamepad/276392