What we are going to learn
- How to launch turtlesim
- How to remap topics from the terminal in order to move the robot around
List of resources used in this post
- ROS Development Studio (ROSDS) —▸ http://rosds.online
- Robot Ignite Academy –▸ https://www.robotigniteacademy.com
- The question that this post answers –> https://answers.ros.org/question/390930/unable-to-move-the-turtle-in-turtlesim/
- Use the rosject: https://app.theconstructsim.com/#/l/4623f16e/
- ROS2 Tutorials:
- ROS2 Basics in 5 Days (C++): https://app.theconstructsim.com/#/Course/61
- ROS2 Navigation: https://app.theconstructsim.com/#/Course/50
Creating a rosject
In order to learn how to work with turtlesim using ros2, we need to have ros2 installed.
You can use rosject we provide ( https://app.theconstructsim.com/#/l/4623f16e/) or you can create your own rosject. We are going to use The Construct (https://www.theconstruct.ai/) for this tutorial, but if you have ROS2 installed on your own computer, you should be able to do ~everything on your own computer, except this creating a rosject part.
Let’s start by opening The Construct (https://www.theconstruct.ai/) and logging in. You can easily create a free account if you still don’t have one.
Once inside, let’s create My Rosjects and then, Create a new rosject if you decide for this step instead of using the rosject already provided (https://app.theconstructsim.com/#/l/4623f16e/) :
For the rosject, let’s select ROS2 Foxy for the ROS Distro, let’s name the rosject as Turtlesim. You can leave the rosject public. You should see your rosject just as in the example below (although in the picture the name is different)
If you mouse over the recently created rosject, you should see a Run button. Just click that button to launch the rosject.
Launching the turtlesim node using ros2
Now, assuming that you have opened the rosject by clicking the Run button that appears when you hover the mouse on the rosject, we can now open a terminal.
After opening the terminal, we can run the turtlesim just by running the following command:
ros2 run turtlesim turtlesim_node
.The logs you see should be similar to the following:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-user' [INFO] [1641240027.604446440] [turtlesim]: Starting turtlesim with node name /turtlesim [INFO] [1641240027.609126169] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
If we now open the Graphical Tools, we should be able to see the turtlesim.
Moving the turtlesim around with ros2
Now that the simulation is up and running, we should be able to easily move the robot. However, before doing that, we have to list the topics to identify the topic that turtlesim listens to in order to move the robot.
Let’s list the topic by running the following command in a second terminal.
ros2 topic list
The list of topic should be as follows:
/parameter_events /rosout /turtle1/cmd_vel /turtle1/color_sensor /turtle1/pose
The important topis here for the purpose of moving the robot is the /turtle1/cmd_vel one.
If you are used to moving robots with ROS, you may know that by default, the teleop nodes normally publish to the topic named /cmd_vel, but in this case, the robot is listening to a topic with a different name: /turtle1/cmd_vel
How do we solve that then? By mapping /cmd_vel to /turtle1/cmd_vel when launching the teleop node. We can achieve that with the following command, where we specify that we want to the topic:
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args --remap /cmd_vel:=/turtle1/cmd_vel
We should now see the instructions to move the robot around:
This node takes keypresses from the keyboard and publishes them as Twist messages. It works best with a US keyboard layout. --------------------------- Moving around: u i o j k l m , . For Holonomic mode (strafing), hold down the shift key: --------------------------- U I O J K L M < > t : up (+z) b : down (-z) anything else : stop q/z : increase/decrease max speeds by 10% w/x : increase/decrease only linear speed by 10% e/c : increase/decrease only angular speed by 10% CTRL-C to quit currently: speed 0.5 turn 1.0
If we now press u, i or o, for example, we should be able to see the robot moving.
With turtlesim you can do a lot of testing for mobile robots, where you don’t need to worry about x and y velocities, you can also spawn more turtles to simulate more robots.
We hope this little post is helpful for your ROS Learning journey.
Youtube video
So this is the post for today. Remember that we have the live version of this post on YouTube. If you liked the content, please consider subscribing to our youtube channel. We are publishing new content ~every day.
Keep pushing your ROS Learning.
I used the same commands, but the turtle is not moving at all. the terminal is the active window