3dof Vs 4dof

0 views
Skip to first unread message

Charise Scrivner

unread,
Aug 3, 2024, 4:11:52 PM8/3/24
to heartmicniablon

I have a three degree-of-freedom (3DOF) end effector which I am currently moving to a point using MoveIt. Imagine it as an arm with a flat plane on the end. I want to position the last link of this end effector at a normal to a curved surface, in order that the planar end meets it properly, with some small (5) deviation allowed. The curved surface is formed from a laser scan that I have already created.

Given that the end effector is only 3DOF, I understand it is fully constrained just by giving the position in x, y and z. When this is done, however, the planar end does not adequately contact this surface, and by nature of its point-end of zero geometry, it can result in positions that are not actually achievable.

One solution seems that multiple planning requests could be sent and the normal achieved would then be evaluated before being accepted or discarded but this seems like an inelegant solution. Ideally, some prescription of the internal joint limits (which dictate the normal of the end effector to the surface) could be sent to MoveIt, along with the end position.

My question, essentially: can I send orientation constraints to MoveIt as well as a position? If not, are there other IK libraries which will do this job? I have had a preliminary search and not found anything which seems sensible.

I have a three degree-of-freedom (3DOF) end effector which I am currently moving to a point using MoveIt. Imagine it as an arm with a flat plane on the end. I want to position the last link of this end effector at a normal to a curved surface,

Sorry, yes I am aware MoveIt is not IK, but for the purposes of sending the movement plans I was having issues with the number of degrees of freedom. I am currently using Trac IK. I found KDL not usable but why is Trac IK also not usable - I guess this could be part of the problem.

RE the 4dof, in reality we have a ball joint which means the normal does not have to be exactly matched. I am happy to be proven wrong and add an extra degree of freedom if required, but it seems that the 5 degrees, on surfaces which are only slightly curved, should be achievable.

I had the idea of seeing if I could get a legged robot teaming with a multirotor drone. The legged robot could be dropped by the drone in an area that is difficult or dangerous to access for people. The drone can act as a forwarder back to the operator, as well as working in concert with the scout to path plan using a photo map taken at the time. There are tons of activities this system could be useful for.

As pointed out to me on discord, ardupilot can not natively control a 6 legged robot due to the limit in servo outputs of 16 (3dof leg - there are 4dof legs too). There is some work done on a quadruped 3DOF leg as part of google summer of code.

I did some research and found the Freenove 6 legged robot for a reasonable price. Freenove have done a good job of documenting their robot and the associated code - even down to including the .dwg files for the laser cut parts.

My thought was to use a lua script to translate skid steer servo commands in to commands that could be understood by the legged robot controller and send them from the autopilot, to the pi and then from the pi to the robot controller. The controller has the freenove arduino program to control the robot leg servos. The pi can then also interject with obstacle avoidance from a camera sensor.

I also designed 3D printed supports for the lower plate because the supplied robot plates are 6mm thick, and for standard stand-offs the thread length is 6.5mm or thereabouts - so no thread to pick up on the lower stand-offs. The 3D printed parts allow me to use longer threaded screws in this joint.

I have an Rpanion 0.9.0 image modded as I need on the rpi 3b - that runs at startup and sends to a specific IP rather than as a wifi access point. This provides passthrough of the ardurover data as well as video out from the rpi camera, in to missionplanner and command of autopilot via missionplanner.

The robot is an educational kit provided with control via an android app (closed) and a processing app which is provided with the source code. The robot is controlled by an arduino mega based board with usb, wifi and remote control connection options.

I have written some python to take servo raw data from the telem messages and pass the pwm values for each channel through an elseif set of loops to select the appropriate output. For now the robot is controlled in fwd-aft and rotate left right. There is no speed control as such so its quite simple, but does the job.as a proof of concept.

yes with what most autopilots support on their output rails you would not have enough outputs but you can also use can node adapters linked below to get up to 32 total servos which i think is the hard limit as of now.
=can-l4-pwm

i wonder if there would be an easier way to ingest what you already have into ardurover? any way thats a very cool project would be so cool and creepy to have 6 legged ardurover and all the benefits it would have.

Most of the less expensive types of VR technology in the past only implemented 3dof, because the process to track rotational movements was easier and less costly than tracking translational movements.

Currently, 6dof enabled VR systems are considerably more expensive than 3dof, but the price is dropping as the technology becomes simpler and cheaper to replicate. Eventually, it is anticipated that most VR experiences will feature 6dof, which allows many more options for VR-based training and simulations.

c80f0f1006
Reply all
Reply to author
Forward
0 new messages