How to Create a URDF File of the WidowX 250 by Interbotix – ROS 2

In this tutorial, I’ll show you how to use ROS 2 and RViz to visualize the WidowX 250 Robot Arm 6DOF by Trossen Robotics (Interbotix).

widowx-250-trossen-robotics

Prerequisites

  • (Optional) You have completed this tutorial in which I build a URDF file from scratch for the myCobot 280 by Elephant Robotics.

Useful Links

Below are some helpful reference links in case you want to learn more about this robotic arm.

Install the interbotix_xsarm_descriptions Package

The first thing we need to do is to install the interbotix_xsarm_descriptions package. You can see the official GitHub repository here, but we will use the apt package manager to install everything as shown below.

cd ~/ros2_ws/src
git clone -b ${ROS_DISTRO} https://github.com/Interbotix/interbotix_ros_manipulators.git
rm -rf interbotix_ros_manipulators/interbotix_ros_xsarms/examples/

I removed the examples package above since it has build dependencies we don’t need right now.

cd ~/ros2_ws/
colcon build
source ~/.bashrc

If you have build issues, do this:

cd ~/ros2_ws/
rm -rf build/ install/ log/
colcon build
source ~/.bashrc

Check to see if the interbotix_xsarm_descriptions is installed.

ros2 pkg list

Visualize the URDF File

To visualize the URDF file, open a terminal window, and make sure the urdf_tutorial ROS 2 package is installed.

sudo apt-get install ros-${ROS_DISTRO}-urdf-tutorial

Now visualize the URDF.

ros2 launch urdf_tutorial display.launch.py model:=/home/ubuntu/ros2_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions/urdf/wx250s.urdf.xacro

Under Global Options on the upper left panel of RViz, change the Fixed Frame from base_link to wx250s/base_link.

widowx-250-rviz-1

You can untick the TF option to see the URDF more clearly.

You can use the Joint State Publisher GUI pop-up window to move the links around.

If you want to see the URDF file, go the following link (all of this block is a single command):

cd ~/ros2_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions/urdf/wx250s.urdf.xacro

That’s it!

How to Create a URDF File of the Gen3 Lite by Kinova – ROS 2

In this tutorial, I’ll show you how to use ROS 2 and RViz to visualize the Gen3 Lite Robot by Kinova Robotics.

gen-3-lite-kinova

Prerequisites

  • (Optional) You have completed this tutorial in which I build a URDF file from scratch for the myCobot 280 by Elephant Robotics.

Useful Links

Here is my GitHub repository for this robotic arm. All the files we will create in this tutorial are also stored there.

Below are some helpful reference links in case you want to learn more about this robotic arm.

Install the kortex_description Package

The first thing we need to do is to install the kortex_description package. You can see the official GitHub repository here, but we will use the apt package manager to install everything as shown below.

sudo apt-get update
sudo apt-get install ros-$ROS_DISTRO-kortex-description

Create a Package

Create a new package called kinova_robot_arm.

In this package, we will create a basic version of the Gen 3 Lite robotic arm made by Kinova Robotics.

Open a new terminal window, and create a new folder named kinova_robot_arm.

cd ~/ros2_ws/src
mkdir kinova_robot_arm
cd kinova_robot_arm

Now create the package where we will store our URDF file.

ros2 pkg create --build-type ament_cmake --license BSD-3-Clause kinova_robot_arm_description
cd kinova_robot_arm_description
mkdir urdf
gedit package.xml

Make your package.xml file look like this:

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>kinova_robot_arm_description</name>
  <version>0.0.0</version>
  <description>Xacro and URDF files for the Gen3 Lite Robotic arm by Kinova Robotics.</description>
  <maintainer email="automaticaddison@todo.com">Addison Sears-Collins</maintainer>
  <license>BSD-3-Clause</license>

  <buildtool_depend>ament_cmake</buildtool_depend>
  
  <exec_depend>kortex_description</exec_depend>

  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>
gedit CMakeLists.txt

Make sure CMakeLists.txt looks like this:

cmake_minimum_required(VERSION 3.8)
project(kinova_robot_arm_description)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(kortex_description REQUIRED)

