There are two types of vehicles in the P.A.C.M.A.N. project. The first is the Autonomous Convoy Vehicle (ACV), which is the primary goal of this project and is pictured above. The ACVs are modular, passive, autonomous follow vehicles which follow the path of the vehicle in front of them in the convoy. The second vehicle is the leader vehicle, which is radio controlled and simulates the lead convoy vehicle which would be operated by a human operator. Both vehicle types are built on the same vehicle platform from Redcat Racing, however the lead vehicle is only modified by adding a Nintendo Wii Sensor Bar on the rear of the vehicle.
The system for the ACVs is made up of independent components as shown on the system diagram on the right. The Altera DE2 FPGA Development Board is the controller of the entire system and was programmed in VHDL. The FPGA development board is connected to the I/O Daughter Board via a GPIO port with a 40 pin flat cable. The I/O Daughter Board is used to connect all the peripherals. This includes the infrared camera array, the circuitry for the rear wheel quadrature encoders, and bidirectional level shifters to communicate with the Electronic Speed Controller (ESC) and the Steering Servomechanism. The ESC drives the motor to move the vehicle and the Steering Servomechanism turns the front wheels to steer.
This particular RC car was chosen since it was relatively affordable around 100 dollars and had a steering servomechanism. The steering servomechanism allows us a finer degree of control over the steering angle of the front wheels, instead of only a discrete left, right, and straight steering angle.
The FPGA development board was available from our senior design department who allowed us to borrow them for our project, incurring us no cost. The development board has a plethora of connectivity, we only used one of the GPIO ports (the big black 40 pin connectors on the right) for our project.
Our project required a relatively wide field of view to track the vehicle in front, which required either a relatively large camera array or wide angle lenses. The Pixart Cameras in the Nintendo Wii Remotes allowed us to implement a relatively large array of cameras at a low cost. Our system uses 3 cameras giving us a 105 degrees horizontal field of view, and we have the capability of using 5 cameras giving us 180 degrees horizontal field of view. We were able to purchase used and broken Nintendo Wii Remotes to desolder the cameras and place them on our printed circuit boards. One note for those who are interested in desoldering the Pixart cameras: we found the cameras marked with Foxconn were more difficult to desolder due to the type of solder and layout of the particular revision of the printed circuit boards that we found these cameras on.
The sensor bars are essentially infrared emitter bars, which have two clusters (one at each end) of infrared LEDs. We found the original wired Nitendo Wii Sensor Bars had a very good angular response compared to third party sensor bars. We designed our own custom sensor bars, but made the IR LED clusters too small and this resulted in poor performance at larger distances.
We designed a custom PCB in EAGLE to act as the I/O Daughter Board of the Altera DE2 FPGA Development Board through the GPIO port. We first prototyped a board with a PCB milling machine and then sent off the board for final production once revisions were made.
We needed to somehow track where the vehicle was traveling compared to the path of the preceding vehicle, waich was being recorded with the infared cameras. We decided to implement custom quadrature encoders inside the rear wheels. To do this we used two HLC1395-002 photo-reflectors from Honeywell and created a two channel (36 steps per revolution) pattern where the channels were shifted by 90 degrees in phase. Thanks to the phase shift, we could then track the rotation of the wheels at 72 ticks per revolution though quadrature decoding in the FPGA. The HLC1395-002 photo-reflectors were attached inside the wheels facing the black and white printed pattern by making a simple adapter plate which screwed into the suspension arm to which the wheels were attached. The circuitry to power and convert the analog output of the photo-transistors to a discrete form was placed on the custom I/O Daughter Board. The photo-transistors' pins were bent to move them as close as possible to the pattern. We also had to modify the car to front wheel drive, instead of all wheel drive, since the power applied to the rear wheels caused slipping which made our dead reckoning based on differential drive produce a significant error.