Robot Hardware (Tue Sep 10, lect 4) | previous | next | slides |

How do our autonomous robots work?

Logistics (15 minutes)

  • Discussion of first PA. How did it go. What did you learn.
  • When2Meet: https://www.when2meet.com/?18557355-5pigl
  • Please be flexible. We can’t satisfy everyone’s whim (“I am keeping my friday’s open from school work”)
  • Reference: Robotics Lab Web Site

Robots are made up from many Subsystems

  • Subsystems are ‘represented’ in the software
  • Locomotion (e.g. wheels)
  • Actuation (e.g. arms)
  • Sensing (e.g. cameras, lidar, buttons, encoders)
  • Computing (e.g. single-board computer SBC, microcontroller)

Concepts in Actuation

  • Holonomic - non-Holonomic
  • Holonomic - can move in any direction
  • Degrees of freedom
  • Ambiguity in defining DoF

2 Wheel scenario

  • Differential drive: Turtlebot3, Platform, Bullet
  • Turning by different speed on two or more wheels
  • Sometimes there is a caster
  • Can only move forward and backward or pivot in place

4 Wheel scenario

  • Not up and down or (directly) sideways
  • With more than 2 wheels, or a track - skid steering
  • Cars have “Akkerman” steering (4 wheels, 2 that can steer)

Tracked Vehicles

  • Skid steering
  • Problem with odometry

Manipulator Arms

  • Degrees of freedom
  • Still doesn’t tell the whole story - how fast, in what order, or simulatanuous?
  • Coordinate transforms
  • Forward and reverse Kinematics

Quadruped

  • Gait - trot, gallop, etc
  • Sensing vs. Non Sensing issues

Common case: Differential drive

Lower Level

  • Subscribes to cmd_vel
    • Desired translation and rotation speeds
    • Reverse kinematics tells us desired rotations per second for each wheel
  • Publishes to odom
    • Forward kinematics tells us estimated actual motion (position and speed)
    • ‘Dead Reckoning’

Supporting hardware

  • Two wheels + 1 or 2 casters
  • Each wheel has motor and encoder
  • Motor will go “faster” when given more current
  • Encoder counts up for each rotation

Algorithm

  • PID control to minimize delta between desired and actual

Sensors

LiDAR

  • Rotates and uses a laser to measure distance to nearest obstacle
  • Returns a vector of values corresponding to the directions
  • LiDAR’s can operate in 2d (scan) or 3d (point cloud), ours is 2d
Limitation Operates in a plane, like a disk. Can't detect an obstacle above or below the plane!

Visual Cameras

  • Webcam sees a color picture
  • Matrix of dots, each dot has a color
  • Dot[x,y] = {r,g,b}
  • Data can be processed for example with opencv
  • A lot of data and a lot of processing
  • Bandwidth limits

Depth Cameras

  • Like a Microsoft Kinect
  • In addition to {r,g,b} also has distance so we get {r,g,b,d}
  • Useful for getting range measurements of an object detected through camera

Computation

  • Distributed environment, typically:
    1. roscore running onboard. on Raspberry pi
    2. Some additional ROS nodes running on Raspberry Pi
    3. More ROS nodes running on a laptop or other computer
  • Workload is truly distributed across all of those
  • Eventually we may have to have a much beefier computer running all three
  • This would make the robot much more independent

Our actual Robots

  1. Differential Drive - 2 powered wheels and one (or two) casters
  2. Arduino or Arduino-like computer to control the motor.
  3. Motor Controller and IMU directly connected to Arduino
  4. Raspberry Pi which runs Ubuntu and ROS, connected to Arduino via a USB cable
  5. Lidar connected to Raspberry Pi connected via USB cable

Thank you. Questions?  (random Image from picsum.photos)