Getting Started with TR3

Slate Robotics
3 min readOct 23, 2021

TR3 is a battery-powered, human-sized robot with two actuated wheels, a 5 degree-of-freedom arm, a parallel gripper, and a 1 degree-of-freedom head. The robot has an on-board computer — a Jetson Xavier NX — as well as an HDMI screen, Intel RealSense RGBD camera, and Lidar sensor in the base.

When you first get your TR3, you’ll find that it’s pretty heavy, so you may want to use something like a dolly to roll it into the place where you’ll be programming. The back two wheels are caster wheels, so if you’re good, you can tilt it back on those and roll it around like that.

Once there, you’ll need to take out the power chord and plug it into a wall for charging. Let it charge for 1–2 hours before beginning.

To get started, simply flip the power switch on the back of the robot to the “on” position, and make sure the emergency stop button is twisted and off. Now is a good time to note the emergency stop button location in the event of a problem with the robot; this button will immediately cut power to the entire robot upon pressing.

Interfacing with the robot

The TR3 heavily leverages the ROS ecosystem, so getting the robot moving will require at-least some cursory ROS knowledge. Each of the actuators within the robot run an embedded ROS node, so it is critical to system functioning.

Once you’ve turned on the robot, you’ll need to login. In your Ubuntu environment, the default username is tr3 and the default password is slaterobotics. It’s very important that you change your password before doing anything else, so go ahead and do that now (open a terminal window, type passwd, and follow the prompt).

To open up all of the TR3 nodes within ROS, you’ll need to open up a terminal and type roslaunch tr3py tr3_node.launch. Once everything is running, you can open up another terminal window and type rostopic list to show all of the available rostopics at your disposal; you’ll find that most everything starts with /tr3/.

Every actuator’s nodes are available under /tr3/<actuator_id>/, and the actuators are named after their location on the robot. b0 and b1 are the actuators for the base; a0 through a4 are the arm actuators (from the shoulder to the wrist, respectively); g0 is the node that controls the gripper; and h1 is the actuator that controls the head tilt.

Each actuator can be controlled using the /tr3/<actuator_id>/control/ rostopics, which include /position, /torque, /velocity, and /voltage. Position, torque, and velocity are relatively self-explanatory, but in the event the last one is not, voltage is simply a direct application of voltage to the motor (it controls the PWM signal sent to the motor driver).

The state of each actuator is published under /tr3/<actuator_id>/state. Do note that these actuators will drift over time, so, once a given joint is in its “zero” position, you will need to publish to /tr3/<actuator_id/reset/position in order to correct for that error and set the position to 0 radians.

The “zero” position for each actuator is as pictured:

You may also use the /tr3/<actuator_id>/stop command as a soft-stop on a given joint. This should be fairly reliable, as each actuator is designed to automatically stop if it loses signal/connection with ROS master, but do note that nothing is as reliable as hitting that big, red, emergency stop button on the robot’s shoulder. The /tr3/stop rostopic can be used to soft-stop all actuators at once. Simply send a False value to release the actuators.

Note the /tr3/arm/pose and /tr3/base/ -related rostopics. These can be used for controlling the arm via inverse kinematics and the base via a diff-drive controller, respectively. You can explore their rostopics by using the info argument.

Lastly, the Lidar can be accessed after executing roslaunch tr3_navigation tr3_navigation.launch and subscribing to the /scan rostopic; and the RGBD camera can be accessed after executing roslaunch realsense2_camera rs_camera.launchvia the /camera/ -related rostopics.

Conclusion

I know this is a lot of stuff to through at you, but this was mostly written as a quick-reference guide — my goal is to hopefully field any questions via the phone or email as I’m more than happy to help. Thanks!

--

--