Thursday 18 May 2023

Intergrating Omni_bot and Robbie

I have merged the omni_bot base with the torso of Robbie

The integration of three omni wheels with encoders has significantly enhanced and simplified the robot's odometry. Precise measurements of wheel rotations from the encoders enable accurate localization and mapping of the environment, resulting in more reliable navigation.

By leveraging Nav2 and slam_toolbox for navigation, the robot benefits from powerful out-of-the-box navigation capabilities. These robust ROS packages facilitate autonomous path planning, obstacle avoidance, and efficient goal-reaching, minimizing the need for extensive modifications.

The adoption of the differential drive plugin for navigation has greatly reduced fishing motion in the Y-space, resulting in smoother and more fluid movement

Replacing the RPI4 with an I5 mini PC running Ubuntu 22.4 and ROS Humble significantly boosts computing power and reliability. The I5 mini PC offers faster processing speeds, improved multitasking capabilities, and better software compatibility, simplifying installation and ensuring a stable platform. Eliminating the Timing Issues by Centralizing Nodes on I5: Centralizing all nodes on the I5 mini PC resolves timing issues observed in the previous setup. Improved synchronization and coordination between nodes result in smoother communication and minimized delays, enhancing performance and responsiveness.

Autodock functionality now incorporates strafing moves, enabling precise alignment with the docking beacon. This refinement enhances the accuracy and efficiency of the docking process.

The low power monitor program has been enhanced to incorporate additional functionality. Utilizing a QR marker and the rear-facing camera, the robot can accurately rotate to the correct angle before initiating Autodock. This improvement ensures precise alignment and eliminates potential errors during docking.

Control and day-to-day operation of the robot are seamlessly achieved using the existing chat bot, which now supports custom commands. Unknown commands are recorded for further integration into AIML, continuously improving the system's understanding and response capabilities. Text-based input simplifies interaction, enabling smooth communication between users and the robot platform.

 

 

 


Monday 26 December 2022

Robbie update

 I haven't done a update in a while Robbie now runs ROS2 humble on a single RPI4

ROS2 humble is at last at the same level as ROS1, but in general it works much better. Navigation is much more stable and works out of the box the ability to do mapping and use move_base at the same time makes mapping quicker. the work flow is now 

  • start the robot , 
  • launch slam and navigation 
  • set points in RVIZ until the map is complete
  • save the map in RVIZ

using the way point navigator feature in RVIZ you can set the way points you would

like the robot to traverse press run and the robot moves the course. very little effort required. 

 

 

 


 

Sunday 24 March 2019

Gizmo Update

The last couple of weeks Gizmo has continued testing, the goal has been to make it more reliable and autonomous and we are making progress in that part. The biggest change has been the addition of a microphone array on his head. This was not easy the software only runs on the latest Rasbian, and ROS needs to be installed from source  it took about a week before it was all running.
Gizmos current status is
  1. navigation works but still passes to close to objects if we set way points Gizmo will navigate through doors and narrow corridors and still be localized correctly at the end.
  2. Moveit will move the arms to a location and track a moving target but the dynamixels servos will overheat after a short time.
  3. Auto-docking and battery management work in semi automatic mode only
 The new external microphone opens a lot of potential ideas in a quite room Gizmo will recognize voices out to 2.5 meters with the TV running we are down to about 1 meter. We are using python speech recognizer and Google STT in default mode, snowboy for hot work recognition. it take about 8 seconds from start of command to returned text. the text is passed to a python chatbot for response and action requests are passed to the behavior tree.

Friday 11 January 2019

Gizmo the new Robbie


Gizmo is a merger of 3 robots
Bentley a smallish robot
Robbie a big Inmoov style robot
Max a navigation test robot
All 3 had design problems Bentley was too small, Robbie was too big and had trouble navigating around the house and Max was a good size but the drive train was fragile. And last of all 3 robots was just too much. Time for a rethink, so I combined the best features of all. The basic style of Bentley the size of Max and the systems and parts of Robbie.
Gizmo was designed
  • to be lifted to a workbench for maintenance
  • small enough to navigate with low resolution sensors
  • big enough to hold the components with easy access
  • 5 hour run time
  • and not look like a box with appendages
The first version was made with tubing to check for fits and clearances
Version 2 was mostly 3D printed and a new drive train using sprocket and chain 

Sunday 5 November 2017

RPI Update

Its time for a quick update on Robbie the 2 RPIs are working as expected they both run ubuntu mate now. The problem with espeak stalling was resolved by doing an update. The RPI camera works well and moving it to the 2nd RPI (R2) has increased the frame rate. The autoboot is still causing problems upstart will boot the roscore RPI but using the machine feature to launch services on the second RPI only works with a display running. Robbie's head is not fully assembled in the photo I'm still in 2 minds if I'm going to change it or just reprint it. While launching Robbie's system over three computers is a pain at the moment it has some clear advantages only the core RPI needs to be running to navigate the second runs voice and cameras. The third is for moveit and the AI. Once the boot sequence is functioning as expected, the health monitoring side of the AI will move to R2. Power distribution is becoming an issue now the new system will be one button to start the computers and automatically turn off power after the RPIs have shutdown the other systems will be switched on and off as required with MOSFETs all systems will have a switch or a fuse to disable it if required.

Sunday 7 May 2017

The Rats Nest


The wiring on Robbie has always been a problem and a big source of unreliability, the other issue was the I2C network not being able to put the motor drivers on the motor made the wiring a mess. The L298n motor drivers were bit under powered and standard servos in some of the joint it time for a rethink. I replace the I2C network with RS485 now the drivers are on the motors and the cables use JST XH connectors which makes for cleaner wiring VNH2SP30 and the TB6612FNG dual motor driver have replaced the servo drivers and the L298n. I replace the control board in the servo and used a magnetic encoder with the TB6612FNG but used the gearing this saved a lot of work redesigning the joint. The new network is working and the joint signal stability is better that before.

                                                             
Before

After
   

Thursday 6 April 2017

Robbie Update


Robbie is in the midst of a big update, with the CPU pegged at 100% it left no room for further development also a slight bug would crash the whole robot. My solution was to split up the computers on Robbie He now runs a raspberry pi 3 for low level programs and the main computer runs the higher level programs. The added advantage is Robbie now uses less power and now can run for 4 hours as opposed to 20 minutes before. Previously I used a kinect in the head to do face recognition now Robbie has a RPI camera. Face recognition was never 100% I tried openface and that works better, I just have to get it to run with ROS. Getting ROS to work was difficult using Ubuntu mate 16.4 and Ros kinetic worked but the TTS never worked reliably After switching to Raspbian Jessie and compiling ROS from source it seem to work OK Compiling works better when you increase the swap file size to 1024