If there are any good idea for built-in forklift control

Hi, I want to use the built-in forklift model to do some simulation, but there are only differential and holonomic controller for vehicle control. Since the forklift is a single servo model, I cannot simply use these controller. So I try to use dynamic controller to control the forklift’s wheel and swivel joint by setting set_dof_velocity_target and make it move by ackermann cmd. But it is not very smooth. Is there any better idea for the forklift or tricycle model control?

Hello @mkfmarkurt! Thank you for your question. I’ve asked an expert from the dev team to come give you some assistance! They should be replying shortly.

Also the moving direction of forklift model is different from other robot in Isaac, which is moving through y-axis and other robot moving through x-axis. Is there any way to change a model’s it’s coordinate system?

Thank you @mkfmarkurt! I am moving this post over to the Isaac Sim team for further assisstance!

Hi - Sorry for the delay in the response. Let us know if you still having this issue/question with the latest Isaac Sim 2022.2.1 release.

Yes, the issue is still existed

I believe the best option on this model would be a model-based control, where you define the motion dynamics of setting the wheel to a given velocity and orientation, and the resulting linear and angular speeds, then you set drive commands for a target linear/angular velocity, and the model would convert in individual wheel velocities, similar to what the Differential and Holomonic control do for their specific wheelbases.

In relation to this exact forklift robot, we tried to hook up the robot with a differential controller, where we tried to give variable speeds to the front wheels, while keeping the swivel and back wheel passive. The robot did not move as expected, and kept slipping on the floor which had collision physics enabled. It also moved in circles when the zero angular speed was provided to the controller. (Command values checked out as per differential drive, but the motion did not make sense.) Any help would be appreciated here . thanks

Hi @user157722 - So, this document didn’t help to you, right?

Hi !!! The tutorial is a bit incomplete, if further info is needed to make it work physically, control it etc. The jet bot type control through omnigraph is the only example there, which doesn’t seem to work with this one

hello! thanks for letting us know. it would be interesting to see how you defined the wheels and joint commands that were sent. Can you explain a bit further what your code is trying to do?

My expectation for this forklift is that the swivel wheel is the actual driver wheel, and the four wheels in front would be passive. This brings a few challenges for actuating this robot, specially when trying to rotate in place (but vehicles can’t do that either so it’s not the end of the world, we just need to properly define the model, just like an ackerman model is for vehicles), since one cannot decouple forward motion from rotation.

With that in mind - what I would do is create a custom mobile base controller derived from the Wheeled Robots interface (just like the differential and holonomic drives), that takes this specific actuator model into account, so that when a drive command is given, it provides the swivel position and wheel speed to accommodate for the desired trajectory.

Whe provided the code for Differential and Holonomic drives because they are quite common to see in diverse robots, but they also serve as a base of inspiration when a user needs to create their custom drivers. We’ll look into improving the documentation as to how to perform this custom driver, and probably this forklift is a good example to use on that :)

Hi, I am using ROS1 to control a forklift’s movement in IsaacSim. Currently, I have successfully configured the forklift to move forward and backward using the back_wheel_drive. However, I am encountering challenges when trying to rotate the forklift around the z-axis using the back_wheel_swivel.

In my current action graph (see image below), I have set up the back_wheel_drive for forward and backward movement. However, when I send angular velocity via the twist message, the forklift does not rotate; it simply moves forward or backward.

My question is: How can I utilize the back_wheel_swivel effectively to achieve rotational movement for the robot? Do I need to make any modifications to the action graph to enable proper rotation using the back_wheel_swivel?

Thank you for your assistance.