Difference between revisions of "Floor Hugger ROS 1 Indigo"
(→Installation 702 Eee) |
(→Phidgets Install and Test) |
||
(182 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Overview == | == 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. |
− | * [[ | + | |
− | * [[ROS | + | 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]] | ||
+ | * [[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]] | * [[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 | + | |
− | * [[ | + | 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 == | == Navigation == | ||
+ | Notes to self | ||
* [http://wiki.ros.org/navigation ROS Navigatoin] | * [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.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://www.robotshop.com/media/files/PDF/revolds-whitepaper.pdf Revo LDS] | ||
* [http://diydrones.com/profiles/blogs/30-laser-rangefinder 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:// | + | * [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 11:38, 11 May 2021
Contents
- 1 Overview
- 2 Launch Scripts
- 3 Hardware
- 4 Ubuntu 14.04 LTS Trusty Tahr Install
- 5 ROS Overview
- 6 ROS Install
- 7 Phidgets Install and Test
- 8 Phidgets Motor Controller Rewrite
- 9 Phidgets Driver New
- 10 OpenCV and Test
- 11 OpenCV in ROS
- 12 Integrate Above Into a Simple Behavior
- 13 Teleop Master and Client
- 14 teleop rosbridge
- 15 Kinect Notes
- 16 LIDAR
- 17 RealSense
- 18 Raspberry Pi
- 19 ROS Presentations
- 20 ROS Books
- 21 Navigation
- 22 To Investigate
- 23 ROS Robots
- 24 Curriculum
- 25 ROS on Intel Edison
- 26 Python
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
- ROS Workshop
- ROS Learnings - notes to self about what I want to learn.
- 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
Ubuntu 14.04 LTS Trusty Tahr Install
- ClydeNUC Setup
- Rainier NUC
- Ubuntu Tips
- Linux Wireless
- NUC Backup
- Rainier Samba
- Unrelated Development Tools
ROS Overview
ROS Install
- NUC ROS Install
- Manage Multiple ROS Installs
- ROS resources (TBD clean these four bullets up)
- Tutorials
- Gentle catkin intro
- multiple computers
- ROS Tools
Phidgets Install and Test
- Phidgets Resources
- Phidgets Installation
- 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
- 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
- Odometry Glitches
Phidgets Driver New
OpenCV and Test
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
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
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
Notes to self
To Investigate
Notes to self
ROS Robots
- Lentin Joseph's chefbot Code
- Turtlebot 3 Code
- Turtlebot 3 latest
- Linorobot Uses Neato XV-11 LIDAR, Rock Radxa ARM computer board with Ubuntu, Teensy, plus.
Curriculum
- ETH
- Imperial College London - Andrew Davison
ROS on Intel Edison
Python
- Writing a TurtleBot Script from Learn TurtleBot and ROS
- HMC Crash Course