Introduction: CHIKU: the Versatile Three-Wheeled Bot

About: I am a robotics and & electronics enthusiast. Passionate about technology from my childhood.

"Chiku" is a fully automatic Ultrasonic and IR sensor-based BOT which avoids obstacles and changes its direction to the direction where no obstacles are present ( you can observe its accuracy in the explanation video).

Moreover, I've developed two separate software setups for this single hardware arrangement, allowing me to build various applications using this adaptable platform. In the first part, I will exclusively elaborate on the "Chiku: Autonomous Obstacle Avoider" to ensure clarity. The details about the "Chiku: Three-wheeled Gesture Controlled bot" will be provided later.

In the future, my plan involves implementing the Kalman filter technique to effectively combine data from both the IR and Ultrasonic sensors. Additionally, I aspire to migrate this entire project from the Arduino platform to Micro-ROS, utilizing an ESP-32-based controller. Also, develop a 3D model so that the hardware structure will become more clear. This transition promises enhanced capabilities and broader possibilities for the project's development and application.



Supplies

I designed and assembled this hardware during the lockdown, which presented challenges in obtaining a standard structure like a chassis. Subsequently, I realized that creating a custom structure was necessary for the development of a three-wheeled robot. Given the limited access to 3D printers during the lockdown, and my determination to bring this project to life beyond simulations, I opted to construct the structure using materials and articles readily available within my home. This approach allowed me to overcome the constraints and continue progressing with the project.

Thankfully, I had the necessary electronic components readily available at my home. Here is a list of the components that were used:

Step 1: Story and Motivation

When I was engaged in the development of a measurement device that utilizes an ultrasonic sensor.

Out of nowhere, an idea flashed into my mind:

"Could I create a robotic system capable of making decisions for its navigation based on readings from an ultrasonic sensor?"

The above video is a depiction of what I attempted to create.

Regarding the project's name and structural inspiration:

During that period, I had a pet white rat named "Chiku" residing in my household. Observing Chiku's agile and exploratory nature, I drew parallels between rats and the qualities I desired in the project. Regrettably, Chiku passed away after a span of approximately 2.5 years, leaving us with a sense of loss. This poignant experience became a driving force for me to create the robot, serving as a tribute to my late pet and a source of motivation.

The name "ChikuBot" pays homage to my cherished pet and encapsulates the robot's embodiment of qualities such as agility, adaptability, and search capabilities, akin to those demonstrated by Chiku during its time with us. The structural design of the robot was inspired by these attributes, aiming to capture the essence of movement and exploration that Chiku personified.

Step 2: Chiku 1.0: Under Process

I constructed a dedicated structure to facilitate the development of an obstacle avoidance algorithm using the Machanix platform. To enable dynamic movement, I engineered a straightforward yet effective pan-joint mechanism. This arrangement allowed me to mount an ultrasonic sensor, which I positioned atop the pan joint.

Initially, I executed sensor rotation algorithm which is basically a combination of measurement algorithm with servo sweep algorithm along the yaw axis, enabling me to gather readings through meticulous distance measurement coding. This custom measurement code was meticulously developed based on a reference YouTube video by DroneBot Workshop, ensuring precision and accuracy in the distance measurement process. This iterative approach facilitated the systematic refinement of the obstacle avoidance algorithm.

Step 3: Chiku 1.0: Observations

Let's deep dive into the technical details:

I chose a 150-degree pan range due to the limitations of the front steering wheel on the three-wheel robot. It can't make a 90-degree turn from the center; it needs to be less than 90 degrees. So, I opted for a 75-degree span on each side from the center. This covers both left and right directions, adding up to 150 degrees in total. This approach accommodates the steering constraints of the robot while capturing data effectively.

I took measurements every 1 degree as the sensor rotated, giving me 150 readings for a complete 150 degrees turn. To keep things efficient while turning and covering the area well, I concentrated on a 150-degree section. This way, I got 150 readings, one for each degree, which covered what I needed nicely.

After collecting these readings, I noticed that the distance values didn't change significantly for certain angles. After some research, I found out why. It's due to the sensor's beam angle, which is about 10 to 15 degrees on each side.

Step 4: Chiku 1.0: Modifications

