DeneigUS is a robotics project created by seven engineering students at the University of Sherbrooke. The main objective of this projet is to design the proof of concept of an autonomous and electric snowblower (from mechanics to programming, including electrification).
The project is split in 3 repositories.
- https://github.com/lefake/DeneigUS-PCB : For the Altim PCB schematics
- https://github.com/lefake/DeneigUS-GUI : For the angular GUI
- This for the main code
The team implements several tools from ROS Noetic on Ubuntu 20.04 for navigation and control. Also, the control is ensured by a Rapberry Pi 4 with Arduinos and the fusion of several sensors, including GPS and IMU for localization, then sonars for the detection of obstacles while it is snowing. A user Interface is also implemented in HTML to visualize sensor data and error messages.
- Altium: This folder contains the PCB plans of the snowblower created with Altium.
- rospackage: This folder contains all of the programming.
- Follow the instructions on the offical website (ROS Installation)
- If you are not familiar with ROS, we strongly recommend that you do the tutorials (ROS Tutorials)
At the begining of the projet we used CoppeliaSim to simulate the snowblower and test our navigation with ROS. To install the CoppeliaSim simulator in order to use it with ROS, follow these steps:
- Go to the official webstite of Coppelia Robotics and download the free EDU version for Ubuntu 20.04.
- Before configuring the simulator with ROS, you will need to install some libraries:
sudo apt-get install xsltprocpip3 install xmlschema- In the user manual of the simulator, do the ROS Tutorial in Tutorials section, in order to install the ROS Interface plugin. (Setting CoppeliaSim with ROS)
- In your ~/.bashrc, add the following command and replace the path with the location of your CoppeliaSim folder on your system:
export COPPELIASIM_ROOT_DIR=put_your_path_hereThe list of ROS libraries used in the project is as follows:
- Joy (To control the snowblower manually with a remote control)
- Map_server (To generate a static map)
- Costmap_2d (To add obstacles layers to the static map)
- Move_Base_Flex (To load and use Costmap_2d parameters)
- Rosbrige Server (In order to use our web Interface with ROS)
- [Py-Tree_Ros] (http://wiki.ros.org/py_trees_ros) (To make behavior tree for move base flex)
- [Robot_localization] (http://wiki.ros.org/robot_localization) (To fuse sensors)
- [Teb_Local_Planner] (http://wiki.ros.org/teb_local_planner) (Local planner to replace the controller in move base flex)
- To install all ROS libraries needed in one command:
sudo apt-get install ros-noetic-joy ros-noetic-map-server ros-noetic-costmap-2d ros-noetic-move-base-flex ros-noetic-rosbridge-server ros-noetic-py-tree-ros ros-noetic-robot-localization ros-noetic-teb-local-planner- Clone the Range_Sensor_Layer in the src folder of your catkin workspace (we don't need social_navigation_layer and navigation_layers. We use only de Range Layer):
git clone https://github.com/DLu/navigation_layers.git- Install pyserial:
pip3 install pyserial- Install Protobuf: Clone or download the nanoPB library and move the folder into the Arduino's libraries folder (usually ~/snap/arduino/current/Arduino/libraries)
clone https://github.com/nanopb/nanopb.gitIn Arduino IDE, go to Tools/Manage Libraries... and add the following libraries:
- MPU9250 by hideakitai (v.0.4.1). In the file MPU9250.h, add #include "Arduino.h" before #include <Wire.h>
- SparkFun u-blox by SparkFun Electronics (last version)
- Create a new folder named deneigus in your catkin/src
- clone this repo somewhere on your system:
git clone https://github.com/lefake/DeneigUS.git- Make a sym-link of all the files in the git folder to the ros folder:
cp -rs /ABS_GIT_PATH/rospackage/* /ABS_ROS_PATH/catkin/src/deneigus/- Make the setup.sh file executable and run it:
chmod +x setup.sh;./setup.sh- Start ROS:
roscore- Start CoppeliaSim, open the simulation scene in the simulation folder and start the simulation.
- Plug in your remote if you are using manual mode.
- Launch the deneigus launch file:
roslaunch deneigus deneigus.launch- Start ROS:
roscore- Plug in your remote if you are using manual mode.
- Launch the deneigus launch file:
roslaunch deneigus deneigus.launch