# Copy necessary files to designated locations in the project
install (
  DIRECTORY urdf
  DESTINATION share/${PROJECT_NAME}
)

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # comment the line when a copyright and license is added to all source files
  set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # comment the line when this package is in a git repo and when
  # a copyright and license is added to all source files
  set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()

ament_package()

Create a metapackage.

cd  ~/ros2_ws/src/kinova_robot_arm/

I discuss the purpose of a metapackage in this post.

ros2 pkg create --build-type ament_cmake --license BSD-3-Clause kinova_robot_arm
cd ur_robotiq
rm -rf src/ include/
gedit package.xml

Make your package.xml file look like this:

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>kinova_robot_arm</name>
  <version>0.0.0</version>
  <description>Automatic Addison support for the Gen3 Lite Robotic arm by Kinova Robotics (metapackage).</description>
  <maintainer email="automaticaddison@todo.com">Addison Sears-Collins</maintainer>
  <license>BSD-3-Clause</license>

  <buildtool_depend>ament_cmake</buildtool_depend>
  
  <exec_depend>kinova_robot_arm_description</exec_depend>

  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>
gedit CMakeLists.txt

Make sure CMakeLists.txt looks like this:

cmake_minimum_required(VERSION 3.8)
project(kinova_robot_arm)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
# find_package(<dependency> REQUIRED)

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # comment the line when a copyright and license is added to all source files
  set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # comment the line when this package is in a git repo and when
  # a copyright and license is added to all source files
  set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()

ament_package()

Add a README.md:

gedit README.md

I also recommend adding placeholder README.md files to the kinova_robot_arm folder as well as the kinova_robot_arm_description folder.

Now let’s build our new package:

cd ~/ros2_ws

Run this command to install any missing dependencies for your package.

rosdep install --from-paths src --ignore-src -r -y 

Now build the package.

colcon build 

Let’s see if our new package is recognized by ROS 2.

Either open a new terminal window or source the bashrc file like this:

source ~/.bashrc
ros2 pkg list

You can see the newly created package right there at the top.

Create the URDF Files

Create a new urdf folder.

mkdir -p ~/ros2_ws/src/kinova_robot_arm/kinova_robot_arm_description/urdf/
cd kinova_robot_arm

(if you are using Visual Studio Code, type the following…otherwise just create the XACRO file below)

code . 

Create new files inside the ~/ros2_ws/src/kinova_robot_arm/kinova_robot_arm_description/urdf/ folder called:

Now let’s build our new package:

cd ~/ros2_ws
colcon build 
source ~/.bashrc

Visualize the URDF Files

Let’s see the URDF files in RViz first.

All of this is a single command below.

ros2 launch urdf_tutorial display.launch.py model:=/home/ubuntu/ros2_ws/src/kinova_robot_arm/kinova_robot_arm_description/urdf/gen3_lite_gen3_lite_2f.xacro

Under Global Options on the upper left panel of RViz, change the Fixed Frame from base_link to world.

By convention, the red axis is the x-axis, the green axis in the y-axis, and the blue axis is the z-axis.

1-robotic-arm-gen3-lite

You can use the Joint State Publisher GUI pop-up window to move the links around.

Open a new terminal window, and type the following command.

cd ~/Downloads/
ros2 run tf2_tools view_frames

To see the coordinate frames, type:

evince your_file_name.pdf

To close RViz, press CTRL + C.

The Secret to Tech Startup Success: Speed and Simplicity

Summary

Winning technology companies become winners and remain winners by satisfying human desires with greater SPEED and/or SIMPLICITY than those who came before them. Those who keep that in mind will profit immensely. Those who lose sight of that will have problems.

If you are running a tech startup, remember that to win over the long haul, you must satisfy human desires with greater speed and/or simplicity than current market leaders. The easiest way to do that is to take a human desire…one that has been around for a long time…and make it more easily attainable by using technology to remove steps from what people are currently doing to satisfy that desire.

Entrepreneurs are professional step removers.

Bottom Line: Help people get what they want faster and/or more simply, and profit immensely.

Introduction

