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

The RC-Rider Project (Let's 'Ride' Radio Controlled Models!)

Discussion in 'DIY Motion Simulator Projects' started by yobuddy, Jan 24, 2018.

  1. Nix Park

    Nix Park New Member

    Joined:
    Mar 14, 2022
    Messages:
    7
    Occupation:
    SW Engineer
    Location:
    Republic of Korea
    Balance:
    - 53Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF, Motion platform
    I am studying this post with interest.
    Thank you for putting a lot of information in the post.

    I'm going to run a test using wifi rather than a radio module.

    If possible, can you share the source code of 'simtools game plugin' and 'rcrider app' you used?
    • Like Like x 1
  2. cfischer

    cfischer Active Member Gold Contributor

    Joined:
    Sep 7, 2015
    Messages:
    390
    Location:
    Colorado
    Balance:
    2,789Coins
    Ratings:
    +269 / 1 / -0
    Wifi is likely going to add a lot of latency.
  3. Peacemaker105

    Peacemaker105 Active Member Gold Contributor

    Joined:
    Jul 18, 2017
    Messages:
    197
    Location:
    Perth, Aus
    Balance:
    2,019Coins
    Ratings:
    +359 / 2 / -0
    My Motion Simulator:
    6DOF
    Hey!! wow this is what i have wanted to do for ages!!

    I swear i searched a million times but i was obviously looking for the wrong keywords.
    This is awesome!! I have been looking into it lately and if you havcent heard of ExpressLRS well its a fairly new to the game transmission system that we are all using these days. It also has a firmware called Airport which sends telemetry data via mavlink or MSP to your computer using a secondary transmitter and reciever. with recievers being about 5 grams now it would be better suited to a mini whoop and do without the arduino and gyro and telemetry wifi module. Plus every flight controller on the market will be compatible with it as they all use the same messaging system
    see:
    https://www.expresslrs.org/software/airport/

    The flight controller (betaglight/inav) already puts out telemetry using MSP messages like MSP_RAW_IMU (9dof) and MSP_ATTITUDE. Wonder if there is a way to pull this data using a program like RCRider..

    https://github.com/betaflight/betaflight/blob/master/src/main/msp/msp_protocol.h

    Any thoughts? It's obviously way out of my expertise haha.
  4. T R Para

    T R Para i make stuff up

    Joined:
    Oct 18, 2018
    Messages:
    385
    Occupation:
    Retired
    Location:
    Cincinnati, Oh
    Balance:
    2,444Coins
    Ratings:
    +357 / 3 / -0
    My Motion Simulator:
    AC motor, 6DOF
    Yeah I worked on this on and off over the years. What I found worked best for me in the aircraft was the head tracker from RCG and an immersion rc EZ UHF junior transmitter module and on the ground the receiver. I built a simple 3 dof miniature platform using 9 gram servos . The ezuhf is on 434mhz and I was using frsky on 2.4ghz. The motion was pitch roll and heave.
    I think you can use a plug in called joystick to run your actuators. Things get a little fuzzy here as it has been a few years.
    • Like Like x 1
    • Winner Winner x 1
  5. Peacemaker105

    Peacemaker105 Active Member Gold Contributor

    Joined:
    Jul 18, 2017
    Messages:
    197
    Location:
    Perth, Aus
    Balance:
    2,019Coins
    Ratings:
    +359 / 2 / -0
    My Motion Simulator:
    6DOF
    Oh thats actually a good solution too! I might try with this arduino code and get some interest with the betaflight/inav community and see if they want to help. Adding the extra wieght to planes or 5" quads wouldnt be muchy of a problem but when messing with toothpick style quads every gram counts.
  6. deeph46

    deeph46 Member

    Joined:
    Mar 17, 2023
    Messages:
    117
    Balance:
    641Coins
    Ratings:
    +16 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF
    Does this work with Simtools V3? I tried to installing it but has warning that says, 'Could not load game plugin: RCRider_GamePlugin.dll'
  7. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,859
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    Tasmania, Australia
    Balance:
    152,785Coins
    Ratings:
    +11,108 / 56 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    As far as I am aware companion apps are yet to be ported for v3, as this is the current v3 plugin supported list, but @yobuddy is the best person to confirm: https://simtools.us/plugin_library/
    • Like Like x 1
  8. deeph46

    deeph46 Member

    Joined:
    Mar 17, 2023
    Messages:
    117
    Balance:
    641Coins
    Ratings:
    +16 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF
    Thanks for the info Noorbeast, no problem. Will wait but no rush at all...
    In Simtools V2 works though
  9. deeph46

    deeph46 Member

    Joined:
    Mar 17, 2023
    Messages:
    117
    Balance:
    641Coins
    Ratings:
    +16 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF
    Got a bit problem, when I moved the imu and looking at RCRider.exe. I got good values, but in Simtools v2.6.1 in Tuning windows I'm getting values but without commas or dots. example, in RCRider a value is 15.750 but in Simtools getting 15750 (without a dot). I saw video in this thread, in the Tuning windows has both of them. Matches between RCRider and Simtools.

    Also, values are jumping around by itself even I didn't touch the BNO055 imu. Tried delay(250) got better result but after few second values are all over the place again.

    Can anybody know what is going on?
    Last edited: May 21, 2024
  10. yobuddy

    yobuddy Well-Known Member Staff Member Moderator SimAxe Beta Tester SimTools Developer Gold Contributor

    Joined:
    Feb 9, 2007
    Messages:
    5,451
    Occupation:
    Computer Technician
    Location:
    Portland, Oregon - USA
    Balance:
    51,319Coins
    Ratings:
    +5,200 / 19 / -0
    Hi deeph,
    This sounds like a region problem to me.
    Do you use a coma or a period for the decimal point normally?
    If it's a coma, this should fix it I think.
    system local.jpg

    For a v3 version of RC Rider thou, I'm thinking of using an esp32 (with wifi built in) for a faster back-end.
    I'm hoping with a faster chip (240mhz vs 8mhz) and a faster backbone with wifi, we can get a good 100htz signal without much delay.

    I was also thinking of trying to use a dual core chip, and have one core sending the telemetry in a loop, and the other core allowing me to control the rc car from a pc cockpit (wheel and peddles). But I have not had any time to whip up some code for a test, so I'm not sure it will work yet. (But I have collected all the hardware shown in the pic below)
    RC Rider - SimTools v3.png

    Anyway, this is what I was playing with for a v3 version.
    When you have time, let me know what you think.
    Chat soon,
    yobuddy
    • Informative Informative x 2
  11. deeph46

    deeph46 Member

    Joined:
    Mar 17, 2023
    Messages:
    117
    Balance:
    641Coins
    Ratings:
    +16 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF
    Yup it was the region thing, comma showed up in Tuning Center, Thanks Yobuddy...

    Sounds awesome, I have that boards also. But btw why you didn't use BNO055 ?
  12. yobuddy

    yobuddy Well-Known Member Staff Member Moderator SimAxe Beta Tester SimTools Developer Gold Contributor

    Joined:
    Feb 9, 2007
    Messages:
    5,451
    Occupation:
    Computer Technician
    Location:
    Portland, Oregon - USA
    Balance:
    51,319Coins
    Ratings:
    +5,200 / 19 / -0
    Is the BNO055 better? I honestly have not looked them over in a wile.
  13. deeph46

    deeph46 Member

    Joined:
    Mar 17, 2023
    Messages:
    117
    Balance:
    641Coins
    Ratings:
    +16 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF
    I have tried Adafruit and the clone one, Adafruit has slightly better reading. But I only used BNO055 though, other than that haven't tried it myself.

    So, you will try with MPU6500?

    EDIT:
    or this maybe? https://www.adafruit.com/product/4754
    • Like Like x 1
    Last edited: May 22, 2024
  14. ihed24

    ihed24 FPV Gold Contributor

    Joined:
    Oct 13, 2025
    Messages:
    1
    Occupation:
    FPV
    Location:
    대한민국
    Balance:
    19Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    2DOF
    Hello, I'm trying to work on this project,
    and it's been three weeks and I need help.
    The RC RIDER app is receiving data fine, but the game data coming into the SimTool Tuning Center is delayed too much. It's the same whether I plug it into USB 3.0 or 2.0. I'm not sure what the problem is.

    #include <Wire.h>
    #include <Adafruit_Sensor.h>
    #include <Adafruit_BNO055.h>
    #include <utility/imumaths.h>


    #if defined(ARDUINO_ARCH_SAMD)
    // for Zero, output on USB Serial console, remove line below if using programming port to program the Zero!
    #define Serial Serial1
    #endif

    //#if defined(ARDUINO_ARCH_SAMD)
    //// for Zero, output on USB Serial console, remove line below if using programming port to program the Zero!
    //#define Serial SerialUSB
    //#endif


    // Our output Structure
    typedef struct {
    byte R0;
    byte R1;
    byte R2;
    byte R3;
    byte P0;
    byte P1;
    byte P2;
    byte P3;
    byte H0;
    byte H1;
    byte H2;
    byte H3;
    byte Y0;
    byte Y1;
    byte Y2;
    byte Y3;
    byte W0;
    byte W1;
    byte W2;
    byte W3;
    byte S0;
    byte S1;
    byte S2;
    byte S3;
    } Data;

    Adafruit_BNO055 bno = Adafruit_BNO055(55);
    imu::Vector<3> v;
    Data dataSend;

    void setup(void)
    {
    Serial.begin(115200);

    Serial.println("Orientation Sensor Test"); Serial.println("");

    /* Initialise the sensor */
    if(!bno.begin())
    {
    /* There was a problem detecting the BNO055 ... check your connections */
    Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
    while(1);
    }

    delay(500);

    bno.setExtCrystalUse(true);
    }

    void loop(void)
    {
    /* Get a new sensor event */
    sensors_event_t event;
    bno.getEvent(&event);

    // Possible vector values can be:
    // - VECTOR_ACCELEROMETER - m/s^2
    // - VECTOR_MAGNETOMETER - uT
    // - VECTOR_GYROSCOPE - rad/s
    // - VECTOR_EULER - degrees
    // - VECTOR_LINEARACCEL - m/s^2
    // - VECTOR_GRAVITY - m/s^2

    v = bno.getVector(Adafruit_BNO055::VECTOR_LINEARACCEL);

    float Roll = event.orientation.z;
    float Pitch = event.orientation.y;
    float Yaw = event.orientation.x;
    float Surge = v.x()*10;
    float Sway = v.y()*10;
    float Heave = v.z()*10;

    /* Display the floating point data if you want to see it in the serial monitor*/
    // Serial.print(event.orientation.x, 2);
    // Serial.print(",");
    // Serial.print(event.orientation.y, 2);
    // Serial.print(",");
    // Serial.print(event.orientation.z, 2);
    // Serial.print(",");
    // Serial.print(v.x()); //x acceleration
    // Serial.print(",");
    // Serial.print (vy ()); // and accel
    // Serial.print(",");
    // Serial.println (vz ()); // z accel


    // data broken down into bytes to send to computer via USB or wireless module
    // Load the structure with data
    byte* RollPtr = (byte*) &Roll;
    dataSend.R0 = ( RollPtr[0] );
    dataSend.R1 = ( RollPtr[1] );
    dataSend.R2 = ( RollPtr[2] );
    dataSend.R3 = ( RollPtr[3] );

    byte* PitchPtr = (byte*) &Pitch;
    dataSend.P0 = ( PitchPtr[0] );
    dataSend.P1 = ( PitchPtr[1] );
    dataSend.P2 = ( PitchPtr[2] );
    dataSend.P3 = ( PitchPtr[3] );

    byte* HeavePtr = (byte*) &Heave;
    dataSend.H0 = ( HeavePtr[0] );
    dataSend.H1 = ( HeavePtr[1] );
    dataSend.H2 = ( HeavePtr[2] );
    dataSend.H3 = ( HeavePtr[3] );

    byte* YawPtr = (byte*) &Yaw;
    dataSend.Y0 = ( YawPtr[0] );
    dataSend.Y1 = ( YawPtr[1] );
    dataSend.Y2 = ( YawPtr[2] );
    dataSend.Y3 = ( YawPtr[3] );

    byte* SwayPtr = (byte*) &Sway;
    dataSend.W0 = ( SwayPtr[0] );
    dataSend.W1 = ( SwayPtr[1] );
    dataSend.W2 = ( SwayPtr[2] );
    dataSend.W3 = ( SwayPtr[3] );

    byte* SurgePtr = (byte*) &Surge;
    dataSend.S0 = ( SurgePtr[0] );
    dataSend.S1 = ( SurgePtr[1] );
    dataSend.S2 = ( SurgePtr[2] );
    dataSend.S3 = ( SurgePtr[3] );

    // Send Data
    Serial.write((byte*)&dataSend, sizeof(dataSend));
    //Serial.flush();
    delay(65);
    }

    Attached Files:

  15. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,859
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    Tasmania, Australia
    Balance:
    152,785Coins
    Ratings:
    +11,108 / 56 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK