Skip to content

Worked on creating a self-driving lawnmower through a Katapult Engineering Internship

Notifications You must be signed in to change notification settings

parkersell/Robomower

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Robomower

Goal: Low-cost, self-driven lawn mower with little to no setup.

We envision using Visual SLAM in combination with an IMU for motion blur.

Started with SVO and SVO2, but they are focused primarily on drone SLAM and SVO2 is for testing purposes only http://rpg.ifi.uzh.ch/svo2.html

Next we decided to run Orb Slam, since it has great documentation and usage, even though it might be a bit heavy for the Raspberry Pi.

Current Setup:

Tried:

We have also considered using these systems (found later in the project, and not attempted yet)

Tej and Parker's Update

Unix Password: “ “(it’s one space)

  • Password to get into the computer

Catkin Workspace: catkin_ws

  • There are other workspaces in home that we no longer use
  • Must use catkin_make -j2 to only use 2 cores when making, otherwise Pi will crash at 99% :)

Pi will not Boot unless Program mode is enabled on Teensey or the serial wires are disconnected from the Pi

  • This is because the Teensey sends junk because the serial console is not disabled

Important Links:

Important Terminal Commands:

Realsense Camera: roslaunch realsense2_camera rs_rgbdwide.launch infra_fps:=15

  • Launches Realsense camera node for d435 and 848x480 resolution, outputs infra1, infra2, and depth

ORBSLAM for Realsense: roslaunch orb_slam2_ros stereod435.launch

  • Launches Stereo ORBSLAM for D435

Arduino Serial Node: source /opt/ros/melodic/setup.bash; rosrun rosserial_python serial_node.py /dev/ttyACM0 _baud:=115200

  • Enables communication between teensey and raspberry pi through the USB cable(also called ttyACM0)
  • Compile on S0 port (white and grey wires running from pi to teensey)
  • Must have both ports in use to send and recieve commands from the Pi

Depth Image to Laserscan: roslaunch orb_slam2_ros depthscan.launch

  • Converts D435 Laserscan to depth image
  • In order to convert to Float32: “cd Python” and run “python scan.py”
  • This is so that it can be subscribed to in Arduino

Programming Arduino on PI: Click the Arduino IDE icon on the Desktop

  • Ros.h errors when programming on Windows, thus we compiled the arduino code on the raspberry pi

Useful Stuff:

Image Viewer: rosrun rqt_image_view rqt_image_view

  • Visualizes any published ROS image topics

Rviz: rosrun rviz rviz

  • Visualizes any image, laserscan, or pointcloud topic + more.
  • Does not run on VNC, only runs on physical PI

Rostopic list: rostopic list

  • Lists all published ros topics

TightVNC: vncserver

  • Tightvnc should launch on startup and automatically configure for the connected network. To relaunch run this command

Overclocked: the pi is overclocked at 2GHz

  • This means it could overheat and that's why we display the degrees in Celsius in the top right corner. There is a decimal after the first two integers. For example, with 45277 as the number, it is really 45.277 degrees Celsius.
  • This can be changed in /boot/firmware/usercfg.txt which inherits the config.txt file and keeps it separate for ubuntu’s sake.

Stuff that you probably won’t need:

Kinect Camera: roslaunch freenect_launch freenect.launch

  • Launches kinect camera node
  • Kinect requires power wires to connect to 12V power source

Kinect Orb Slam: roslaunch orb_slam2_ros kinect.launch -Launches RGBD orb slam for kinect

Webcam launch + Orbslam: roslaunch orb_slam2_ros life.launch

  • Launches Monocular camera and ORBSlam

RTabMap:

  • Has its own built in visual odometry
  • Easily implemented with Navigation Stack but maybe less accurate than OrbSlam
  • We didn't do that much testing with it
  • http://wiki.ros.org/rtabmap_ros

Arduino Code:

Hardware.cpp

  • Used to initialize Motors from Motor.h

Movement.cpp

  • Documentation found in the Movement.h file

Subscriber.cpp

  • Used to subscribe to rostopics on the Pi
  • Have fun with the breakfast foods :)

Point.h

  • Used to create a x and y point with Point p = Point(x,y);

robomower.ino

  • All commands can be typed into the ttyS0 serial monitor

PID and Motor was perfected when we got it

Future Improvements:

About

Worked on creating a self-driving lawnmower through a Katapult Engineering Internship

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •