I started this project in the summer of 2011. The main idea is to create a robot from the Lego Mindstorms NXT2.0 kit and to program in ADA/Ravenscar profile, GNAT GPS nxt-mindstorms-windows version 2011. First of all, I built a simple car and control system. Next, I built an inverted pendulum. The first challenge was to figure out how to generate the binary file and upload it to the brick. You could hardly find any documentation or tutorials, and the README file wasn't enough. In the uploaded file, I wrote a step-by-step instruction for that purpose.
My simple car had 3 wheels of which two were actuated and controlled with a "Lego joystick" made of a touch sensor and a motor. The robot moves only when the touch sensor is pressed, and the direction of the motion is based on the stick position: forward, backward, turn left, and right, as shown in the video.
Finally, I built an inverted pendulum and tried to control it with two different methods, Pole Placement and PID. Pole Placement requires a mathematical model that is based on the physical characteristics of the system. I planned to use the HiTech Gyro sensor to measure the pitch angle of the Segway, but it sensor is not in the Lego Mindstorms base kit. So used a light sensor instead. I didn't finish the project due to a motor driver bug (only one motor command could be sent at a time), and I ran out of time.
Use-case application of Environmental Constraint Exploitation for robotic surface treatment
Motion Generation With Contact-Based Environmental Constraints (Thesis link)
Human-like grasping from piles leveraging granular Environmental Constraints
Reactive motion planning with contact events
Assistive robotics with POMDP online solver
Inverted rotary pendulum controlled with an optimistic planning algorithm
Vision-based autonomous navigation for railway inspection with a UAV
UAV sensor noises and system identification
Pick and place Matlab application with a Melfa RV-2AJ arm
A Five-bar mechanism with Matlab UI and control for drawing