I modified the algorithm and now used 3 pin mode of the ultrasonic sensor which was described in the measurement algorithm reference. In the simplified 3-pin mode, you connect the VCC pin to the positive power supply (usually +5V), the GND pin to the ground (0V), and the Trig and Echo pins are used interchangeably for sending the ultrasonic pulse and receiving the echo. Here's how it works:

  1. VCC (Power Supply): Connect this pin to a +5V power supply.
  2. GND (Ground): Connect this pin to the ground of your power supply.
  3. Trig/Echo (Signal Pin): In the 3-pin mode, this single pin serves both as the trigger (sending the ultrasonic pulse) and the echo (receiving the reflected pulse). To use this mode:
  • To trigger the sensor to send an ultrasonic pulse, you set the Trig/Echo pin to HIGH for a short period (usually 10 microseconds).
  • The sensor automatically switches to receive mode and waits for the echo to return. When the echo is detected (the ultrasonic pulse reflects off an object), the Trig/Echo pin goes HIGH. You can measure the time the pin stays HIGH to calculate the distance.
  • The time the pin remains HIGH is proportional to the distance between the sensor and the object. You can use this time along with the speed of sound to calculate the distance.
    Warning: While using this mode sensor might experience some interference between sending and receiving signals.it's recommended to use a significant amount of delay to increase reliability.


When you use the ultrasonic sensor in the 3-pin mode, the part that sends out the sound signal (transmitter) and the part that listens for the signal to bounce back (receiver) take turns. They work one after the other.

The ultrasonic sensor emits sound waves in a kind of V shape, like a cone. This cone has an angle of 15 degrees on each side. When we add both sides together, it makes a total angle of 30 degrees. This means that the sensor can accurately measure distances within this 30-degree angle.

To understand this better, let's imagine we have 150 distance readings all around the sensor in a circle. When we consider the 30-degree angle where the sensor works best, we can fit 5 of these angles into the whole circle (150 / 30 = 5). So, we simplify the 150 readings down to 5 readings. Each of these 5 readings covers a 30-degree span, and there's a difference of 30 degrees between each reading.

This setup helps us get a good idea of the distances within a wide area around the sensor without needing to measure every single point.

Step 5: Chiku 1.0:Completed

Hardware:

During the lockdown, I crafted the robot using everyday items and the Machanix platform. For the robot's design, you can follow a similar approach by finding a 3-wheeled front steering design online or creating your own, as I did.

I used a steering wheel positioned just below the pan joint, with its movements controlled by a servo motor. This allowed the robot to have precise control over its direction.

For the circuit, it's pretty straightforward, as shown in one of the above images.

Algorithm:

While I can't provide the final project code right now, I can certainly explain the process I followed initially.

  • Mapping the Environment: The robot explores its surroundings using the ultrasonic sensor's 3-pin mode, which helps it measure distances within a specific angle.
  • Movement Control: Based on the distance readings, the robot decides how to move. If there's an obstacle nearby, it turns away from it. If the path is clear, it moves forward.
  • Steering Logic: To maintain a sense of direction, the front steering mechanism guides the robot. If it needs to change direction, the robot adjusts its wheels accordingly.
  • Continuous Scanning and Adjustments: The robot continually scans its environment, making real-time adjustments to its movements to navigate around obstacles.

Keep in mind that my initial code wasn't perfect, and I made improvements over time. You'll eventually get the final and more accurate "Chiku-2.0" code later on.

Remember, the key is to let your robot intelligently explore and adapt to its surroundings using the sensor and steering mechanism.

Step 6: Challenges and Opportunities for Improvement

I faced some challenges after completing the first version of this project. Some of the major challenges are listed below:

  1. Structural Integrity: The current design, while adorable, lacks sufficient strength. The usage of folder file pieces for the face may not be robust enough to withstand prolonged use or unexpected impacts. Exploring stronger and more durable materials for the structure could enhance its reliability.
  2. Pan Joint and Servo Motor: The pan joint's smoothness is crucial for the proper functioning of the servo motor that controls it. Addressing this issue by lubricating the joint or finding a more suitable mechanism could lead to better performance.
  3. Steering Wheel Functionality: The irregular rotation of the steering wheel is a concern, as it can disrupt the robot's movement. Investigating the cause of the intermittent stops and improving the mechanical design or servo motor calibration may resolve this problem.
  4. Handling Near Regions:  The current ultrasonic sensor can only measure distances between 2cm and 400cm accurately. This might cause problems for objects closer than 2cm. It's important to find a good way to handle these nearby obstacles to ensure safe movement and avoid wrong choices based on unreliable measurements.

Step 7: Chiku2.0:Modifications

Hardware:

  • I ensured smooth movement for the pan joint by incorporating bicycle ball bearings.
  • To facilitate motion and wheel rotation, I employed a window wheel roller coupled with bicycle iron strips. This combination resulted in an effective mechanism.
  • To establish a sturdy structure, I employed iron strips and reinforced the assembly using super glue.

Software:

To enhance the algorithm's capabilities, I integrated an IR proximity sensor into the system. This sensor is designed to cover a range of 0 to 10cm. By making adjustments to its potentiometer, I refined the range to 0 to 2-3cm.

I adopted a logical approach that synergizes the outputs of both sensors, as outlined below:

if (distance > 2.0) {
Ultrasonic_sensor_reading();
}else{
IR_sensor_reading();
}

Here is the whole git repo of this project: CHIKU