ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
2

using cmd_vel and navigation stack for our robot

asked 2013-05-06 20:24:01 -0500

fersarr gravatar image

updated 2013-05-06 20:28:05 -0500

Hi! We have our own robot which has two wheels in the back (each one with an independent motor) and one free wheel on the front. It can already accept commands to move a certain distance forwards or backwards or to move at a certain speed. It can also be told to spin at a certain velocity (one wheel goes backwards and the other forwards, differential). For odometry we have the encoders plus visual odometry from a kinect using ccny_rgbd. That is already working.

Now we are looking up the NAVIGATION STACK and trying to see if we can use it: The tutorial states that our robot has to be able to accept messages on topic /cmd_vel of type "twist". These messages contain linear velocities Vx and Vy and angular velocities Vtheta.

In the case of our robot, for example, if it is looking towards the x-axis, it has to spin before it can have a a Vy velocity. To have them both at the same time would require calculating the different speeds needed in each wheel to have them both Vx and Vy at the same time. Any suggestions, help?

How about having all three of these velocities at the same time. Is that possible? Or are the messages coming out of the navigation stack supposed to contain all zeros but one of the three componentes?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
4

answered 2013-05-06 20:51:24 -0500

Ernest gravatar image

updated 2013-05-06 20:51:42 -0500

It sounds like you have a non-holonomic robot, so you can set the holonomic_robot param of the base_local_planner node to false to make sure that it won't output cmd_vel messages that your robot won't be able to perform.

edit flag offensive delete link more

Comments

wow, awesome, thanks! That's all I needed to hear (wish I hadn't missed it in the tutorials). Thanks!

fersarr gravatar image fersarr  ( 2013-05-06 20:54:27 -0500 )edit

no worries!

Ernest gravatar image Ernest  ( 2013-05-06 20:56:20 -0500 )edit

can you tell me how are you controlling the motors I have written the following code in arduino but its not efficient can you suggest any changes? https://github.com/Dhagash4/autonavi/...

Dhagash Desai gravatar image Dhagash Desai  ( 2018-09-27 09:04:43 -0500 )edit
0

answered 2018-08-07 05:51:20 -0500

joaoquintas gravatar image

updated 2018-08-07 05:52:12 -0500

I was dealing with the same doubt and found a reference that was very helpful to clarify this issue, in terms of mobile robotics fundamentals. CS 3630 Lecture Notes on Pose and Orientation, Frank Dellaert, January 17, 2014

Summarizing the main points:

  • you have built a differential robot (as also mentioned in the topic question)
  • a differential robot does not allow sideways velocity (non-holomic robot), so vy=0
  • assuming you would work with the /cmd_vel of type geometry_msg/Twist I would suggest to use:

    Vx=(v/w)sin(w),

    Vy=(v/w)(1-cos(w)),

    Vtheta=w

, where v is your desired linear velocity and w your angular velocity.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2013-05-06 20:24:01 -0500

Seen: 1,856 times

Last updated: Aug 07 '18