03 July 2020

SRC2 - Explicit Steering - Crab, Straight, and Pivot Movements

SRC2 Rover
This is the third in a series of post about my involvement with the qualifying round of the NASA Space Robotics Challenge - Phase 2 (SRC2). The first post introduced the basics of the competition. One aspect of the challenge is there is no controller for the rover depicted to the right. It uses Explicit Four Wheel Steering which allows the orientation of the wheels to be independently changed. This provides multiple ways for the rover to move, e.g. straight, crab, turn, pivot.

The second post explored the geometry on positioning the wheels for a turn. This post will address pivoting in place and crab movement, i.e. moving sideways. It also addresses the trivial crab case of moving straight forward or back. 


Pivoting is changing the orientation of the rover without changing the location. The diagram below demonstrates the wheel orientation for pivoting. In the diagram note the orientation of the axis, which is ROS standard for robots. Also, the ROS standard for rotation is counterclockwise, i.e. the direction shown in the diagram.
Explicit Steering - Rover Pivoting




 Instantaneous Center of Rotation


 Radius from ICR to center of rover


 Radius of  rover's inner (i) and outer (o) sides through ICR

 Wb, Wt

 Wheel base and wheel track of rover. Lengths are representative of actual size.

 WRi, WRo

 Radius of inner(i) and outer (o) wheels


 Steering angle for inner (i) and outer (o) wheels

The equations from the previous article are the basis for calculating the wheel steering angles. These simplify because the Instantaneous Center of Rotation (ICR) is at the center of the rover, i.e. where the diagonal lines cross. 

In the equations, Rr becomes zero leaving Ro and Ri as ±Mt/2. The calculation of the actual angle simply become the arc tangent of the sides as in the next equation. Then it is just a matter of getting the signs for the angles sorted out. 

Since the size of the rover is constant it is possible to calculate the pivot angles during compilation to avoid run time calculation. 

Crab and Straight Movement

The steering orientation for all wheels is the same in a crab movement as shown in the diagram. Clearly for moving straight the steering angle is zero. 
Explicit Steering - Rover Crab Movement

The angle is determined by the speed or effort in the X and Y directions. Again the arc tangent of these values provides the angle. 

A conscious decision was made, for two reasons, not to investigate turning while doing a crab movement. First, it would mean each wheel would have a unique orientation. Bluntly, the complications in determining those orientations and the speeds of those wheels (covered in a later post) was off-putting

The second reason is more pragmatic. The SRC2 rover can only sense obstacles in front of the rover. Moving to the side in a crab movement risks collisions with obstacles unless over means can assure a clear path. While some circumstances may require  and allow a simple crab movement doing a turn at the same time seems imprudent. 


Implementing these calculation requires careful checking on how the programming language implements the arc tangent function. Some languages provide an arctan2(m, n) form which provides the quadrant of the angle usually through a signed output. The order of the arguments determines the quadrant. The expected ordering varies among languages.  

This wraps up the first three articles on determining the steering angles for the wheels. 

No comments:

Post a Comment

SRC2 - Explicit Steering - Wheel Speed

SRC2 Rover This fourth post about the  qualifying round of the NASA  Space Robotics Challenge - Phase 2  (SRC2) addresses t he speed of the ...