
ROBOT OPERATING SYSTEM (ROS)

The Brain Behind The Operations is The Jetson Nano
Why ROS?
-
Easy connection of component over various types of protocols (IE i2C, wifi, etc) s
-
Packages are easily available and can be available for all types of robotic projects
-
Multiple points for communications in the terms of nodes which can connect wheels, arms, LEDs and other variety of products.
-
ROS knowledge is becoming an increasing skill set as industries are starting to adopt it
Limitations of ROS
-
Steep learning curve to get nodes and different lines of code working properly
-
Resources are available, but figuring out which corresponds to specific needs is a challenge
-
Packages are created for specific robot designs, so any deviation from the intended package's design will require a high level of knowledge of ROS to reconfigure or create new package dependencies
Roscore
Roscore is the main package needed to run ROS. It's main role is to manage the traffic of data passing through the network and ensure the data travels from the appropriate master node to the correct slave node.
​
Rosserial
Rosserial is used to create a communication link over serial connections.
​
Teleop Twist Keyboard
Teleoptwist is the package that acts as the master node for user inputs. The package reads inputs from the keyboard and published the data to the networks with the tag geometry_msgs.
​
Differential Drive
Differential Dirve is the package that reads messages with the geometry_msg tags and converts the movement instructions into actual movements. The package is intended for robots that have a skid steer design verse an ackerman steering type designs like a passenger vehicle. This package also contains the vehicle specifications for the robot like wheel diameter and vehicle size.
​




ATmega32u4 Keyboard Macro
The Atmega32U4 has the unique ability of handling USB peripheral communication compared to most microchips in the Atmega family.
This functionally gave us the opportunity to program the movements of the Robot by specifying the direction and distance of movement via the emulation of the 9 keyboard keys.
Since the intend of the robot was to run the entirety of the track and come back to the start location. The preprogrammed movements were calculated by measuring the distances needed to travel and converted that information to an array of meters per second, time, and direction measurements.
​
Why the Keyboard Macro?
After weeks of trial and error with goal location, we needed a plausible fix for our non-autonomous robot.
​
The software team then decided the best course of action was to preprogram the robot's movements.
​
This was the most realistic course action due to the fact the track layout was already predefined and we could get the robot to run a set of movement controls.
​
​
Automation Steps
Point cloud Generation
​
-
A point cloud is created with the Realsense lidar and stereo camera.
-
The combined data is overlapped to create a 3D model of the surrounding environment.
Virtual Map
​
-
The virtual map is a 2D compression of the 3D point cloud. which results in a black and gray image
-
Black outlines are obstructions and white is a possible pathway.
-
The Virtual map also create a coordinate reference that can be used later to navigate
Goal location
​
-
Using a virtual map as a coordinate reference, Goal locations assign a point in the map for the robot to navigate towards
Combination of Processes (Autonomy)
​
​
-
In theory once all the components are finished and the goal location is set, the Robot will travel to the desired location avoiding any obstacle in its path.
-
The Robot is directed through its travel by ROS' built-in programs that send publish geometry_msgs on the network for the differential_drive package to receive.
​
-
In practice this process was more complicated than it seemed. The issue comes when establishing the paths for the navigation data, Robot's location, and desired Goal location. Multiple scripts(.xml, .bash, .yaml) and programs(C++, python) need to be created and altered to accomplish this task.
-
This process is not for the novice and requires a good understanding of the ROS networks architecture.
-
Although one could accomplished this autonomy without all the difficulties via per-designed robots where others have done of work of establishing the correct data paths.
https://github.com/IntelRealSense/realsense-ros/wiki/SLAM-with-D435i
​
​
Point Cloud
Virtual Map


ROS Gmapping Tool (RVIZ)
