Freedom Robotics
In this tutorial, we will show you how to integrate your Leo Rover with the Freedom Robotics platform.
Freedom's Pilot teleoperation enables extremely low latency (50-200ms round trip) and fully customizable control of your robot - from real-time driving to triggering missions to custom commands for manipulation and navigation.
All in an intuitive-to-use interface designed for tablets, phones, and desktops in the real world, where you need to be able to drop your interface, pick it up, and continue on.
Source: Freedom Robotics
You can use it together with stock Leo Rover UI with only simple steps needed to integrate.
This way, you'll be able to connect to the rover via the Internet from anywhere you want. Together with remote driving functionality, Freedom Robotics allows for data streaming, 3D-mapping visualization, GPS data overlay on the map, and much more.
See more: https://www.freedomrobotics.ai/
What to expect?
After following the tutorial You'll have the ability to control the Leo Rover and gather data from anywhere in the world using Freedom Robotics GUI.
Prerequisites
List of components
- Any Computer with internet connectivity.
- Stock Leo Rover
Software integration
Create an account on the Freedom Robotics website
You can choose either free trial, paid plan or use any dedicated discount code.
Connect to Leo Rover via SSH and connect the robot to the Internet.
New accounts require some customization. Just press GET STARTED button on the left sidebar. Later in this tutorial we will show you how to fully integrate your LeoRover with FreedomRobotics.
If you add any robot to your account accidentally (in the customization or in any other way) don't worry, every device can be deleted from your account in the device options.
Adding new robot to your Account
After logging in, you should see the main menu with an overview of your robots.
Start by clicking the Add Device button, located in the bottom left corner of the screen.
Then, you can choose whether you want to customize your robot, or get a quick installation with some base settings. We will choose the Custom Create option.
No matter what option you chose, the next step is the same. After a short time, we get a custom curl command that will install the Freedom Robotics agent when executed on our rover.
We will run this command in the Leo Rover console, but first, we need to make sure that some things will get installed. To do so, click the Advanced Settings button.
There, look for REMOTE SSH
and WEB RTC
settings and make sure both are
checked.
You can also see if there is install_elements=webrtc
fragment in the generated
command.
Next, you have to run the generated curl command in the LeoRover console. To do so, you have to connect to Leo Rover via ssh, and the robot needs to have an internet connection. If Your Leo Rover is running ROS Noetic change "python" at the end of the copied command to "python3". If You do not remember what ROS Distro Your rover is using, check it with:
echo ${ROS_DISTRO}
Then, just copy-paste the command and press Enter. The installation of the
Freedom Robotics agent will start and you will be asked for the password. Type
in the password (default: raspberry
) and continue the installation.
The installation requires your rover to be connected to the internet and may take a few minutes.
When the installation is complete, the service is installed and will start with every boot of the system. You can close the ssh connection (press ctrl+D) and go back to Freedom Robotics.
If you ran into any installation issues, take a look at the Installation Help guide. If you're still stuck, please reach out
Now, the PROCEED button should be active (if you didn't notice, it was inactive before the installation). Click it.
Now, you will be asked for your robot's name. It can be anything you want, we
will continue with LeoRover
. Enter your robot's name and click the PROCEED
button.
Now, you have to choose the robot's type. If this is your first robot, it's
better to chose from the drop-down list New Type
, and fully configure your
robot. You can also choose any preset if you have already configured any robot
before - settings will be added automatically.
If you choose New Type
, you will be asked for the type's name. Same as with
the robot's name, you can choose anything you want. We will continue with
LeoRobot
. To continue, press PROCEED.
The next step is to choose a group for your robot. The purpose of grouping is to
have devices that will be managed as a unit (e.g. they have the same type, are
in the same area, or are deployed for a specific customer) in one group. You can
choose from already existing groups (if you have added any before), or Create
New Group. We will go with the second option and create a LeoRovers
group.
When you provide the group's name, confirm it with Enter and customization will continue.
Customizing Robots Topics
From now on begins the customization of topics for your Freedom Robotics agent. The steps will be skipped if you have chosen the Quick Create option in the beginning.
The first step is to configure what topics will be allowed to receive commands from Freedom Robotics. This is useful if you want to add commands for buttons on the joystick (e.g make a photo when pressing the square button), or if you want to pilot the robot using the UI joystick in Freedom Robotics. You have 3 options:
- DEFAULT - all topics will be commendable from Freedom Robotics
- CUSTOMIZE - you choose what topics will be commendable
- NONE - no topics will be commendable from Freedom Robotics
If you choose NONE option you won't be able to drive the rover with the Freedom Robotics UI joystick.
We will choose the DEFAULT option and continue by clicking PROCEED.
Then comes customization of the Smart Alerts
. At the time of writing this
tutorial, the customization is not possible and you can choose only the
DEFAULT option.
After this step, adding a new device ends. But we haven't yet configured topics that will be visible in the Freedom Robotics; therefore, we click Go To Device.
Now we see that the device is connected, although not active even though our rover is still turned on. That's because Freedom Robotics doesn't get any info from any topics from the robot. After the configuration, the robot will be visible as active. So now, from the robot's menu, we go to Settings.
In this section, you can actually change the things that we have configured earlier (name, type group, etc.) or even delete the device from the account.
We want to customize topics, so we will go to the Bandwidth section.
Here, you can see all the topics (ROS topics) that are monitored by the
interface. If you have chosen the Quick Create option, the platform listens
to all the topics running on the rover (/*
entry in Included Topics
). It's
better to exclude the ones that are not needed, so if you have it, please delete
the /*
entry.
Now, we will add the topics that are specific to Leo Rover.
To use the basic functionality of the rover, you should include the topics below. These are the topics that will be listened to by the platform:
/camera/image_raw
- this topic provides the main camera image on Freedom Robotics/battery
- this topic will show a battery voltage meter/wheel_odom
- this topic will provide encoders readings/tf
- this topic provides translation vector/diagnostics
- this topic provides diagnostics
/cmd_vel
is published by default so you don't need to add it.
You add the topic to the Bandwidth by clicking Add in the Included Topics
section.
Then, you will have to enter the topic's name and choose the frequency of sending messages from this topic to the Freedom Robotics platform, from the drop-down list.
You can choose not to monitor any of the topics, but keep in mind they won't show in the interface as long they are not in the Included Topics. See more about bandwidth tuning here.
This is how our Included Topics
look in the end.
You can choose different frequencies, but remember that if your configuration will send to much to the platform it may end in lower performance and quality.
Now, if you go to the main menu, you will see that your device is active.
Customizing Pilot tab
When you are in the robots settings, go to the PILOT section.
Now, modify /cmd_vel
MAX ANGULAR VELOCITY
to 60deg/s and
MAX LINEAR VELOCITY
to 0.5m/s - choose the right options from the drop-down
lists. Those values are closer to the real speeds the rover can go.
These parameters will modify the UI joystick scale to the proper realistic values.
Connecting to Leo Rover via Freedom Robotics platform
Start by logging into your Freedom Robotics Account.
Then, in the overview panel, click the ACTIVE devices.
Now, you will see all the active devices. Choose a device that you want to connect to, and on the panel on the right click the GO TO DEVICE button.
Now you are in the Stream mode of the interface where you can see messages from the topics added in the Bandwidth section. You can play with the modes to learn how to navigate in the interface.
To learn more visit this site.
Pilot the rover
When connected to the device, go to the Pilot mode.
You should see a jpeg video stream in the background and UI features. Everyone who is logged to your account can see the same view as a spectator, but only one person can take over the control.
Click Take Over in the upper section of the video stream.
Wait a couple of seconds until the streaming method is changed from JPEG
stream to WebRTC
(you'll see that the notice in the image center changes).
Now you're able to drive the rover with the red joystick. You can also change the speed with the slider on the right of the joystick.
See more on this site.
Examples
Add IMU data streaming
Assemble the IMU module to your Rover and follow the IMU tutorial to enable IMU data streaming to the ROS environment.
Now, connect to your device via Freedom Robotics and go to the device Settings and then go to the Bandwidth section.
Now, add a new topic to Included Topics
.
Include /imu*
topic - this will include all the topics from the imu sensor.
Now, in the Stream
section you can see data from the IMU topics.
Congratulations! IMU data is streaming.
What next?
Our site provides developer resources, where You'll be able to check out more tutorials. Some of them (like line follower and object detection) do not use any additional equipment connected to the rover. Be sure to check them out.