Difference between revisions of "Floor Hugger ROS 1 Indigo"

From wikidb
Jump to: navigation, search
(Installation)
(Phidgets Install and Test)
 
(212 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Overview ==
 
== Overview ==
* [[Overview]]
+
 
== Installation ==
+
The focus of this project is learning ROS, SW architecture, AI algorithms and navigation. ROS is of great value because it allows me to pick and choose what I want to learn and what I want to reuse. The goal is to have fun and keep a recently retired SW architect mind in the game. There is no attempt to make this site of value to anyone else. However, I certainly don't mind if you find it of value.
* [[fitPC2 ubuntu]]
+
 
* [[ROS Installation]]
+
Robot Operating System (ROS) is a software framework for robot software development, providing operating system-like functionality on a heterogenous computer cluster. ROS was originally developed in 2007 under the name switchyard by the Stanford Artificial Intelligence Laboratory in support of the Stanford AI Robot (STAIR) project. As of 2008, development continues primarily at Willow Garage, a robotics research institute/incubator. In 2013 it was picked up by the Open Source Robotics Foundation [http://en.wikipedia.org/wiki/ROS_%28Robot_Operating_System%29 ROS Wikipedia Overview]
 +
 
 +
* [https://robohow.eu/_media/meetings/first-integration-workshop/ros-tutorial.pdf ROS Workshop]
 +
* [[ROS Learnings]] - notes to self about what I want to learn.
 +
* [https://spectrum.ieee.org/automaton/robotics/robotics-software/wizards-of-ros-willow-garage-and-the-making-of-the-robot-operating-system Wizards of ROS: Willow Garage and the Making of the Robot Operating System]
 +
 
 +
== Launch Scripts ==
 +
 
 +
Major SW functionality is tied together with launch scripts.
 +
 
 +
* [[Floor Hugger Launch Scripts]] Scripts that support LIDAR scanning for surveying.
 +
 
 +
== Hardware ==
 +
 
 +
* [[Robot Floor Hugger]]
 +
* [[Floor Hugger Drive Train]]
 +
* [[URDF Representation of Floor Hugger]]
 +
 
 +
== Ubuntu 14.04 LTS Trusty Tahr Install ==
 +
 
 +
* [[ClydeNUC Setup]]
 +
* [[Rainier NUC]]
 +
* [[Ubuntu Tips]]
 +
* [[Linux Wireless]]
 +
* [[NUC Backup]]
 +
* [[Rainier Samba]]
 +
* [[Unrelated Development Tools]]
 +
 
 +
== ROS Overview ==
 +
 
 +
* [http://wiki.ros.org/ROS/Concepts ROS Concepts]
 +
* [http://wiki.ros.org/ROS/Technical%20Overview ROS Technical Overview]
 +
 
 +
== ROS Install ==
 +
 
 +
* [[NUC ROS Install]]
 +
* [[Manage Multiple ROS Installs]]
 +
* [[ROS resources]] (TBD clean these four bullets up)
 +
* [http://wiki.ros.org/ROS/Tutorials Tutorials]
 +
* [http://jbohren.com/articles/gentle-catkin-intro/ Gentle catkin intro]
 +
* [http://comments.gmane.org/gmane.science.robotics.ros.user/2221 multiple computers]
 +
* [[ROS Tools]]
 +
 
 +
== Phidgets Install and Test ==
 +
 
 +
* [[Phidgets Resources]]
 
* [[Phidgets Installation]]
 
* [[Phidgets Installation]]
* [[Phidgets Motor Controller Test]]
+
* [[ROS Phidgets Installation]]
 +
* [[Phidgets Motor Controller Test]] in ROS
 +
* [[Phidgets Motor Encoder]] Test in ROS
 +
* [[Phidgets Motor Encoder Low Level]] Test in ROS
 +
* [[Integrate Motor Controller with Odometry]]
 +
* [[Migrate Phidgets to catkin]]
 +
* [[Calibrate Phidgets Odometry]]
 +
* [[Motor Control 6x Hack for Navigation]]
 +
* [[Adapting SyRoTek Intro to ROS Code]] PID
 +
* [https://index.ros.org/r/phidgets_drivers/#foxy Foxy Phidget Drivers]
 +
 
 +
== Phidgets Motor Controller Rewrite ==
 +
 
 +
I was unable to configure the Phidgets ROS motor control to working with the navigation stack.
 +
Quick experiments
 +
documented in [[Motor_Control_6x_Hack_for_Navigation]] page demonstrated that the motor driver was not
 +
coming up to the requested cmd_vel Twist message speed. This section documents my effort to rewrite
 +
the motor controller driver. It also documents anomalies in the Phidgets ROS odometry node.
 +
 
 +
* [[Robot Dynamics Resources]]
 +
* [[Motor Controller Rewrite]]
 +
** [[motors_go_full.py]] cmd_vel publisher for testing
 +
* [[Using Transforms to Robot Base View]] Not Complete
 +
* [[Phidgets PID]]
 +
** [[Phidgets PID Tuning]]
 +
** [[Creating PID Tuning Graphs]]
 +
** [[Preliminary PID Turning Graphs]]
 +
** [[pid_graph.py]] The Python Script
 +
* [[Odometry Glitches]]
 +
 
 +
== Phidgets Driver New ==
 +
 
 +
* [[ROS Phidgets Driver Insall]]
 +
 
 +
== OpenCV and Test ==
 +
 
 +
* [[OpenCV Installation]]
 +
* [http://docs.opencv.org/doc/tutorials/tutorials.html OpenCV tutorials]
 +
* [https://github.com/Itseez/opencv/tree/2.4/samples/cpp Sample code]
 +
* [[Hough_Color_Stand_Alone]]
 +
* [[CamShift]] stand alone
 +
 
 +
== OpenCV in ROS ==
 +
 
 +
* [[usb_cam]]
 +
* [[Building a Webcam Display]] and building a workspace and packages.
 +
 
 +
== Integrate Above Into a Simple Behavior ==
 +
 
 +
Rotate the robot to follow an object captured in its web cam.
 +
 
 +
* [[Hough_Color_Tracker]]
 +
* [[ROS CamShift]] Tracker
 +
* [[Simple Move]]
 +
* [[PID Move]]
 +
* [[Rotate Using CamShift]] commands
 +
* [[Integrate roslaunch into Roslaunch]]
 +
 
 +
== Teleop Master and Client ==
 +
 
 +
ROS master and client computers were configured to coordinate with publish and subscribe message.
 +
* The master named hood (i5 NUC) is on the floor hugger robot. It subscribes to Twist messages. In one version it publishes video frames and in another it hosts a video streaming server.
 +
* The remote client named adams (atom netbook) is on the desk with a joystick connected to it. It publishes Twist messages. In one version adams subscribes to video frames and in another it captures hood's video stream on a browser. In a third version an iMac was used to capture the stream on its browser.
 +
These approaches were unusable. Adams was too slow to work with video. The iMac was capable. Twist messages where too delayed for effective control. See the following pages. This approach was abandoned in favor of investigating rosbridge.
 +
 
 +
* [[Joystick]]
 +
* [[ROS Teleop]]
 +
* [[Quigley Gerkey Smart]] Keyboard Teleop with Phyton
 +
* [[ROS Multiprocessor Setup]]
 +
* [[ROS Control Teleop from EEE PC]]
 +
* Depreciated - replaced with a launch script: [[ROS Hood Teleop Script]]
 +
* Depreciated - replaced with a launch script: [[ROS Hood Teleop Video Script]]
 +
 
 +
== teleop rosbridge ==
 +
 
 +
* [[ROS Bridge Install]]
 +
* [[ROS Bridge Simple Keyboard]]
 +
* [[ROS Bridge RobotWebTools Keyboard Teleop]]
 +
* [[ROS Video Streaming]]
 +
* [[ROS Bridge RobotWebTools mjpeg Canvas]]
 +
* [[ROS Bridge Joystick]]
 +
* [[ROS Scenario Setups]]
 +
 
 +
== Kinect Notes ==
 +
* [http://answers.ros.org/question/212578/use-kinect-in-ros-jade/ On Jade]
 +
* [[Hood NUC Kinect Install]]
 +
 
 +
== LIDAR ==
 +
 
 +
* [[Hood XV_11 ROS Install]]
 +
* [[Hokuyo URG-04LX-UGo1]]
 +
* [[Setting up the ROS Transforms]]
 +
* [[gmapping with XV_11 using ROS]]
 +
* [[SLAM with XV_11 using ROS]]
 +
* [[Navigation Setup]]
 +
* [[Navigation Power Measurements]]
 +
* [[Navigation Tuning]]
 +
* [[Leverage rviz]]
 +
 
 +
== RealSense ==
 +
 
 +
* [[RealSense Setup]]
 +
 
 +
== Raspberry Pi ==
 +
 
 +
* [[ROS Raspberry Pi Hardware]]
 +
* [[Raspberry Pi Image Install]]
 +
* [[Motot Hat Node Installation]]
 +
* [[ROS Raspberry Pi Demo]]
 +
 
 +
== ROS Presentations ==
 +
 
 +
* Early imaging / follow place-holder
 +
* 2016 overview place-holder
 +
* [[Introduction to ROS Robot Simulator]]
 +
 
 +
== ROS Books ==
 +
 
 +
[[Quigley Gerkey Smart]]
 +
 
 +
== Navigation ==
 +
Notes to self
 +
 
 +
* [http://wiki.ros.org/navigation ROS Navigatoin]
 +
* [http://learn.turtlebot.com TurtleBot Tutorials]
 +
** [http://learn.turtlebot.com/2015/02/01/11/ Map Creation]
 +
** [http://learn.turtlebot.com/2015/02/01/12/ Autonomous]
 +
** [http://learn.turtlebot.com/2015/02/01/13/ Obstacle Avoidance]
 +
** [http://learn.turtlebot.com/2015/02/01/14/ Navigate to Location]
 +
* [http://pulsedlight3d.com Pulsed Light]
 +
* [http://www.hizook.com/blog/2009/12/20/ultra-low-cost-laser-rangefinders-actualized-neato-robotics Neato]
 +
* [http://www.robotshop.com/media/files/PDF/revolds-whitepaper.pdf Revo LDS]
 +
* [http://diydrones.com/profiles/blogs/30-laser-rangefinder Revo LDS]
 +
 
 +
== To Investigate ==
 +
Notes to self
 +
 
 +
* [https://defendtheplanet.net/tag/raspberry-pi-robot-1/ Example ROS Pi Bot]
 +
* [https://github.com/utexas-bwi/bwi_experimental/blob/master/bwi_dashboard/README.md BWI Dashboard]
 +
 
 +
== ROS Robots ==
 +
 
 +
* [[Lentin Joseph's chefbot Code]]
 +
* [[Turtlebot 3 Code]]
 +
* [http://turtlebot3.robotis.com/en/latest/ Turtlebot 3 latest]
 +
* [[Linorobot]] Uses Neato XV-11 LIDAR, Rock Radxa ARM computer board with Ubuntu, Teensy, plus.
 +
 
 +
== Curriculum ==
 +
 
 +
* ETH
 +
** [https://github.com/ethz-asl/ros_best_practices/wiki Best Practices]
 +
** [http://www.rsl.ethz.ch/education-students/lectures/ros.html Lectures]
 +
** [https://www.ethz.ch/content/dam/ethz/special-interest/mavt/robotics-n-intelligent-systems/rsl-dam/ROS2017/lecture4.pdf Lecture 4]
 +
** [https://www.ethz.ch/content/dam/ethz/special-interest/mavt/robotics-n-intelligent-systems/rsl-dam/documents/RobotDynamics2016/RD2016script.pdf Documents]
 +
* Imperial College London - Andrew Davison
 +
** [https://www.doc.ic.ac.uk/~ajd/Robotics/ Robotics Course]
 +
** [https://www.doc.ic.ac.uk/~ajd/Robotics/RoboticsResources/lecture2.pdf Robot Motion]
 +
 
 +
* [https://www.cs.hmc.edu/twiki/bin/view/Robotics/RobotReasoning2012 From Harvey Mudd CS]
 +
** [https://www.cs.hmc.edu/twiki/bin/view/Robotics/RobotReasoningLabsForGCC Labs]
 +
** [https://www.cs.hmc.edu/twiki/bin/view/Robotics/PythonCrashCourse HMC Crash Course]
 +
** [https://www.cs.hmc.edu/~dodds/ROSatSIGCSE2013/ SIGCSE Workshop]
 +
 
 +
== ROS on Intel Edison ==
 +
 
 +
* [http://wiki.ros.org/wiki/edison ROS on Intel Edison]
 +
 
 +
 
 +
== Python ==
 +
 
 +
* [http://learn.turtlebot.com/2015/02/01/10/ Writing a TurtleBot Script] from Learn TurtleBot and ROS
 +
* [https://www.cs.hmc.edu/twiki/bin/view/Robotics/PythonCrashCourse HMC Crash Course]

Latest revision as of 10:38, 11 May 2021

Overview

The focus of this project is learning ROS, SW architecture, AI algorithms and navigation. ROS is of great value because it allows me to pick and choose what I want to learn and what I want to reuse. The goal is to have fun and keep a recently retired SW architect mind in the game. There is no attempt to make this site of value to anyone else. However, I certainly don't mind if you find it of value.

Robot Operating System (ROS) is a software framework for robot software development, providing operating system-like functionality on a heterogenous computer cluster. ROS was originally developed in 2007 under the name switchyard by the Stanford Artificial Intelligence Laboratory in support of the Stanford AI Robot (STAIR) project. As of 2008, development continues primarily at Willow Garage, a robotics research institute/incubator. In 2013 it was picked up by the Open Source Robotics Foundation ROS Wikipedia Overview

Launch Scripts

Major SW functionality is tied together with launch scripts.

Hardware

Ubuntu 14.04 LTS Trusty Tahr Install

ROS Overview

ROS Install

Phidgets Install and Test

Phidgets Motor Controller Rewrite

I was unable to configure the Phidgets ROS motor control to working with the navigation stack. Quick experiments documented in Motor_Control_6x_Hack_for_Navigation page demonstrated that the motor driver was not coming up to the requested cmd_vel Twist message speed. This section documents my effort to rewrite the motor controller driver. It also documents anomalies in the Phidgets ROS odometry node.

Phidgets Driver New

OpenCV and Test

OpenCV in ROS

Integrate Above Into a Simple Behavior

Rotate the robot to follow an object captured in its web cam.

Teleop Master and Client

ROS master and client computers were configured to coordinate with publish and subscribe message.

  • The master named hood (i5 NUC) is on the floor hugger robot. It subscribes to Twist messages. In one version it publishes video frames and in another it hosts a video streaming server.
  • The remote client named adams (atom netbook) is on the desk with a joystick connected to it. It publishes Twist messages. In one version adams subscribes to video frames and in another it captures hood's video stream on a browser. In a third version an iMac was used to capture the stream on its browser.

These approaches were unusable. Adams was too slow to work with video. The iMac was capable. Twist messages where too delayed for effective control. See the following pages. This approach was abandoned in favor of investigating rosbridge.

teleop rosbridge

Kinect Notes

LIDAR

RealSense

Raspberry Pi

ROS Presentations

ROS Books

Quigley Gerkey Smart

Navigation

Notes to self

To Investigate

Notes to self

ROS Robots

Curriculum

ROS on Intel Edison


Python