1. Do not share user accounts! Any account that is shared by another person will be blocked and closed. This means: we will close not only the account that is shared, but also the main account of the user who uses another person's account. We have the ability to detect account sharing, so please do not try to cheat the system. This action will take place on 04/18/2023. Read all forum rules.
    Dismiss Notice
  2. For downloading SimTools plugins you need a Download Package. Get it with virtual coins that you receive for forum activity or Buy Download Package - We have a zero Spam tolerance so read our forum rules first.

    Buy Now a Download Plan!
  3. Do not try to cheat our system and do not post an unnecessary amount of useless posts only to earn credits here. We have a zero spam tolerance policy and this will cause a ban of your user account. Otherwise we wish you a pleasant stay here! Read the forum rules
  4. We have a few rules which you need to read and accept before posting anything here! Following these rules will keep the forum clean and your stay pleasant. Do not follow these rules can lead to permanent exclusion from this website: Read the forum rules.
    Are you a company? Read our company rules

6 DOF from scratch

Discussion in 'DIY Motion Simulator Projects' started by Pierre Lalancette, Dec 18, 2016.

  1. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,868
    Location:
    Portugal
    Balance:
    14,203Coins
    Ratings:
    +2,181 / 16 / -0
    My Motion Simulator:
    6DOF

    The PID adjustments in the interface, where just for my rig.
    I calculate speed on the PC, not on the boards.
    SMC calculates PID on the boards.
    That's the reason it's disabled for modes different from FlyPT.

    Filters...
    You can apply filters in the pose components and in the actuators output.
    For example, in LFS I want to make heave smoother, because I think it's to harsh, I apply a low pass filter to heave.
    When I calculate the actuators position, it's for the filtered pose.

    After calculating the actuators position, I can then apply a filter to the actuators.
    Resuming, if I apply a filter on the actuators, it's almost like applying a filter to all pose components.
    While filters in the pose are specific for those components, like heave.
    If you think the rig is moving to much and are afraid of breaking it, make a low pass filter on the actuators, with a low value. It softens the rig.

    What the graphics show, is the actuators only, not pose. So you can't see the result of applying the filter to the pose (the new version to be released of the interface has also graphics for pose components).
    The graphics also show in blue, the current position received from the boards, but that's only for the FlyPT rig. Same with speed in red.
    I should remove it from the interface, but I thought that leaving it there, could help understand PID values.
    Also, from last version, it's already possible to send speed and receive position on custom serial besides the FlyPT rig.
    But I have to make an example Arduino code to show how to implement it in the boards
    • Informative Informative x 2
    • Like Like x 1
    Last edited: Feb 13, 2019
  2. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    I will have to measure. I know that I had 203.2 mm of heave.
  3. SilentChill

    SilentChill Problem Maker

    Joined:
    Jul 19, 2014
    Messages:
    2,619
    Occupation:
    Railway Maintenance
    Location:
    Morecambe, Lancashire, England
    Balance:
    20,399Coins
    Ratings:
    +3,480 / 34 / -0
    My Motion Simulator:
    DC motor, Arduino, Motion platform, 6DOF
    So you need to set the range to your range between limit switches and then you need to scale it correctly so the rig moves the right amount of millimetres as it should when moving the sliders

    This correct @pmvcda ?
    • Agree Agree x 1
  4. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,868
    Location:
    Portugal
    Balance:
    14,203Coins
    Ratings:
    +2,181 / 16 / -0
    My Motion Simulator:
    6DOF
    We have two kinds of ranges.

    -Actuator range:
    That's the distance the actuator goes up or down, from it's middle.
    Imagine your actuator has 600 mm total range.
    In the interface, range should be half that value if you set middle of the actuator at 300 mm.
    Range would be 300 mm up or 300 mm down.
    You can say that middle is 200 mm in the same actuator and then you would have to set range to 200 mm, because you only have 200 mm to go down while you have 400 to go up.
    You have to use the lowest one.
    We should use the middle to allow equal range up and down and the most possible amplitude of movements in all directions and rotations of the rig.
    The actuator range is set on the window with the rig dimensions.
    Now, if in the above 300 mm range we activate the limit switches at 300 mm, it will make the rig stop in case of the SMC3. So you should use something like 280 mm, giving 20 mm gap.
    With this the actuator will work on that range (280 mm) and won't activate the limit switches, unless something went wrong with pots, mechanically or an excessive load.
    Actuator range is the absolute limit of the rig. When I send the rig down to lowest position, I request the actuators to go to the lowest range, in this case that would be -300 mm (or-280 mm with the gap).

    -Pose ranges:
    Pose ranges affect the components of the pose.
    Let's say, I keep my actuators with 280 mm range.
    And I set heave range to 100 mm.
    What I'm making is saying that heave can only go up 100 mm or down 100 mm.
    You can also say that heave range is 1000 mm.
    But then you have the actuator range that limits movement and you receive the message out of limits.
    The position where we have heave=0 mm is calculated by the rig dimensions and the middle of the actuator.
    In the interface, there's a default height value. That value is the vertical distance from the bottom joints to the top joints when the actuators are at the middle range (it's just for info, not editable).
    It changes if you change the middle of the actuators or the general dimensions, not the ranges.
    But why don't we use big ranges in the poses?
    Imagine we use 300 mm range in heave and 45º in roll. We would reach actuators limits really fast , receiving the out of limits message.
    The out of limits message is saying to you that the pose you want is impossible to produce with the rig dimensions you specified.
    You must understand that those ranges are proportional to the values in Simtools tuning center.
    Again for heave: If you have -10 to 10 value in Simtools tuning center for heave and 100 mm range in the interface, the values will be mapped.
    Zero in Simttols will be zero in the interface. -10 in Simtools will be -100 mm in the interface and so on...

    And scale?
    Well, scale is to achieve a correlation between the value displayed in the interface and the real movement.
    The interface doesn't know the relation between the pot's read and distance travelled in the actuator. It depends on pots and pulleys.
    So the interface needs a value to convert and apply a scale on the final output.
    To get that value, put scale=1 and heave range=100.
    Move heave to zero and measure height from floor to a reference point in the top structure of the rig.
    Now move heave to maximum value (the 100 mm) and measure again.
    Calculate the difference between the two.
    For example:
    With heave=0, height=820 mm
    With heave=100, height=1030 mm
    Difference is 1030-820=210 mm
    Instead of 100 mm it travelled 210 mm.
    So scale should be 100/210=0.477

    It should work like that. If different then there's something wrong. Or I might be forgetting something...
    • Informative Informative x 2
    Last edited: Feb 13, 2019
  5. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    I had measure the height of the rig and compared it to the heave value when moved to the lowest postion. There was a difference of a few cm. I tried to change it with the Step Per Revolution, but could not obtain any change in the mesure. I did not try the scale value yet. Since I had so many other things to calibrate, I decide it was not that important. It made the distance shorter and the rig was safer, so I did not bother about the exact scale. I will get back to it later and I'll try to make it spot on measurements.
  6. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    Since I am stuck away from my sim, making money for it, I decide to revisit all my thread, looking at important moments. What a blast. I think I reached a millstone lately, and I just wanted to thanks all the people that helped me, even when they thought I couldn't do it (admit it). For all the help, the advises, the warning, the cheer up, the likes, and the death threats, thank you!

    @noorbeast
    @SilentChill
    @Tim McGuire
    @paulg100
    @Nick Moxley
    @Blame73
    @shannonb1
    @adgun
    @insanegr
    @speedy
    @xytras
    @RandomCoder
    @judges
    @OZHEAT
    @SeatTime
    @Mmcool
    @delcarlo
    @kermitkong
    @Wagnard
    @Hoddem
    @baykah
    @Snipe3000
    @Zed
    @MB
    @insanegr
    @mariano68
    @SixDegreesOfFlight
    @MarkusB
    @hooshang
    @Grizus
    @wannabeaflyer2
    @kermitkong
    @My.stAr
    @llluis
    @bruce stephen
    @haribole
    @Flymen
    @Thanos
    @Jerry Atrick
    @BlazinH
    @dododge
    @lromaniuk
    @Bongo
    @pmvcda
    @Gadget999
    @value1
    @Gabor Pittner

    If I forgot someone, please, tell me so and I'll add it.
    • Like Like x 3
    • Winner Winner x 2
    • Friendly Friendly x 2
  7. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    Not much of a update, but still.

    I removed the yaw in my force as recommended by @yobuddy . It felt really different and I even reverse the extra force 1. But I forgot to set my center of force to fit my seat position. Did not have much time to test this weekend. My forces are still quite low. Its was good, because the number of time I hit the wall at an impressive speed, I would have destroy something. Still so much to calibrate.

    setting_02.jpg

    Last week I got a package.

    IMG_2201.JPG

    It was panic buttons. The one I get from my local supplier were pretty bad. I got better one.

    IMG_2202.JPG

    This week, I got 2 packages.

    IMG_2208.JPG

    One is a keyboard with a tracking pad, so I never get one my rig without a keyboard and a mouse. The other one is a tool to mix 3M epoxy tubes. No more mess with a scale.

    IMG_2209.JPG

    So I set it up on the rig. You can also see the tracker set for motion cancellation over the seat. It works like a charm with madzman plugin for steamVR. I did not feel dizzy.

    IMG_2212.JPG

    The final result so far.

    IMG_2211.JPG

    Attached Files:

    • Like Like x 1
  8. Flymen

    Flymen Flymen Gold Contributor

    Joined:
    May 19, 2018
    Messages:
    335
    Location:
    Montreal, Canada
    Balance:
    2,415Coins
    Ratings:
    +191 / 2 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Hi , I am to set up my keyboard at the same place because the screen of computer will be this side and I ‘m coming the other side of the rig , panic button will be on the right side .
    Q- the tracker motion cancellation must be over the head ?
  9. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    @Flymen The tracker must be seen by the 2 Vive's lighthouse. Because a rig is a living thing that shakes all over the place, the closer it is from the head, the less vibration you get from the rest of the rig. But it can be anywhere, as long as it is on the moving rig and that it tracks properly.
    • Like Like x 1
  10. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    To all Simtools gurus, I have many questions to ask.
    First, I just want to say that I checked the Simtools forum and I found many tutorials, but not direct answer to my question. Also, I checked the manual, that gave me some clues, but no definitive answer.

    Axis / DOF:

    I know it is different from the traditional way to do it since I'm using Hexapod Interface, but I would like to know a few things. According to @pmvcda , the first force must be Sway. Okay, then we assign the other forces to the other axis and they are bind to it, right? Now what about the DOF2? Does the force applied to the DOF2 is applied only when the first DOF1 is applied? Like in the example below, does the Extra1 is applied at 80% only when the Sway is applied at 100%?

    simtools.jpg

    Let's go round:
    I would like to know if it's possible to have the Yaw be applied and turn around, and I'm not even talking about the -180 to 180 swap. I mean, being at 0 degree and turn 20 degrees right. Having the rig turn the corresponding amount for 20 degrees and slowly going back to the center, ready to do the same from 20 degrees to 40 degrees. I understood that it was the washout that was doing that. I never was able to reproduce that behavior with my rig. Again, using Hexapod may provide different results than a traditional forces calibration.
    Now, the -180 to 180 swap. Is it possible to switch from one to the other without a violent kick? I'm thinking flight simulation that I didn't even try to set yet.

    Washout:

    Can someone explain to me what Washout in Filter is suppose to do? I thought it was bringing back the rig to center position after every turn. It doesn't for me. If my Yaw is at 180 degrees, my rig will turn 100% that force and stay there. It won't slowly come back to zero. No matter the values I try.

    Maybe I need to set the forces like we used to do to see if I can do those thing that way.
    • Like Like x 1
  11. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,868
    Location:
    Portugal
    Balance:
    14,203Coins
    Ratings:
    +2,181 / 16 / -0
    My Motion Simulator:
    6DOF
    The FlyPT Interface needs to receive the pose components:
    Sway
    Surge
    Heave
    ...

    The way I do it, is to receive it through the axis.
    So to use it with the FlyPT interface, I made my own convention, where the order should be:
    Sway is sent through Axis1a
    Surge is sent through Axis2a
    Heave in Axis3a
    Yaw in Axis4a
    Roll in Axis5a
    and pitch in Axsis6a.

    So, anything you send through Axis2a, for the FlyPT Interface is just surge.
    But you can play with that.
    Instead of just sending sway, you can send some of the other DOF.
    For example, when braking:
    I want surge to make the seat go back and simulate a braking force. You fell your back going away from the seat.
    If I add a bit of pitch (the car diving while braking) in surge, putting it in DOF2, I'm increasing the surge result. So if I'm going downhill, I can get more surge effect braking compared to when I'm going uphill.
    You can mix it however you want. But! If the plugin is "good" (gets good data from the game in the correct way and game physics are good), it shouldn't be necessary to make this.
    The output from the game should handle all this by itself.

    The %, is the amount of the force that you want to add to the resulting axis.
    For example in the above case, if I have:

    Surge=20 with 100%
    Pitch=10 with 20%
    The result is 1.0*20 + 0.2*10 = 22
    So Axis2a/surge for the FlyPT interface gets a value of 22%

    Now imagine that the output from simtools allows a maximum value of 20. Then the output is only 20.
    That's why, without the FlyPT Interface, when you mix DOF, you should not go over 100% in the sum of all DOF for that axis.
    Well, you can, because you wont get all the DOF at maximum at the same time, but 100% maximum is the safe value.
    It's similar to the clip in ffb wheels.

    Resuming, all DOF are added in the selected percentage for each one, to calculate the result of the axis.

    I'm testing washout in more detail right now with LFS...
    Give me some minutes.
    • Informative Informative x 2
    • Like Like x 1
  12. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,868
    Location:
    Portugal
    Balance:
    14,203Coins
    Ratings:
    +2,181 / 16 / -0
    My Motion Simulator:
    6DOF
    OK, after some tests... You are right, the behaviour is strange or I'm also loosing something here.

    What I read:
    Gain is how much of the new value received is used to affect the result
    Return is how fast you go back to zero

    I tested using Axis4a with Yaw only at 100% in LFS.

    With gain=100 and return=0.
    Yaw moves and it doesn't return to zero. But it doesn't jump from side to side also, it stays at maximum range.

    With gain=0 and return=100.
    Yaw still moves, and it doesn't return to zero.
    Yaw also jumps from side to side over the limits.
    I though yaw should not move in this case.

    With gain=50 and return=50
    Yaw moves, and doesn't jump from side to side.
    Return works, if you are in stand still and the value is constant.
    As soon as you are moving, return doesn't work.

    What I think it's happening:
    I think the problem is that Simtools receives updates to yaw constantly.
    Return works only if there are no updates to yaw.
    As soon as you have an update, it asks for that value again.
    It seems the return is not enough for the amount updated.

    What can we do?
    I don't know. :(
    You solved it with a filter, but it's not enough, because if you are going in the same direction, let's say 20º in a long straight, the filter is closer and closer to the 20º reaching the value at some time. When you turn again, the problem is there already.
    I might be wrong, but there's something that doesn't work as it should here.

    I have to take a better look and see what I can do.
    Maybe @yobuddy could explain better the it works, because I might be loosing something here.
    • Like Like x 1
  13. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    20,528
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    144,992Coins
    Ratings:
    +10,774 / 52 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    See here for a summary: https://www.xsimulator.net/community/faq/washout-gain-and-return.303/
    • Like Like x 1
  14. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    Thanks for the pointer @noorbeast .

    @pmvcda I'm sad that the washout gives you trouble, but I am so glad not to be the only one loosing my mind over this. I was not crazy (okay, maybe a little) and it's not doing what we expect from it. I'll concentrate on other forces for now, giving you time to investigate. If I can do anything to help you out, just say so.
  15. hannibal

    hannibal Active Member

    Joined:
    Sep 29, 2018
    Messages:
    677
    Balance:
    4,489Coins
    Ratings:
    +297 / 4 / -0
    My Motion Simulator:
    6DOF
    seeing all the 6Dof Builds..

    i have to go 6DoF.
    its like i see so many threads about users building a 3DoF design then end up going 6Dof.

    i guess i will go 6Dof and stop beating around the bush...
  16. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    You have the time, the budget, the drive... Hell! Go for it.

    Still, think about it: 2 years of my life and still going. More than 10 000 CAD and still going. It's not your ordinary figurines collection hobby.
    • Agree Agree x 2
    • Like Like x 1
  17. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    Christmas again!

    IMG_2213.JPG

    Yes, the skill saw is part of it, as it was given to me. My brother in law is moving from house to apartment. He got rid of many tools. Also, if you look at the box at the far left, you can see parts of a future 2dof. But that's another thread.

    IMG_2215.JPG

    Carbon fiber tubes. 25 x 22 x 1000 mm and 22 x 19 x 1000 mm. 10 of the first, 2 of the other. The smaller one will be used to connect the bigger one. The goal? Build a new platform. For those who says: "That's a good idea, I should do the same." Let me tell you that this costed me $520 CAD in carbon, and I want to by more after the Chinese holiday (plates), not to mention more than $200 CAD in glue and accessories. The screws are 6mm for the wheel and pedal fixation. We are not well suited in metric providers around here.

    I totally lost track of the budget of that thing. I see it more like an ongoing experimentation for me. An expensive, frustrating, but so fun, hobby.
    • Like Like x 2
  18. SilentChill

    SilentChill Problem Maker

    Joined:
    Jul 19, 2014
    Messages:
    2,619
    Occupation:
    Railway Maintenance
    Location:
    Morecambe, Lancashire, England
    Balance:
    20,399Coins
    Ratings:
    +3,480 / 34 / -0
    My Motion Simulator:
    DC motor, Arduino, Motion platform, 6DOF
    I looked at fiber Soo many times but I'm going to make my platform out of 40x40x3 box aluminium when I do upgrade
  19. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    943
    Occupation:
    3D teacher
    Location:
    Quebec, Canada
    Balance:
    7,683Coins
    Ratings:
    +884 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    Carbon Fiber is so expensive. My motivation is that picture from SeatTime. It shows that a carbon fiber platform can be simple. He warned me that getting in and out of that thing was a challenge. I have to think about that.

    Carbon Rig with Bracing.jpg

    Aluminum was considered, but my manual skill ruled it out. Wood is fine for tight budget and experimentation.
    • Like Like x 1
  20. SilentChill

    SilentChill Problem Maker

    Joined:
    Jul 19, 2014
    Messages:
    2,619
    Occupation:
    Railway Maintenance
    Location:
    Morecambe, Lancashire, England
    Balance:
    20,399Coins
    Ratings:
    +3,480 / 34 / -0
    My Motion Simulator:
    DC motor, Arduino, Motion platform, 6DOF
    I was thinking to cut it all to size and have a local fabricator weld it all up for me. I have no idea of the cost so I may just buy a TIG welder instead and do it myself lol :D