In the realm of technology and innovation, Ev Williams, a co-founder of Twitter and Medium, has articulated a compelling formula for achieving wealth and success: eliminate unnecessary steps in everyday tasks. This principle of simplifying processes to their most efficient forms is not just a strategy but a philosophy that has propelled companies like Uber, Google, and Amazon to unprecedented heights of success and influence. These tech giants have mastered the art of providing unparalleled convenience and ease, essentially by adhering to two fundamental tenets: speed and cognitive ease. By understanding and harnessing the power of these elements, they’ve managed to tap into long-standing human desires, making them more accessible through modern technology.

This blog post aims to delve deep into the concept that Williams highlighted, exploring how the simplicity and speed in technology can serve as a golden ticket to startup success. By examining the trajectories of Uber, Google, and Amazon as illustrative examples, we will uncover the underlying principles that any tech startup can adopt to achieve similar success. Additionally, we will offer actionable insights and strategies for integrating these principles into the fabric of emerging technology ventures.

The Human Desire for Convenience

The quest for convenience is as old as humanity itself. From the invention of the wheel to the creation of the internet, each technological breakthrough has been driven by a desire to make life easier, more efficient, and more enjoyable.

In the pre-digital age, innovations were primarily focused on physical labor and time reduction. However, as we transitioned into the digital era, the focus shifted towards cognitive ease and speed of access.

This shift is rooted in our inherent desire for instant gratification—a trait that has been significantly amplified by the internet and mobile technology. Today, we live in a world where the expectation is not just for things to be easier, but for them to be instantaneously accessible. The success stories of tech giants like Uber, Google, and Amazon are a testament to this evolution. By identifying and eliminating friction points in everyday activities, these companies have not only satisfied but exceeded the modern consumer’s expectations for convenience.

The Philosophy of Simplification

Humans are wired to seek convenience and efficiency. This innate desire has been the driving force behind many technological advancements throughout history. In the digital age, this pursuit has taken on a new dimension, with simplicity and speed becoming paramount in product design and service delivery. The psychological underpinning of this trend is straightforward: the less effort the brain has to make to achieve a desired outcome, the more appealing that pathway becomes. Simplification, therefore, is not just a design principle but a strategic approach to capturing and retaining user interest and loyalty.

Case Studies

Uber

Uber transformed the transportation industry by removing the friction involved in hailing a taxi. By introducing a simple app that connects drivers with passengers, Uber made it possible to secure a ride with just a few taps on a smartphone. This convenience, coupled with transparent pricing and payment, epitomizes the power of removing unnecessary steps to meet a fundamental human need: getting from point A to B efficiently.

Google

Google’s mission to organize the world’s information and make it universally accessible and useful is a testament to the power of simplicity. With a clean interface and a sophisticated algorithm, Google has made it incredibly easy for users to find information on the internet quickly. This focus on speed and ease of use has made Google the go-to search engine for billions of people worldwide.

Amazon

Amazon has revolutionized the retail industry by making online shopping as easy and convenient as possible. From one-click purchases to same-day delivery options, Amazon has continually focused on reducing the barriers to online shopping, fulfilling the human desire for immediate gratification and hassle-free transactions.

Practical Steps for Startups

For startups looking to replicate the success of giants like Uber, Google, and Amazon, the key lies in identifying common activities or pain points that can be simplified. This involves a deep understanding of the target audience and a commitment to designing with the user experience in mind. Continuous improvement based on user feedback is also crucial, as it helps refine the product or service to better meet the needs of the market.

Challenges and Considerations

While simplicity and speed are powerful drivers of success, they are not without their challenges. Startups must carefully balance the quest for simplicity with the need to provide a comprehensive and functional product. Over-simplification can lead to a loss of valuable features or fail to meet users’ needs effectively.

Conclusion

The secret to tech startup success lies in understanding and applying the principle of removing unnecessary steps to make common activities faster and easier. By focusing on speed and simplicity, startups can create products and services that resonate deeply with users, fulfilling their desires in the most efficient way possible. As the tech landscape continues to evolve, the startups that prioritize the user’s ease and convenience will be the ones that stand out and succeed in the crowded marketplace.