ECE434 Project - ROS
Embedded Linux Class by Mark A. Yoder
Team members: Matt Hummel Garrett Hart
Contents
Grading Template
I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!
09 Executive Summary 09 Packaging 09 Installation Instructions 09 User Instructions 09 Highlights 09 Theory of Operation 09 Work Breakdown 09 Future Work/Conclusions 09 Hackster.io 09 Demo/Poster 00 Not Late Score: 90/100
Executive Summary
The Robot Operating System(ROS) is a large group of open-source software libraries and tools designed for robotic applications. While ROS is called an operting system, it is more accurately described as middleware. ROS includes drivers are algorithms for nearly every possible desired robotics application, including but definitely not limited to:
Network Communication (ros_comm)
Control Systems (ros_control)
Robotic Kinematics (ros_moveit)
Data Structures (ros_msgs)
Logging (ros_logs)
Navigation (ros_navigation)
Data Recording (ros_bag)
Robot Visualization (rviz)
Robot Simulation (gazebo)
Data Visualization (rqt, plot_juggler)
Odometry (ros_odom)
Linear Algebrea (eigen)
Geometric Transforms (tf, tf2)
Action Servers (ros_actionlib)
Standardized Launch (ros_launch)
just to name a very limited selection. Because of it's variety of powerful tools, ROS is used a wide variety of industry applications for intelligent robotics.
The goal of our project is to demonstrate some basic capabilities of ROS on the BeagleBone Black (BBB). While the BBB is not officially a supported platform by ROS, ROS is universal enough to be adapted to most linux-based platforms. For the our purposes, we will be demonstrating motor control over a network and data logging+visualization using ros_comm, ros_log, rqt and ros_bag. We will be using a base operating station(Ubuntu 20.04 machine) with an Xbox gamepad controller as the user interface, while the motor control will be handled by the BBB.
Packaging
WIP
Installation Instructions
The first step in creating a ROS project is installing ROS onto your platform. Unfortunately, ROS does not officially support the BBB and therefore does not have available binaries for installation from a package manager. For this reason, ROS will need to be built from the source code. Instructions to complete this on the debian 10 (buster) installation we used for the BBB can be found at http://wiki.ros.org/noetic/Installation/Source. The version of ROS that will be compatible for compiling on Debian 10 is ros_noetic. Note: compiling ROS took approxiametely 15 hours on the BBB, so plan accordingly.
To set up base station machine, there are binaries available. Using an Ubuntu 20.04 machine, follow the directions at http://wiki.ros.org/noetic/Installation/Ubuntu. The base station can also operate off of Ubuntu 18.04 with ROS Melodic, if preferred.
To configure the ROS network for communication between the base station and the BBB, follow the intructions at http://wiki.ros.org/ROS/Tutorials/MultipleMachines. Specifically, add the following line to ~/.bashrc:
export ROS_MASTER_URI=http://192.168.7.2:11311 //Note: substitute 192.168.7.2 for "bone" if you have configured your /etc/network/interfaces
This way ROS on the base station will recognize the the overarching management node for ROS, roscore, will be on the BBB and they will be able to link. Next, we will need to add create our workspace and add the project code. Repeat these steps on both the BBB and base station:
$: mkdir -p ~/ros_ws/src
$: cd ~/ros_ws
$: catkin_make
$: cd src
$: git clone --Insert git repo--
$: cd ~/ros_ws
$: catkin_make
$: source devel/setup.bash //It is recommended to add this line to ~/.bashrc for ease of repeatability
User Instructions
To run the code, first start roscore on the BBB:
$: roscore //it is recommended to start this in a tmux session, and leave it detached
Then in a separate terminal session, start the BBB motor code:
$: rosrun Motors motors.py
Finally, on the base station with the Xbox controller attached, start the Driver's program:
$: rosrun Xbox xbox.py
Now you can control the motors using the Xbox controller on the base station. On the BBB, you can also view the recorded log files using:
$: roscd log
And finally, you can record and view the joystick data. To view live, on the base station:
$: rqt_plot /commands
To record and then play back a bag file:
$: rosbag record -o <bag-name>.bag /commands
$: rosbag play <bag-name>.bag
Highlights
Here is where you brag about what your project can do.
Include a YouTube demo the audio description.
Theory of Operation
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.
Work Breakdown
List the major tasks in your project and who did what.
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.
Future Work
Suggest addition things that could be done with this project.
Conclusions
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.
Embedded Linux Class by Mark A. Yoder