This project is built with ROS and Python. This release provides a whole ROS nodes structure that makes a our LOLA robotic platform able to navigate autonomously using RVIZ.
Autonomous.Navigation.mp4
To use this software you must have ROS installed in the platform. We have been using ROS Noetic because our platform runs Ubuntu 20.04. In case that you are runinng Ubuntu 18.04 you have to install ROS Melodic.
In order to install ROS Noetic and necessary dependencies execute the following script:
sudo bash install_noetic_dependencies.shLOLA platform includes an Arduino to communicate with the motors and encoders. In this repository we include, in the Arduino folder, all the libraries we have developed for this communication. To install our software in your Arduino board you just have to follow the following steps:
-
Download the Arduino IDE, https://www.arduino.cc/en/software
-
Download the mcp2515 library needed to make the software work, https://github.com/autowp/arduino-mcp2515/archive/master.zip
-
Install the library as it is represented in this images
- Open, inside the Arduino folder from this repository, the SRE.ino file.
-
Compile the project and verify that everything is working well.
-
Connect the Arduino board to the computer and open a serial monitor. If you get some data back from the Arduino board that means that the installation has been done successfully.
- If it is not working, it might be because you have to select the "Arduino Mega" in the board options and the baudios option has to be at 115200.
In order to create the workspace, execute the following script:
sudo bash create_workspace.shAfter that, you'll need to add de udev rules for the ports. For doing so, execute this script:
- WARNING! THE SCRIPT BELOW WILL REBOOT YOUR SYSTEMsudo bash install_symbolic_link.shTo use this software you must follow the next steps:
Open a terminal
cd ~/lola_navigation_ws
. devel/setup.bash
rosrun lola2_global hwinterface_script_lola2Open another terminal
cd ~/lola_navigation_ws
. devel/setup.bash
roslaunch lola2_global RVIZ_launch.launchWe have to start runing the hwinterface_script_lola2.py first cause if not it will be waiting for the RVIZ_launch.launch to finish. After we launch the hwinterface we launch the RVIZ_launch.launch that will start all the nodes structure that we need to start the navigation.
After this we will see in the screen that RVIZ opens.
The platform will be displayed in a predetermined point in the map, to change that we just have to click in the "2D Pose Estimate" option and click in the map where the platform is located.
Platform.Position.mp4
When we have the platform in where in the real world is we just have to indicate the point where we want the platform to go. To do that we just have to select the "2D Nav Goal" option and click in the map where you want the platform to be. While you click in the map to select the point you have to drag the cursor indicating the orientation that you want the platform to have when it reaches the point.
Select.a.point.mp4
To use this package you must follow the next steps:
- Open a terminal and execute the following commands:
cd ~/lola_navigation_ws
catkin_make
. devel/setup.bash
rosrun lola2_global hwinterface_script_lola2- Open another terminal and execute these commands:
cd ~/lola_navigation_ws
catkin_make
. devel/setup.bash
roslaunch lola2_global lola2_teleop.launch- Open the last terminal and execute the commands:
cd ~/lola_navigation_ws
catkin_make
. devel/setup.bash
roslaunch lola2_global lola2_keyboard.launchTo use this package you must follow the next steps:
- Open a terminal and execute the following commands:
cd ~/lola_navigation_ws
. devel/setup.bash
roslaunch lola2_global basic_lola.launch- Open another terminal and execute these commands:
cd ~/lola_navigation_ws
. devel/setup.bash
roslaunch logitech_f710_joy_ros joy_teleop.laun- Install robot_upstart package:
sudo apt-get install ros-melodic-robot-upstart- Create the system services necessary to run ros nodes on startup:
rosrun robot_upstart install lola2_global/launch/basic_lola.launch --job basic_lola --symlink --logdir tempa
sudo systemctl daemon-reload && sudo systemctl start basic_lola
rosrun robot_upstart install logitech_f710_joy_ros/launch/joy_teleop.launch --job logitech_joy --symlink --logdir tempu
sudo systemctl daemon-reload && sudo systemctl start logitech_joy- Modify the
logitech_joy.servicefile to include a delay such that it does not interfere with the basic lola package during startup:
sudo vim /etc/systemd/system/multi-user.target.wants/logitech_joy.serviceThen add ExecStartPre=/bin/sleep 10 before ExecStart line.
In the project there is a folder called "config" where the parameter files reside. Therer a a lot of parameters and all of them are optimized for our platfor, you are free to modify any of them. The most important ones are:
- 'max_velocity' and 'min_velocity'
- 'yaw_goal_tolerance' and 'xy_goal_tolerance'
- 'occdist_scale'
- 'sim_granularity'
- 'inflation_radius'
- 'cost_scaling_factor'
The best support that you can get is the wiki of ROS http://wiki.ros.org/Documentation For any other additional question, please contact us via gram@uah.es
Right now we have two robotic platforms working perfectly using this software. In the future the idea is to improve the movement and times of the robot, cause sometimes it can take a while to calculate where it is exactly in the map.
Another interesting thing to maybe implement in the future could be moving all this nodes structure to ROS 2 that makes everthing much easier and it could probably improve the efficiency of the platform while navigating.
Jaime Mas Santillán, Francisco Javier Acevedo Rodríguez, Iván Fernández Munilla y Roberto Javier López Sastre.
Right now we continue working in the project to improve it.





