Difference between revisions of "Tilting Hokuyo"

From Healthcare Robotics Wiki
Jump to: navigation, search
(Pictures of the Setup)
 
(44 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
== Author ==
 
== Author ==
Advait Jain (http://www.cc.gatech.edu/~advait)
+
Advait Jain (http://www.cc.gatech.edu/~advait), Advisor: Prof. Charlie Kemp
 +
 
 +
== What this does ==
 +
Tilting the Hokuyo using a servo and reading back the servo encoder position while getting scans from the Hokuyo allows us to generate a 3D point cloud of the world in front of the robot. We have used this 3D point cloud for object segmentation, door handle detection etc.
 +
 
 +
We first used this sensor in this paper: ''EL-E: An Assistive Mobile Manipulator that Autonomously Fetches Objects from Flat Surfaces.'' Advait Jain and Charles C. Kemp. Autonomous Robots, 2009. This paper and others can be downloaded from the Heathcare Robotics Lab website (http://www.healthcare-robotics.com)
 +
 
 +
 
 +
<gallery caption="Sample Point Clouds" widths="150px" perrow="3">
 +
File:thok_pointcloud1.png|
 +
File:thok_pointcloud2.png|
 +
</gallery>
  
 
== Pictures of the Setup ==
 
== Pictures of the Setup ==
<gallery caption="Servo Tilting the UTM" widths="300px" perrow="3">
+
<gallery caption="Servo Tilting the UTM" widths="150px" perrow="5">
 
File:thok0_home.jpg|Firefly Camera, UTM and Servo (left to right)
 
File:thok0_home.jpg|Firefly Camera, UTM and Servo (left to right)
File:thok0_tilt1.png|
+
File:thok0_tilt1.jpg|
File:thok0_tilt2.png|
+
File:thok0_tilt2.jpg|
 +
</gallery>
 +
 
 +
<gallery caption="Alternate Configuration" widths="150px" perrow="5">
 +
File:thok1_tilt1.jpg|
 +
File:thok1_tilt2.jpg|
 
</gallery>
 
</gallery>
  
 
== Hardware ==
 
== Hardware ==
* Tilting servo: Robotis Servo (typically we use RX-28) http://www.crustcrawler.com/motors/RX28/index.php?prod=66
+
[[Image:utm-servo-bracket.jpg|thumb| Image of the solidworks part for the bracket to mount the UTM on to the servo.]]
* Hokuyo UTM.
+
This is the hardware setup that we use:
 +
* Tilting servo: Robotis Servo (typically we use RX-28) [http://www.crustcrawler.com/motors/RX28/index.php?prod=66 CrustCrawler]
 +
* This gives a serial interface to control the servo: [http://www.crustcrawler.com/electronics/USB2Dynamixel/index.php?prod=65 CrustCrawler]
 +
* Hokuyo UTM. (http://www.acroname.com/robotics/parts/R314-HOKUYO-LASER4.html)
 
* Bracket to mount the Hokuyo on to the servo.
 
* Bracket to mount the Hokuyo on to the servo.
 +
** This is a custom part that we have designed.
 +
** The solidworks CAD file ([[Media:utm-servo-bracket.sldprt|utm-servo-bracket.sldprt]], [[Media:utm-servo-bracket.igs|utm-servo-bracket.igs]]). This requires Solidworks 2009.
 +
** We have taken two routes for making the bracket
 +
**# buy Aluminium channels from http://mcmastercarr.com and drill the appropriate holes.
 +
**# use http://www.mfg.com to get the part manufactured from the CAD file. Will take between a week to 10 days.
 +
** We thank Abhishek Bhatkhande for making the CAD model from the bracket design.
 +
* Screws:
 +
** Four M2x4 (2mm diameter, 4mm length) to connect the servo to the bracket.
 +
** Two M3x6 or M3x8 to connect the UTM to the bracket.
 +
** Longer screws will require washers.
 +
 +
==== Power ====
 +
[[Image:robotis-servo-power.jpg|thumb| Image showing how we power the Robotis servos and connect to the USB2Dynamixel converter.]]
 +
The image on the right shows how we power the Robotis servos and connect to the USB2Dynamixel converter.
 +
* The block labeled 12V is a power supply that takes unregulated 24V as input (red and white cables ending in a connector) and gives 12V regulated as output. Regulated power is not required for the servos but we also use the same power supply for Hokuyos and so find it convenient. RX28 servos can take between 12V and 16V (I think. Please read the manual to confirm).
 +
* The output of this power block in the image is are the green (GND) and red (12V) wires.
 +
* GND goes to both the USB2Dynamixel and the Robotis servo.
 +
* 12V goes to the servo only. Notice that a cable on the USB2Dynamixel is clipped. This is intentional and is the one that is labeled N/C on the USB2Dynamixel. Connecting 12V to that causes the USB2Dynamixel to burn.
 +
* The rest of the wiring from the USB2Dynamixel is simply straight connections for the RS485 communication.
 +
 +
==== Troubleshooting ====
 +
 +
* The RX28's communicate using RS485 protocol. Ensure that the USB2Dynamixel toggle switch is set to RS485.
  
 
== Code ==
 
== Code ==
 
* ROS (http://www.ros.org)
 
* ROS (http://www.ros.org)
 
*You will need the following ROS packages from our public ROS repository (available at http://code.google.com/p/gt-ros-pkg/wiki/hrl_content_summary)
 
*You will need the following ROS packages from our public ROS repository (available at http://code.google.com/p/gt-ros-pkg/wiki/hrl_content_summary)
*# robotis
+
*# [http://www.ros.org/wiki/robotis robotis]
*# hrl_hokuyo (requires hokuyo_node - http://www.ros.org/wiki/hokuyo_node)
+
*# [http://www.ros.org/wiki/hrl_hokuyo hrl_hokuyo]
*# hrl_tilting_hokuyo
+
*# [http://www.ros.org/wiki/hrl_tilting_hokuyo hrl_tilting_hokuyo]

Latest revision as of 19:38, 20 January 2012

Author

Advait Jain (http://www.cc.gatech.edu/~advait), Advisor: Prof. Charlie Kemp

What this does

Tilting the Hokuyo using a servo and reading back the servo encoder position while getting scans from the Hokuyo allows us to generate a 3D point cloud of the world in front of the robot. We have used this 3D point cloud for object segmentation, door handle detection etc.

We first used this sensor in this paper: EL-E: An Assistive Mobile Manipulator that Autonomously Fetches Objects from Flat Surfaces. Advait Jain and Charles C. Kemp. Autonomous Robots, 2009. This paper and others can be downloaded from the Heathcare Robotics Lab website (http://www.healthcare-robotics.com)


Pictures of the Setup

Hardware

Image of the solidworks part for the bracket to mount the UTM on to the servo.

This is the hardware setup that we use:

  • Tilting servo: Robotis Servo (typically we use RX-28) CrustCrawler
  • This gives a serial interface to control the servo: CrustCrawler
  • Hokuyo UTM. (http://www.acroname.com/robotics/parts/R314-HOKUYO-LASER4.html)
  • Bracket to mount the Hokuyo on to the servo.
    • This is a custom part that we have designed.
    • The solidworks CAD file (utm-servo-bracket.sldprt, utm-servo-bracket.igs). This requires Solidworks 2009.
    • We have taken two routes for making the bracket
      1. buy Aluminium channels from http://mcmastercarr.com and drill the appropriate holes.
      2. use http://www.mfg.com to get the part manufactured from the CAD file. Will take between a week to 10 days.
    • We thank Abhishek Bhatkhande for making the CAD model from the bracket design.
  • Screws:
    • Four M2x4 (2mm diameter, 4mm length) to connect the servo to the bracket.
    • Two M3x6 or M3x8 to connect the UTM to the bracket.
    • Longer screws will require washers.

Power

Image showing how we power the Robotis servos and connect to the USB2Dynamixel converter.

The image on the right shows how we power the Robotis servos and connect to the USB2Dynamixel converter.

  • The block labeled 12V is a power supply that takes unregulated 24V as input (red and white cables ending in a connector) and gives 12V regulated as output. Regulated power is not required for the servos but we also use the same power supply for Hokuyos and so find it convenient. RX28 servos can take between 12V and 16V (I think. Please read the manual to confirm).
  • The output of this power block in the image is are the green (GND) and red (12V) wires.
  • GND goes to both the USB2Dynamixel and the Robotis servo.
  • 12V goes to the servo only. Notice that a cable on the USB2Dynamixel is clipped. This is intentional and is the one that is labeled N/C on the USB2Dynamixel. Connecting 12V to that causes the USB2Dynamixel to burn.
  • The rest of the wiring from the USB2Dynamixel is simply straight connections for the RS485 communication.

Troubleshooting

  • The RX28's communicate using RS485 protocol. Ensure that the USB2Dynamixel toggle switch is set to RS485.

Code